20 MySQL 误删恢复
误删数据恢复
1. 误删数据
传统的高可用架构是不能预防误删数据的,因为主库的一个 drop table 命令,会通过 binlog 传给所有从库和级联从库,进而导致整个集群的实例都会执行这个命令。
误删数据恢复
传统的高可用架构是不能预防误删数据的,因为主库的一个 drop table 命令,会通过 binlog 传给所有从库和级联从库,进而导致整个集群的实例都会执行这个命令。
怎么判断一个主库是否出了问题?
在一主一备的双 M 架构里,主备切换只需要把客户端流量切到备库;而在一主多从架构里,主备切换除了要把客户端流量切到备库外,还需要把从库接到新主库上。
读写分离,以及怎么处理主备延迟导致的读写分离问题。
读写分离的主要目标就是分摊主库的压力。一般有两种架构:
两种架构的对比:
MySQL 主备切换策略,一主多从
如图 1 所示就是基本的主备切换流程

正常情况下,只要主库执行更新生成的所有 binlog,都可以传到备库并被正确地执行,备库就能达到跟主库一致的状态,这就是最终一致性。但是,MySQL 要提供高可用能力,只有最终一致性是不够的。由于主备延迟的存在,所以在主备切换的时候,就相应的有不同的策略。
MySQL 主备延迟与并行复制
与数据同步有关的时间点主要包括以下三个:
所谓主备延迟,就是同一个事务,在备库执行完成的时间和主库执行完成的时间之间的差值,也就是 T3-T1。在网络正常的时候,日志从主库传给备库所需的时间是很短的,即 T2-T1 的值是非常小的。也就是说,网络正常情况下,主备延迟的主要来源是备库接收完 binlog 和执行完这个事务之间的时间差。所以说,主备延迟最直接的表现是,备库消费中转日志(relay log)的速度,比主库生产 binlog 的速度要慢。
接下来内容与 MySQL 主从复制相关的内容,包括:
如图 1 所示就是基本的主备切换流程