MySQL主从复制入门
- 确定主库与从库的关系(尽量保持主从库版本一致)
- 在主库创建备份所需的user
- create user 'repl' @'%' identified by '123456' (创建一个用户,要给予你备库可以访问的地址权限)
- 在主库配置文件配置
-
bin_log = /*/mysql-bin (确定binlog存放的位置)
-
server_id = 1 (每个库都要有唯一的id)
-
gtid_mode = on (关键参数)
-
enforce_gtid_consistency = on (强调gtid一致性)
-
log-slave-updates = on (从库binlog才会记录主库同步的操作日志)
-
- 在从库中配置
-
server-id = 101
-
relay_log = /*/relay_log
-
gtid_mode = on (关键参数)
-
enforce_gtid_consistency = on
-
log-slave-update = on
-
read_only = on [可选]最好选择配置
-
master_info_repository = TABLE[建议]
-
raley_log_info_repository = TABLE[建议]
-
- 从主库复制数据,初始化备库的数据
- mysqldump -uroot -p --single-transaction --master-data=2 --triggers --routines --all-databases >>all.sql (可能存在很大的阻塞)
- 在基于GTID初始化库的数据时,可能会遭遇到相应的错误:
- ERROR 3546 (HY000) at line 24: @@GLOBAL.GTID_PURGED cannot be changed: the added gtid set must not overlap with
- 如果遭遇此次问题,则可以reset slave all; reset master; 解决;
- 启动GTID的复制
- change master to master_host='192.168.3.74',master_user='repl',master_password='123456',MASTER_AUTO_POSITION = 1, get_master_public_key=1;(mysql8中需要加最后一个,是密码的问题;)
- 以上的一些值需要自行设置。
- start slave; (开启复制链路)
- show slave status\G (查看复制链路状态,若有错误根据错误解决)
- 测试主从复制是否成功
- 主库修改相应数据,从库检查数据是否也被同步修改;
至此简单的MySQL基于GTID主从复制就已经操作完成,实战中应有更多高级的设置,同时也应有高可用架构保证数据库的提供优良的服务;
若有什么问题可以一起探讨。