MySQL 高可用架构实战

基于 MySQL5.7, Semisynchronous Replication(MySQL 半同步复制), Keepalived, MHA 的 MySQL 高可用方案

MySQL, 用得最多最广泛的关系型数据库。 在生产环境中,难免遇到诸如 需要重启服务器或者 MySQL 服务莫名宕了 等问题。如何保证 MySQL 能够持续提供读写等服务,即 高可用性?

本文主要讲述如何从无到有构建一套简单的 MySQL 高可用方案,少概念原理,多实操。

概念及架构简介

  • semi-synchronous Replication: 传统的 asynchronous 模式在 master 宕机时仍然有数据丢失的风险。MySQL5.5 之后提供了 semi-synchronous 模式,它会在 master 处理完一个事务并且等待至少一个支持 semi-synchronous 的 slave 确认收到该事件并将其写 入relay-log 之后才会返回。相较于前者,数据安全性更高。性能也无需担心,因为 facebook 也用了。
  • Keepalived: 基于 VRRP 实现的路由管理工具,在 负载均衡 和 高可用 场景中应用广泛。这里主要用来创建 VIP(虚拟路由)
  • MHA: 即 mysql-master-ha, 最主要的一个功能是监控 MySQL 主从集群( 确切地说主要监控 Master), 在 Master 出现故障后自动选择一个 Slave 提升为 Master,并且可以保证新 Master 和 Slave 的一致性。

来看一下 架构图

应用通过 VIP(虚拟路由,由 Keepalived 创建)访问 MySQL 集群。一主(图 M )二从(图 S1 和 S2),S2 作备用主库。一旦原 Master 节点出现故障,MHA 自动将主库切换到 S1,并且 S2 随之连接到新的 Master。MHA 同时通过 master_ip_failover_script 脚本停止原 Master 节点上的 Keepalived,路由自动切换到 新 Master。这时候外部应用实际访问的是 S1 了,不会出现 MySQL 突然无法使用的问题。


机器规划

Host IP VIP Role Software
M 10.20.78.241 10.20.78.11 Master MySQL5.7 Keepalived MHA-Node
S1 10.20.78.243 备用 candidate_master (Slave) MySQL5.7 Keepalived MHA-Node
S2 10.20.78.245 - Slave MySQL5.7 MHA-Node
MHA-Manager 10.20.78.227 - MHA Manager MHA-Node MHA-Manger

M 出现故障后:

Host IP VIP Role
M 10.20.78.241 - stoped
S1 10.20.78.243 10.20.78.11 master
S2 10.20.78.245 - Slave
MHA-Manager 10.20.78.227 - MHA Manager(stoped)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值