基于GTID复制的优缺点
MYSQL5.6 的新的复制方式
基于日志的复制 :
从二进制日志的偏移量进行增量同步,如果指定偏移量错误,可能导致主从复制不一致
什么是GTID:
GTID即全局事务ID ,其保证为每一个在主上提交的事务在复制集群中可以生成一个唯一的ID
GTID=source_id:transaction_id
在主DB服务器上建立复制账号
CREATE user repl@'192.168.%.%' IDENTIFIED by '123456';
权限:
grant replication slave ON *.* to repl@'192.168.%.%';
配置主数据库服务器
bin_log = /usr/local/mysql/log/mysql-bin
server_id = 100
必须: gtid_mode = on
enforce-gtid-consiste
注意:
1.create table ... select
2.在事务中使用create termporary table 建立临时表,使用关联更新事务表和非事务表
log-slave-updates = on
mysql5.7之后不用开启
配置从数据库服务器
server_id = 102
relay_log = /usr/local/mysql/log/relay_log
gtid_mode = on
enforce-gtid-consistency
log-slave-updates = on
read_only = on [建议]
master_info_repository = TABLE [建议]
relay_log_info_repository = TABLE [建议]
初始化从服务器数据
会加锁阻塞
mysqldump --master-data=2 -single-transaction
xtrabackup --slave-info
启动基于GTID的复制
CHANGE MASTER TO MASTER_HOST= 'master_host_ip',
MASTER_USER = 'repl',
MASTER_PASSWORD = '123456'
MASTER_AUTO_POSITION = 1
复制优点:
可以很方便的进行故障转移
从库不会丢失主库上的任何修改
缺点:
故障处理比较复杂
对执行的SQL有一定的限制
如何选择复制的模式?
所使用的MySQL版本 (5.6以后的)
复制架构和主从切换的方式
所使用的高可用管理组件
应用是否使用这个复制模式