MySQL主从复制-基于GTID复制的优缺点
一、 概念及原理
什么事GTID 从MySQL5.6开始支持的复制方式
GTID即全局事务ID,其保证为每个在主上提交的事务在复制集群中可以生成一个唯一的ID
GTID = source_id:transaction_id其中source_id是执行主库server uuid的值
二、配置
CREATE USER 'wx'@'192.168.163.103' IDENTIFIED BY 'root';
GRANT REPLICATION SLAVE ON *.* TO 'wx'@'192.168.163.103';
配置主数据库服务器
server_id=102
log_bin=mysql-bin
#开启gtid
gtid_mode=on
#启用后无法创建表
enforce_gtid_consistency=1
#用于从服务中主服务器发送修改日志
log_slave_updates=on
master_info_repository=TABLE#建议
relay_log_info_repository=TABLE#建议
配置 从数据库服务器
server_id=103
relay_log=relay_log
gtid_mode=on
enforce_gtid_consistency=1
log_slave_updates=on
#可选 安全配置可以阻止任何没有sql语句权限账号对数据进行修改
read_only=on#建议
master_info_repository=TABLE#建议
relay_log_info_repository=TABLE#建议
初始化从服务器数据
mysqldump --master-data=2-single-transaction
# 示例从主数据导出sql
mysqldump --all-databases --single-transaction --routines --events --triggers --master-data -uroot -p> all.sql
# scp all.sql root@192.168.163.103:/root 从库导入
mysql -uroot -p < all.sql;
启动基于GTID的复制
CHANGE MASTER TO
MASTER_HOST='192.168.163.102',
MASTER_USER='wx',
MASTER_PASSWORD='root',
MASTER_AUTO_POSITION=1;
#重置之前的slave
stop slave;
reset slave;
start slave;
优点:
- 可以很方便的进行故障转移
- 从库不会丢失主库上的任何修改
缺点:
- 故障处理比较复杂
- 对执行的sql有一定的限制
如何选择复制模式要考虑的问题
-
使用的MySQL版本
-
复制架构及主从切换的方式
-
所使用的高可用管理组件
-
对应用的支撑程度
推荐gtid方式