Mysql 5.6开始支持gtid模式的主从复制
Gtid即为全局事务标识符,是指mysql对写入二进制日志的每个事务所作的标记。由server_uuid和事务id组成。
Gtid的作用是什么?可以简化搭建主从实例。我们以往在扩展从库时,均需要在从库上指定开始复制的二进制日志文件名、位置,如果指定错误,可能还会引起数据一致性的问题。
使用gtid模式之后,只需要在从库上指定主库的基本连接信息(登录信息、ip,端口等),将自动查寻复制起始点。这将大大简化扩展从库实例。
gtid是由server_uuid和事务id组成。Server_uuid是一个128位的数字,形如b45c01f0-6787-11e3-a5f6-0800271b7f69
它是由服务器首次启动时自动随机生成,并写入到数据目录的auto.cnf目录中。服务器一旦正式投入运行,就绝不要修改server_uuid或修改删除auto.cnf文件!否则会引起后续的主从复制故障!
从这个原理来看,使用gtid并不会影响主从复制性能。
混合gtid模式与非gtid,还能否正常使用?完全可以,但不建议这样做。保持单一与统一,可减少不必要的麻烦。
如果在使用过程中,有疑问可致邮 [email protected], 共同探讨
如何启用gtid复制?
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