Mysql主从切换策略

发布于 2023-05-29  287 次阅读


目标:可靠优先和可用性优先

可靠优先策略

策略

一主一从:A主库 B从库

  1. 通过在B库运行SHOW SLAVE STATUS \G;查看Seconds_Behind_Master,不能过大
  2. 设置A库只读,read-only = true
  3. 检测B库,只要Seconds_Behind_Master = 0则代表从库已经追上了主库
  4. B库只读关闭,read-only = false
  5. B库停止复制A库,设置A库复制B库 (具体设置方法可以看:主从配置
  6. 结果:A从 B主

优劣

  • 数据不会丢失
  • 有几秒(Seconds_Behind_Master这个字段决定)两个数据库均不能写入
  • 若一开始为检测Seconds_Behind_Master,不可用时间无法控制

可用性优先策略

策略

一主一从:A主库 B从库

  1. 取消等待数据同步一致的过程
  2. A库只读,B库关闭只读
  3. B库停止复制A库,设置A库复制B库
  4. 结果:A从 B主 (未同步的数据丢失)

优劣

  • 系统没有不可写时间
  • 若切换时还有没重放完的relay log,造成数据不一致错误

切换后业务怎么自动切换

  • 最基础的就是修改框架下面的配置文件
  • 搭建内部DNS(CoreDNS),通过域名链接,实现自动切换
  • 使用VIP漂移(Keepalived),IP不变,也不需要使用域名,自动检测数据库IP,根据”活“和优先级自动切换
  • 使用代理自动探测或者手动修改,自动转发到新库的ip
  • MHA

总结

  • 普通业务执行,尽量使用可靠优先策略
  • 日志、流水等不太需要数据可靠性的业务,可以使用可用优先策略
届ける言葉を今は育ててる
最后更新于 2023-05-29