Mysql的主从复制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql的主从复制相关的知识,希望对你有一定的参考价值。

mysql的主从复制

 

  Mysql的主从复制,我们一般用来保证数据间的同步关系,比如有分公司,我们就需要把数据同步给千里之外的分公司,这样就很方便快捷。这个实验我们还实现了ssl安全连接,这样在同步的过程起到了安全保护数据的作用

 

我们这个实验用的mysql版本是5.7,相比较之前的版本会有一些不同

  Mysql5.7 支持原生systemd

  Mysql5.7 CPU、固的优化 更InnoDB引擎 更为健壮的制功能

 

安装mysql

我所用的centos7.2x86_64,这个版本自带mariadb-libs,所以要把它卸载:

Rpm  -aq  | grep mariadb

安装依赖包

安装cmake

[email protected]  ~】#  tar zxf cmake-3.5.2.tar.gz

[email protected]  ~】#  cd  cmake-3.5.2/

[email protected]  cmake-3.5.2】#  ./bootstrap

使用 gmake && gmakeinstall 编译

[email protected]  cmake-3.5.2】# gmake && gmake install

安装ncurses

[email protected]  ~】# tar zxf ncurses-5.9.tar.gz

[email protected]  ~】# cd ncurses-5.9/

[email protected]  ncurses-5.9】# ./configure && make && make install

 

安装bison

[email protected]  ~】# tar zxf bison-3.0.4.tar.gz

[email protected]  ~】# cd bison-3.0.4/

[email protected]  bison-3.0.4】# ./configure && make && make install

 

安装boost

[email protected]  ~】# tar zxf boost_1_59_0.tar.gz

[email protected]  ~】#cd boost_1_59_0/

[email protected]  boost_1_59_0】# cd

[email protected]  ~】#mv boost_1_59_0  /usr/local/boost

 

创建用户并添加到组

[email protected]  ~】# groupadd -r mysql && useradd -r -g mysql -s /bin/false -M mysql

 

创建mysql安装目录和数据库目录

mkdir/usr/local/mysql                 ---目录

mkdir/usr/local/mysql/data            ---库目录

 

安装mysql

技术分享技术分享





我们可以使用make && make install 进行编译安装,不过这条命令是只用单线程,安装过程过于缓慢,用下面这条命令可以CPU核数指定线程数,大大提高了安装的速度

make -j  $(grep processor/proc/cpuinfo | wc -l)

-j:CPU核数指定线程数

  在安装所需模块的时候难免输入错误,当我们想重新运行cmake配置,CMakeCache.txt文件: #makeclean

   #rm -f CMakeCache.txt

 

 

优化Mysql路径

技术分享

始化MySQL权表

#cd     /usr/local/mysql

# chown     -R     mysql:mysql     .         ---,属组,注mysql .

注意:5.7.6后版数据使方式

#/usr/local/mysql/bin/mysqld       --initialize-insecure      --user=mysql     --basedir=/usr/local/mysql

--datadir=/usr/local/mysql/data

技术分享

技术分享

生成一条mysql的初始密码(注意保存),后面要用到!

 

文件

#cd     /usr/local/mysql/support-files        ---进入MySQL安装

#cp     my-default.cnf     /etc/my.cnf      ---的配

修改下图

#vi     /etc/my.cnf

 

技术分享

 

配置mysql自动

技术分享

我们开启mysql服务是会报错,原因是mysqld.service把默认的pid到了/var/run/mysqld/并没有事立该 目录目录mysql用户;

解决方法有两个:

一是创建mysqld.service文件里指定的目录/var/run/mysqld并给属主权限:chown -R mysql:mysql/var/run/mysqld

 

二是修改/usr/lib/system/system/mysqld.service文件里的指定路径,写入一个已存在的路径

 


技术分享

技术分享

systemctdaemon-reload重新加载

技术分享再次mysql服务

技术分享

连接数据库 ----密码是刚开的初始密码

技术分享

修改库管root的密码

技术分享 



基于ssl连接的主复制

1在主mysql创建SSL/RSA文件

#cd  /usr/local/mysql/bin   ---目录

#mysql_ssl_rsa_setup  --user=mysql   --basedir=/usr/local/mysql

--datadir=/usr/local/mysql/data   ---新的SSL文件


重启mysqld服务之前,我们要给server-key.pem权限

chmod +r /usr/local/mysql/data/server-key.pem

然后再重启服务 #systemctl restart mysqld

重启mysql时错误日错了

登录mysql执行mysql>showvariableslike%ssl%‘;

技术分享

从上以看mysql持了ssl连接

技术分享在主mysql完成,再REQUIRESSL

进入mysql

Mysql  -u root -p 123.abc

Mysql>grant replication slave on *.* to ‘rep’@’192.168.1.%’identified  by require ssl;

 

技术分享在主mysql进制日志并重mysql服务

技术分享

添加

Log-bin=mysql-bin

重启mysql

Systemctlrestart mysqld

进入mysql

Mysql-u root -p ‘123.abc’

 

查看master状态

Showmaster status;

技术分享注:显示fileposition配置从服用到防火墙允3306/tcp通信

[email protected]  ~】# firewall-cmd  --permanent  --add-port=3306/tcp

[email protected]  ~】#firewall-cmd  -reload


配置从服务器

##可以克隆主mysql,修改ip即可。

mysql服务器 /etc/my.cnf件内容

 

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

port = 3306

server_id = 2

socket = /usr/local/mysql/mysql.sock

log-error = /usr/local/mysql/data/mysqld.err

relay-log = /usr/local/mysql/data/relay-log-bin

relay-log-index = /usr/local//mysqldata/slave-relay-bin.index

 

技术分享注:server_id,不能和mysql的重复

 

 

技术分享把主mysql书给务器

在主mysql中的/usr/local/mysql/daata路径下执行scp;

[email protected] data】# scp ca.pem client-cert.pemclient-key.pem r[email protected]:/usr/local/mysql/data/

注意:192.168.1.150是从mysql的ip,192.168.1.100是主mysql的ip地址。

!!!!!!设置client-key.pemr权限,要不然无法使用私钥

 

 

重启mysql服务

Systemctl  restrt mysqld

进入数据库

Mysql-u root -p‘123.abc’

查看SSL

Show variables ‘%ssl%’;

要求:have-openssl  YES 

    Have-ssl     YES

 

 

那么可以mysqlSSL连接试:

   cd /usr/local/mysql/data

   Mysql --ssl-ca=ca.pem  ssl-cert=client-cert.pem  ssl-key=client-key.pem  -u rep

   -p123456 -h 192.168.1.100

进入数据库后,使用\s查看数据库详细信息,会发现是主mysql的ip,ssl测试连接成功

 

最后replicate,登录从mysql上mysql上执行:

技术分享

技术分享

技术分享

开启从mysql服务器

技术分享

技术分享

注意:因为我们的从mysql是克隆的主mysql,所以我们要修改从mysql的uuid

路径是:/usr/local/mysql/daa/auto.cnf

 

修改完成之后重启mysqld服务

Systemctl restart mysqld

登录从mysql 执行

show slave status\G;

会发现:

Slave_IO_Running:Yes

Slave_SQL_Running:Yes

 

测试:在主mysql上创建库和表,在从mysql上会立刻进行同步!!!!


本文出自 “12977994” 博客,转载请与作者联系!

以上是关于Mysql的主从复制的主要内容,如果未能解决你的问题,请参考以下文章

MySQL中主从复制不同步?

MySQL主从复制和读写分离

MySQL主从复制和读写分离

Linux----------mysql主从复制和基于GTID主从复制

mysql主从复制概述以及配置mysql5.7.10实现简单主从复制

MySQL主从复制