mysql主从配置实战异步复制-半同步复制-GTID复制
主从复制配置实战
-
/etc/mysql/my.cnf 主库
log-bin=/var/lib/mysql/mysql-bin
server-id=123454 -
/etc/mysql/my.cnf 从库
log-bin=/var/lib/mysql/mysql-bin
server-id=111111 -
主库全局上锁
flush tables with read lock; -
查看主库binlog状态
show master status\G -
备份主库
mysqldump -h xxxx -P 33306 -u root --all-databases --master-data > dbdump.sql -p -
将备份文件复制到从库
cp ../mysql8/dbdump.sql . -
释放主库锁
unlock tables; -
进入从库msyql客户端,导入备份文件
source dbdump.sql; -
查看从库状态
show slave status\G -
修改从库对应的主库
change master to master_host="xxxx", master_user="root", master_log_file="mysql-bin.000001", master_log_pos=156; -
开启从库
start slave; -
停止从库、重置从库
stop slave;
reset slave; -
重新配置从库对应的主库,需要输入端口号和密码
change master to master_host="4xxxxxxx", master_port=xxxx, master_user="root", master_password='xxxx', master_log_file="mysql-bin.000001", master_log_pos=156; -
向主库插入一条数据,从库也跟着有了
主库和从库的状态是一致的
show master status;
show slave status;
默认主从采用的异步复制
-
如何使用半同步复制,主要在主和从配置文件中加入三行
plugin-load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl-semi-sync-master-enabled = 1
rpl-semi-sync-slave-enabled = 1 -
查看主从脱库时间(只有半同步复制才有这个时间,异步复制没有的)
show variables like "rpl_semi_sync_master_timeout"; -
查看正在做的线程
show processlist\G
到此主从复制完成了。
GTID复制
-
主库和从库配置中都打开GTID配置
gtid_mode=on
enforce_gtid_consistency=on -
重启主库和从库
sudo docker-compose restart -
停止从库
stop slave; -
使用GTID进行主从复制
change master to master_host="xxxx", master_port=33306, master_user="xxxx", master_password='xxxx', master_auto_position=1; -
开启从库
start slave;
GTID主从复制完成,向主库中插入一条数据试试吧。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)