mysql + gtid主从复制

环境说明:

mysql主服务器:server3  172.25.56.3
mysql从服务器:server4 172.25.56.4;server5 172.25.56.5

安装软件包:

分别在注服务器server3中、从服务器server4、server5中
创建目录,将解压得到的软件包放在所创建的目录下:

以主服务器为例:从服务器做相同配置操作:

mysql + gtid主从复制_第1张图片

 

进入mysql-5.7.17目录下,安装所需要的软件包

mysql + gtid主从复制_第2张图片

 

启动服务,并修改数据库的密码

/etc/init.d/mysqld   start

修改数据库密码,首先输入我们上面所得到的root的密码,然后输入新密码

mysql + gtid主从复制_第3张图片

 

mysql + gtid主从复制_第4张图片

一、主从复制

 

主从复制原理图:

mysql + gtid主从复制_第5张图片

复制原理:

Mysql中有一种日志叫做bin日志(二进制日志)。这个日志会记录下所有修改了数据库的SQL语句(insert,update,delete,ALTER TABLE,grant等等)。
主从复制的原理其实就是把主服务器上的BIN日志复制到从服务器上执行一遍,这样从服务器上的数据就和主服务器上的数据即相同
 

配置:

在主服务器server3上:

 

mysql + gtid主从复制_第6张图片

更改配置文件内容,重启服务

进入mysql,创建用户,查看起始点

mysql + gtid主从复制_第7张图片

 

创建一个数据库并写入数据

mysql + gtid主从复制_第8张图片

 

mysql + gtid主从复制_第9张图片

 

mysql + gtid主从复制_第10张图片

 

mysql + gtid主从复制_第11张图片

在服务器server4上

 

 

 

在server4上测试主服务器上所建立的用户是否可以登陆mysql

mysql + gtid主从复制_第12张图片

 

登陆成功

 

进入数据库,设置从数据库,并开启slave

mysql + gtid主从复制_第13张图片

 

 

开启后查看slave状态

mysql + gtid主从复制_第14张图片

 

注:显示Slave_IO_Running: Yes和Slave_SQL_Running: Yes表示slave启动正常

 

在主服务器上再添加数据,查看从服务器是否复制主服务器的数据,测试复制情况

注服务器:

mysql + gtid主从复制_第15张图片

 

从服务器测试:

mysql + gtid主从复制_第16张图片

 

从服务器上,查看得到了主服务器所添加的数据,即主从复制成功!

 

gtid方式的主从复制

在主服务器server3上:

修改配置文件,加入如下内容,重启服务

mysql + gtid主从复制_第17张图片

 

在从服务器server4上,首先修改配置文件,和上面server3的修改相同,然后进入mysql,停止slave

 

mysql + gtid主从复制_第18张图片

 

mysql + gtid主从复制_第19张图片

 

再次开启slave,查看状态

mysql + gtid主从复制_第20张图片

测试:

在主服务器上删除数据,在从服务器上查看,是否更新同步数据

主服务器:

mysql + gtid主从复制_第21张图片

 

从服务器:

mysql + gtid主从复制_第22张图片

 

server4上查看,更新同步数据,即gtid主从复制数据成功!

 

一主两从:

主:server3  两从:server4、server5

server3还是主服务器

原先server4作为server3的从服务器的配置不用改变

配置server5作为server4的从服务器

 

进入server4的数据库,创建用户

mysql + gtid主从复制_第23张图片

 

server5上测试用户是否可以登陆

mysql + gtid主从复制_第24张图片

登陆成功!

 

server4上,修改配置文件并重启服务:

mysql + gtid主从复制_第25张图片

 

server5作为从服务器和上面一主一从中的从服务器的配置相同

mysql + gtid主从复制_第26张图片

 

在复制之前server5,server6,serevr7上面的数据要保持一致,所以将server4上的数据库拷贝出来,复制给server5

mysql + gtid主从复制_第27张图片

 

server5上编辑拷贝到的数据库,将数据导入到server5的数据库中

mysql + gtid主从复制_第28张图片

在server5上,进入数据库,查看信息

mysql + gtid主从复制_第29张图片

 

server5上开启slave

mysql + gtid主从复制_第30张图片

 

到此一主两从配置成功,进行测试:

在主服务器server3数据库中添加数据进行测试:

server3中添加数据:

mysql + gtid主从复制_第31张图片

server4同步数据:

mysql + gtid主从复制_第32张图片

 

server5同步数据:

mysql + gtid主从复制_第33张图片

 

一主两从的复制成功!

 

mysql的并行复制

 

只在slave上进行,这里在server4上配置并行复制。
首先查看线程processlist

mysql + gtid主从复制_第34张图片

 

修改server4的mysql配置文件,添加如下的内容,原先的配置不变,重启服务,实现并行

mysql + gtid主从复制_第35张图片

 

 

进入mysql,再次查看processlist

mysql + gtid主从复制_第36张图片

 

 

DATABASE:默认值,基于库的并行复制方式

LOGICAL_CLOCK:基于组提交的并行复制方式

开启MTS功能后,务必将参数master_info_repostitory设置为TABLE,这样性能可以有50%~80%的提升,因为并行复制开启后对于元master.info这个文件的更新将会大幅提升,资源的竞争也会变大,将master_info_repository设置为TABLE,来减小这部分的开销

 

半同步复制

半同步复制模式必须在主服务器和从服务器同时中开启,否则将会默认为异步复制模式,半同步复制需要安装插件如下;

主服务器server3上需要安装插件semisync_master.so

mysql + gtid主从复制_第37张图片

 

从服务器server4上需要安装插件semisync_slave.so

到此主从服务器之间的的半同步复制就配置完成,进行测试
首先在master上查看以下参数

mysql + gtid主从复制_第38张图片

 

在slave上关闭io_thread

在主数据库中插入数据,会等待10s返回结果

 

这个时候退回到异步复制,slave上还没有接受到数据,查看如下:

mysql + gtid主从复制_第39张图片

 

再次回到master上查看相关状态

mysql + gtid主从复制_第40张图片

 

再次开启slave上的io_thread,查看数据是否同步,发现数据进行了同步

mysql + gtid主从复制_第41张图片

 

到此半同步复制成功!

 

你可能感兴趣的:(mysql + gtid主从复制)