Mysql 复制-基于GTID 测试

来源:互联网 发布:通用企业小程序源码 编辑:程序博客网 时间:2024/05/22 04:53

 GTID :  Global  Transaction  Identified


在研究Mycat的时候顺便重新看了一下Mysql的复制策略,以前都是通过传统方式进行文件定位进行的复制设置,这次发现了GTID模式下的复制方式,而且Mysql5.7以及后续的版本对GTID也是大力推崇,所以详细学习了一下GTID的知识,也通过自己的测试进行了配置


为了方便记忆,记录自己在学习GTID中的点点滴滴


本文记录以下几种常见下的GTID复制环境搭建进行记录


1   Master和Slave都是新的数据库服务器,从没有数据的环境开始,这种情况是最简单的,因为不存在数据导入的问题

只需要设置好对应的my.cnf  , 保证主和从服务器的GTID功能开启,启动Master和Slave后,配置slave的change语句后start slave即可

 

2   Master是运行中的数据库,新加入Slave服务器, 而Master开始就是以GTID方式运行的。此时GTID中保存了所有的事务信息,Slave在启动后会一条条的执行,直到与Master的数据同步,这种方式耗费的时间可能比较长


3  Master是运行中的数据库,新加入Slave服务器, 而Master开始并不是以GTID方式运行的。此时GTID中是没有任何信息的,如果此时要配置新的Slave,则需要通过数据的导入导出先保证两个数据库服务器的数据一致,再通过GTID进行数据复制,由于此时需要更改主服务器的my.cnf配置文件,所以必须有重启服务器的过程。



首先在主服务器不是以gtid=on的模式运行,这时候必须重启主服务器,在Master的my.cnf配置文件中加上如下内容:

server-id = 1
log-bin=mysql-bin
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=true

各个参数的含义不再解释


 此时将主服务器的整个data目录拷贝为从服务器的data目录,使用冷备份的方式,修改从服务器的my.cnf配置文件

 重启主服务器,再启动从服务器,此时可以在从服务器上通过

show global variables like '%gtid%' 看到gtid参数的值,因为这个gtid是跟着data目录的某个文件的,所以会将主服务器的内容带过来,保证两边的一致性

在主服务器上同样执行show global variables like '%gtid%' ,对比主从服务器,可以看到此时完全是一样的


所以只要数据和gtid_executed能够具有一致性就保证了同步的准确性,此时不论什么时候开始从服务器的复制都可以,此时主服务器的每个事务都会记录到gtid中,

所在在从服务器上执行

change master to master_host='host',master_port='3306',master_user='root',master_password='passwd',master_auto_position=1

即可



上面记录的是主服务器配置需要修改,必须重启的操作步骤,在实际操作中,有很多情况下是不允许重启的,在这种情况下肯定主服务器是开启了GTID功能的,所以下面记录如何在这种情况下添加从服务器


首先使用mysqldump --all-databases  --single-transaction  --default-character_set=gbk 去导出数据库备份文件,此时由于主服务器开启了GTID功能,所以set-gtid-purged参数默认是开启的,也就是会在导出的备份文件中带上gtid的信息,保证从服务器不会再次同步已有的事务数据


修改从服务器的my.cnf配置文件, 保证GTID的开启,如果此时不开启GTID,导入会在同步GTID信息的SQL语句处报错,后续再开启GTID也可以,不过需要重新source备份文件


启动从服务器,首先set names gbk 执行source 备份文件导入主服务器的SNAP数据,完成后可以通过show global variables like '%gtid%' 看到对应的GTID值已经同步。此时执行

change master to master_host='host',master_port='3306',master_user='root',master_password='passwd',master_auto_position=1,设置主服务器信息,再执行start slave即可


在以上的操作步骤中,可以完全满足在不影响主服务器的情况下新增从服务器,而且使用的复制方式是GTID


本次实验测试了各个情况,对每种情况都有测试,所以能保证以后正确熟练的使用GTID方式的主从复制!


0 0
原创粉丝点击