前面我们用了比较老的基于日志点的复制,在故障转移时,获取主库的日志信息是比较困难的.所以在mysql5.6时,推出了新的GTID模式,用来处理mysql的主从复制.
什么是GTID
GTID即全局事务ID,其保证为每一个在主上提交的事务在复制集群中可以生成一个唯一的ID,在5.6版本中使用server_uuid和transaction_id两个共同组成一个GTID,GTID=server_uuid:transaction_id,下面我们就来介绍一下如何使用GTID模式来设置主从的过程.
建立帐号
首先,我们还是需要一个mysql用户用来单独的处理主从复制.
1 | create user 'replay'@'IP段' identified by 'chenx123' |
主库配置
1 | log_bin = mysql-bin |
如果使用了GTID模式,就会导致部分SQ语句无法使用,例如
1 | creae table ... select |
以上就配置好了
从库配置
配置好了主库,在从库中进行如下的配置
1 | log_bin=mysql-bin |
其中,master_info_repository和relay_log_info_repository的值如果为table的话,会将master.info和relay.info直接存在系统表中.在故障恢复时,就非常简单了.
初始化服务器数据
当我们配置都配置好了,就可以初始化我们的数据了.这个我不多说,详细请参考我的另一片文章.基于mysql日志点的主从配置.
启动基于GTID的复制
初始化数据过后,就可以创建我们的复制链路了.
1 | change master to master_host = '主库地址', |
然后启动我们的链路.
1 | start slave; |
优缺点
在GTID模式下,我们可以很方便的进行故障转移,从库不会丢失主库上的任何修改.但是对故障的处理就比较复杂了.同时对sql也有了一定的限制性.