上一篇
场景引入:
凌晨3点,你的电商数据库突然宕机,所有订单数据面临丢失风险 😱,但如果你提前配置了MySQL复制(Replication),只需秒级切换就能恢复服务——这就是复制的魅力!今天我们就手把手教你搭建MySQL复制系统,让你的数据"买一送一"(主从各一份)💾
MySQL复制就像数据的"影分身术" 🏼♂️🏼♂️,主库(Master)的所有数据变更会自动同步到一个或多个从库(Slave),核心流程:
典型用途:
# 主库 my.cnf 关键配置 [2025-08最佳实践] [mysqld] server_id = 1 # 必须唯一,建议用IP末段 log_bin = mysql-bin # 开启binlog binlog_format = ROW # 最安全的格式 sync_binlog = 1 # 每次事务都刷盘
重启MySQL后执行:
CREATE USER 'repl'@'%' IDENTIFIED BY 'S3cret!'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES;
[mysqld] server_id = 2 # 不能与主库重复 relay_log = mysql-relay # 中继日志路径 read_only = ON # 从库只读(防误操作)
在从库执行:
CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='repl', MASTER_PASSWORD='S3cret!', MASTER_LOG_FILE='mysql-bin.000001', # 主库执行SHOW MASTER STATUS获取 MASTER_LOG_POS=154; START SLAVE;
检查状态:
SHOW SLAVE STATUS\G # 看到 Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes 才算成功🎉
-- 查看从库延迟(秒) SHOW SLAVE STATUS\G -- Seconds_Behind_Master > 0 表示有延迟 -- 常见解决方案: -- 主库:增大binlog_group_commit_sync_delay -- 从库:启用并行复制 slave_parallel_workers=4
在主从库安装插件:
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; SET GLOBAL rpl_semi_sync_master_enabled=1;
这样主库必须收到至少一个从库的ACK才会提交事务🔒
# 主从库都添加: gtid_mode = ON enforce_gtid_consistency = ON
优点:自动记录事务全局ID,主从切换无需找binlog位置📍
pt-table-checksum
工具校验 MySQL复制就像给你的数据上了"双保险"🛡️,配置时记住:
下次数据库半夜崩了,你就能喝着咖啡☕淡定切换啦!(当然希望你永远用不上~)
本文由 孙辰 于2025-08-03发表在【云服务器提供商】,文中图片由(孙辰)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/524323.html
发表评论