在日常开发中,有时出现mysql主从延迟较高的情况,现提供排查思路及解决方案,具体如下:

1.检查从库数量,大部分公司采用一主多从的配置方案,但当从库数量过多时,可导致主从延迟过高,建议从库数量在2-3个左右为宜,最多不要超过5个。

2.检查从库机器配置,硬件是否达到基本要求。

3.检查是否存在慢SQL,优化SQL查询,在SQL优化层面,可根据执行计划进行SQL优化,检查索引命中情况。

4.检查从库配置,将从库的sync_binlog设置为0或者关闭binlog,innodb_ flushlog, innodb flush_log_at trx_commit 设置为0从而提升从库复制效率。

5.每个表都要显式指定主键,避免在row模式下每次修改都要全部扫描。

6.减少mysql端处理业务,将IO相关活动移动只文件服务器,将多次读写请求合并。

7.引入缓存中间件,应用请求写库的同时向redis记录操作请求的key,同时设置key的失效时间为主从延时时间,或稍大于主从延时时间,应用读请求读库之前先判断缓存中的key,如果存在,请求读主库,否则,请求读从库。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐