2019-11-20sad creeper
至少你的MySQL是主备的架构才能去叫高可用。
一、主备延迟
主备切换可能是一个主动运维动作,比如软件升级、主库所在机器按计划下线等,也可能是被动操作,比如主库所在机器掉电。
同步延迟,所谓主备延迟,就是同一个事务,在备库执行完成的时间和主库执行完成的时间之间的差值。你可以在备库上执行 show slave status 命令,它的返回结果里面会显示 seconds_behind_master,用于表示当前备库延迟了多少秒
二、备库压力大
备库上的查询耗费了大量的 CPU 资源,影响了同步速度,造成主备延迟。
通过:1、一主多从。除了备库外,可以多接几个从库,让这些从库来分担读的压力。2、通过 binlog 输出到外部系统,比如 Hadoop 这类系统,让外部系统提供统计类查询的能力。
三、大事务
大事务这种情况很好理解。因为主库上必须等事务执行完成才会写入 binlog,再传给备库。所以,如果一个主库上的语句执行 10 分钟,那这个事务很可能就会导致从库延迟 10 分钟。不要一次性地用 delete 语句删除太多数据。其实,这就是一个典型的大事务场景
四、大表 DDL(创建Create 删除Drop 修改Alter table)
处理方案就是,计划内的 DDL,建议使用 gh-ost 方案
五、可靠性优先策略
MySQL 高可用系统的可用性,是依赖于主备延迟的。延迟的时间越小,在主库故障的时候,服务恢复需要的时间就越短,可用性就越高
阅读 918 评论