上一篇
记得去年双十一大促前夜,我们的电商系统突然遭遇了数据库性能瓶颈,当时主库CPU飙到90%以上,查询响应时间从毫秒级直接退化到秒级,客服电话瞬间被打爆,那一刻我深刻体会到:单点数据库就像独木桥,流量一大就堵车,痛定思痛后,我们决定实施MySQL主从复制方案,让数据学会"分身术"。
很多人以为主从复制就是简单的数据拷贝,其实远不止如此,在InnoDB引擎下,主从复制更像是一场精心编排的"影子跟随"游戏。
核心原理:主库(Master)将所有数据变更记录到二进制日志(binlog),从库(Slave)通过I/O线程获取这些日志,再由SQL线程重放执行,这种"写时分离,读时合并"的架构,让我们的系统终于能喘口气了。
# my.cnf 主库关键配置 [mysqld] server-id = 1 log_bin = mysql-bin binlog_format = ROW binlog_row_image = FULL sync_binlog = 1 innodb_flush_log_at_trx_commit = 1
这里有几个值得注意的点:
binlog_format=ROW
:相比STATEMENT模式,能避免函数调用导致的复制不一致sync_binlog=1
:每次事务提交都刷盘,牺牲些许性能换取数据安全innodb_flush_log_at_trx_commit=1
配合使用,形成双保险# my.cnf 从库关键配置 [mysqld] server-id = 2 read_only = ON log_slave_updates = OFF slave_parallel_workers = 8 slave_parallel_type = LOGICAL_CLOCK
特别说明:
slave_parallel_workers
让从库可以并行应用事务,我们的8核服务器设置8个worker刚刚好LOGICAL_CLOCK
并行模式比传统的DATABASE模式更高效,特别适合InnoDB有一次商品批量调价操作产生了500MB的binlog,从库直接卡住3小时,解决方案:
slave_pending_jobs_size_max = 1G
(默认128M)Seconds_Behind_Master
指标设置告警开发同学在从库误操作导致自增ID混乱,主从数据严重不一致,现在我们这样防范:
-- 主库设置自增偏移 SET @@auto_increment_increment=2; SET @@auto_increment_offset=1; -- 从库设置不同偏移 SET @@auto_increment_increment=2; SET @@auto_increment_offset=2;
某次机房网络抖动后,从库GTID位置错乱,现在我们采用增强版恢复流程:
-- 1. 确认主库当前状态 SHOW MASTER STATUS; -- 2. 从库重新配置 STOP SLAVE; CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='repl_user', MASTER_PASSWORD='密码', MASTER_AUTO_POSITION=1; START SLAVE;
-- 复制延迟监控 SHOW SLAVE STATUS\G -- 重点关注: -- Slave_IO_Running: Yes -- Slave_SQL_Running: Yes -- Seconds_Behind_Master: 0 -- 性能瓶颈诊断 SELECT * FROM performance_schema.replication_applier_status_by_worker;
指标项 | 预警阈值 | 检查频率 |
---|---|---|
复制延迟 | >60秒 | 10秒 |
IO线程状态 | 非Yes | 30秒 |
SQL线程状态 | 非Yes | 30秒 |
网络延迟 | >100ms | 1分钟 |
优化项 | 优化前TPS | 优化后TPS |
---|---|---|
单线程复制 | 1200 | |
8并行worker | 6800 | |
SSD替换HDD | 6800 | 9500 |
调整binlog格式 | 9500 | 9800 |
当我们吃透基础主从复制后,开始尝试更复杂的架构:
CHANGE REPLICATION FILTER REPLICATE_DO_DB = (重要业务库);
CHANGE MASTER TO MASTER_DELAY = 3600;
主从复制解决了我们的读扩展问题,但也带来了新挑战:数据一致性、监控复杂度、故障切换等,现在我们的DBA团队每周都要进行主从切换演练,毕竟系统的高可用不是配置出来的,而是练出来的。
最近在测试MySQL 8.0的Group Replication,等有了新收获再来分享,数据库架构这条路,永远有学不完的新知识,而这正是技术的魅力所在。
本文由 师言文 于2025-08-05发表在【云服务器提供商】,文中图片由(师言文)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/540017.html
发表评论