MySQL 高可用
Master HA 或多主模型
- MMM:Multi Master MySQL,基于主从复制实现
- MHA:Master High Availability,对主节点进行监控,可实现自动故障转移至其它从节点;通过提升某一从节点为新的主节点,基于主从复制实现,还需要客户端配合实现,目前 MHA 主要支持一主多从的架构,药搭建 MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当 master,一台充当备用 master,另外一台充当从库,出于机器成本的考虑,淘宝进行了改造,目前淘宝TMHA已经支持一主一从
官网:https://code.google.com/archive/p/mysql-master-ha/ - Galera Cluster:wresp
通过wresp协议在全局实现复制;任何一节点都可读写,不需要主从复制,实现多主可读可写
MHA 集群架构


MAH 工作原理

- 从宕机崩溃的 mater 保存二进制日志事件(binlog events)
- 识别含有最新更新的 slave
- 应用差异的中继日志(relay log)到其他的 slave
- 应用从 master 保存的二进制日志事件(binlog events)
- 提升一个 slave 为新的 master
- 使其他的 slave 连接新的 master 进行复制
MHA
MHA 软件由两部分组成,Manager 工具包和 Node 工具包
Manager 工具包主要包括以下几个工具:
-
masterha_check_ssh
:检查 MHA 的 SSH 配置状况 -
masterha_check_repl
:检查 MySQL 复制状况 -
masterha_manager
:启动 MHA -
masterha_check_status
:检查当前 MHA 运行状态 -
masterha_master_monitor
:检测 master 是否宕机 -
masterha_master_switch
:故障转移(自动或手动) -
masterha_conf_host
:添加或删除配置的 server 信息
Node 工具包:这些工具通常由 MHA Manager 的脚本触发,无需人为操作,主要包括以下几个工具:
-
save_binary_logs
:保存和复制 master 的二进制日志 -
apply_diff_relay_logs
:识别差异的中继日志事件并将其差异的事件应用于其它的 slave -
filter_mysqlbinlog
:去除不必要的 ROLLBACK 事件(MHA已不再使用此工具) -
purge_relay_logs
:清除中继日志(不会阻塞SQL线程)
注意:为了尽可能的减少主库硬件损坏宕机造成的数据丢失,因此在配置 MHA 的同时建议配置成 MySQL 5.5 的半同步复制
MMA
自定义扩展:
-
secondary_check_script
:通过多条网络路由检测 master 的可用性 -
master_ip_ailover_script
:更新 Application 使用的 masterip -
shutdown_script
:强制关闭 master 节点 -
report_script
:发送报告 -
init_conf_load_script
:加载初始配置参数 -
master_ip_online_change_script
:更新 master 节点 ip 地址
配置文件:
- global 配置:为各 application 提供默认配置
- application 配置:为每个主从复制集群
网友评论