Mysql 5.6开始支持gtid模式的主从复制 mysql
Gtid即为全局事务标识符,是指mysql对写入二进制日志的每一个事务所做的标记。由server_uuid和事务id组成。 sql
Gtid的做用是什么?能够简化搭建主从实例。咱们以往在扩展从库时,均须要在从库上指定开始复制的二进制日志文件名、位置,若是指定错误,可能还会引发数据一致性的问题。 服务器
使用gtid模式以后,只须要在从库上指定主库的基本链接信息(登陆信息、ip,端口等),将自动查寻复制起始点。这将大大简化扩展从库实例。 ide
gtid是由server_uuid和事务id组成。Server_uuid是一个128位的数字,形如b45c01f0-6787-11e3-a5f6-0800271b7f69 性能
它是由服务器首次启动时自动随机生成,并写入到数据目录的auto.cnf目录中。服务器一旦正式投入运行,就毫不要修改server_uuid或修改删除auto.cnf文件!不然会引发后续的主从复制故障! ui
从这个原理来看,使用gtid并不会影响主从复制性能。 spa
混合gtid模式与非gtid,还可否正常使用?彻底能够,但不建议这样作。保持单一与统一,可减小没必要要的麻烦。 日志
若是在使用过程当中,有疑问可致邮 zhangxugg@163.com, 共同探讨 orm
如何启用gtid复制? server
1. 主库上的操做
中止主库实例,并删除主库数据目录中生成的全部二进制相关日志,即binlog, relay-binlog, binglog.index, relay-bin.index, relay-log.info
向主库的启动配置文件/etc/my.cnf中加入如下配置项
server_id = 73906
log_bin=mysql-binlog
sync_binlog = 0
binlog_format=MIXED
expire_logs_days = 7
gtid-mode=on
log-slave-updates
enforce-gtid-consistency
master_info_repository=TABLE
启动主库服务, 并在主库上建立复制账号
grant replication slave, replication client to 'repl'@'%' identified by 'repl';
2. 从库上的配置
中止从库实例,同上删除从库全部相关旧文件,binglog, relay-bin.*, relay-bin.index, relay-log.info
配置从库启动参数文件/etc/my.cnf,加入如下配置
server_id = 73907
log_bin=mysql-binlog
sync_binlog = 0
binlog_format=MIXED
expire_logs_days = 7
gtid-mode=on
log-slave-updates
enforce-gtid-consistency
master_info_repository=TABLE
read_only=1
注意:每一个节点的server_id必须保持惟一性。
启动从库服务,并指定主库链接信息(所设主库ip为192.168.10.1,端口为3306,复制账号密码均为repl)。
mysql> CHANGE MASTER TO MASTER_HOST='192.168.10.1',MASTER_PORT=3306,MASTER_USER='repl',
MASTER_PASSWORD='repl',MASTER_AUTO_POSITION=1;
mysql> start slave;
mysql> show slave status\G