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主从复制就已经操作完成,实战中应有更多高级的设置,同时也应有高可用架构保证数据库的提供优良的服务;
若有什么问题可以一起探讨。
作者:Dertraum_Dong
GTID
MySQL学习
Mysql