目标:可靠优先和可用性优先
可靠优先策略
策略
一主一从:A主库 B从库
- 通过在B库运行
SHOW SLAVE STATUS \G;
查看Seconds_Behind_Master,不能过大 - 设置A库只读,read-only = true
- 检测B库,只要Seconds_Behind_Master = 0则代表从库已经追上了主库
- B库只读关闭,read-only = false
- B库停止复制A库,设置A库复制B库 (具体设置方法可以看:主从配置)
- 结果:A从 B主
优劣
- 数据不会丢失
- 有几秒(Seconds_Behind_Master这个字段决定)两个数据库均不能写入
- 若一开始为检测Seconds_Behind_Master,不可用时间无法控制
可用性优先策略
策略
一主一从:A主库 B从库
- 取消等待数据同步一致的过程
- A库只读,B库关闭只读
- B库停止复制A库,设置A库复制B库
- 结果:A从 B主 (未同步的数据丢失)
优劣
- 系统没有不可写时间
- 若切换时还有没重放完的relay log,造成数据不一致错误
切换后业务怎么自动切换
- 最基础的就是修改框架下面的配置文件
- 搭建内部DNS(CoreDNS),通过域名链接,实现自动切换
- 使用VIP漂移(Keepalived),IP不变,也不需要使用域名,自动检测数据库IP,根据”活“和优先级自动切换
- 使用代理自动探测或者手动修改,自动转发到新库的ip
- MHA
总结
- 普通业务执行,尽量使用可靠优先策略
- 日志、流水等不太需要数据可靠性的业务,可以使用可用优先策略
Comments NOTHING