25怎么保证高可用
高可用:最终一致,解决主备延迟
延迟来源
- 备库机器性能差
- 备库压力大
在备库执行运行数据分析等,忽视备库压力控制
解决:一主多从(备库适合做备份)、输送到外部系统 比如hadoop,让外部系统提供计算统计查询能力 - 大事务
一次性删除大量数据、大表DDL - 备库并行复制能力
切换策略
- 可靠性优先策略
有延迟 - 可用性优先策略
数据不一致(不推荐使用,binlog还未同步完成)
可靠性优先策略
- 判断备库B现在的seconds_behind_master,如果小于某个值(比如 5 秒)继续下一步,否则持续重试这一步;
- 把主库A改成只读状态,即把readonly设置为 true;
- 判断备库B的 seconds_behind_master的值,直到这个值变成 0 为止;
- 把备库B改成可读写状态,也就是把readonly设置为 false;
- 把业务请求切到备库 B。
可用性优先策略
直接切换,不等待seconds_behind_master
如果延迟太小,故障切换等待的时间就会越短
使用row格式binlog更容易发现不一致问题