【背景】
近期在给一个客户做DEMO,需要把阿里云RDS for mysql数据库备份到其他云上去,考虑到可能会用只读实例作为复制的源端,就会涉及到只读实例和主库之间有延迟的场景。
本文主要参考阿里云的帮助资料(https://help.aliyun.com/knowledge_detail/41767.html),本文做一个学习总结。
1. 只读实例产生延迟的原因
1.1 只读实例规格过小
1.2 主实例的 TPS(Transaction Per Second)过高
1.3 主实例的大事务
1.4 主实例的 DDL 语句
1.5 只读实例 MyISAM 引擎表
1.6 其他
2. 排查方法和建议
当只读实例出现延迟后,
一看只读节点 IOPS 定位是否存在资源瓶颈;
二看只读节点的 binlog 增长量定位是否存在大事务;
三看只读节点的 ComDML 性能指标,对比主节点的 ComDML 定位是否是主库写入压力过高导致;
四看只读节点执行 show slave status \G,判断是否有 Waiting for table metadata lock;同时在主实例控制台 =》SQL明细 中排查下是否有 alter,repair,create等 DDL 操作;
五看只读节点执行 show slave status \G,判断是否有 Waiting for table level lock; 同时通过 show full processlist; 或者 DMS =》 实例信息 =》 实例会话 检查下是否有长时间对 MyISAM 引擎表的查询。