MySQL5.6基于GTID的主从复制配置
全局事务标示符(Global Transactions Identifier)是MySQL 5.6复制的一个新特性。
GTID实际上是由UUID+TID组成的。其中UUID是一个MySQL实例的唯一标识。TID代表了该实例上已经提交的事务数量,并且随着事务提交单调递增。下面是一个GTID的具体形式。
1、在MySQL5.6以前对于主从复制出现问题有时候需要你分析BINLOG找到POS点,然后在CHANG MASTER TO.对于新手来说很容易犯错,造成主从复制错误.在新版本中,不必在需要寻找BINLOG和POS点,你只需要知道MASTER的IP、密码、端口就可以,因为MySQL会从内部GTID机制自动找到同步点.
2、多线程复制,在MySQL5.6之前,复制是单线程队列式的,只能一个一个运行.在新版中支持基于库的多线程复制,但是库里的表不能多线程.
主MySQL配置文件修改:
server-id=185 #和从MySQL不同 log-bin=mysql-bin expire-logs-days=14 #二进制日志周期(按需配置) binlog-format=row #使用row格式 log-slave-updates=true gtid-mode=on #开启GTID模式 slave_parallel_workers=4 #开启基于库的多线程复制默认0不开启 enforce-gtid-consistency=true #强制GTID的一致性 master-info-repository=TABLE #主服信息记录库=表/文件 relay-log-info-repository=TABLE #中继日志信息记录库
relay-log=mysqld-relay-bin #中继日记名称 sync-master-info=1 #同步主库信息 innodb_file_per_table=1 #使用独立表空间
主MySQL创建复制账号:
grant replication slave,replication client on *.* to 'repl'@'10.205.22.186' identified by 'password'; flush privileges;
从MySQL配置文件修改:
server-id=186 #和主MySQL不同 log-bin=mysql-bin expire-logs-days=14 #二进制日志周期(按需配置) binlog-format=row #使用row格式 log-slave-updates=true gtid-mode=on #开启GTID模式 slave_parallel_workers=4 #开启基于库的多线程复制默认0不开启 enforce-gtid-consistency=true #强制GTID的一致性 master-info-repository=TABLE #主服信息记录库=表/文件 relay-log-info-repository=TABLE #中继日志信息记录库
relay-log=mysqld-relay-bin #中继日志名称 sync-master-info=1 #同步主库信息 innodb_file_per_table=1 #使用独立表空间
从MySQL执行:
change master to master_host='10.205.22.185',master_port=3306,master_user='repl',master_password='password',MASTER_AUTO_POSITION=1; start slave;
在主MySQL写入数据,查从MySQL是否同步成功