在日常开发中,有时出现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

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐