Skip to content
William Wang edited this page May 28, 2019 · 3 revisions

Welcome to the MySQL-HA-Cluster wiki!

本MySQL HA架构包含三部分:

  1. MySQL主从集群
  2. ProxySQL中间件
  3. MHA高可用切换脚本

MySQL版本采用了5.7, 由于MHA的高可用切换方式有可能造成事务丢失,启用mysql5.7的增强半同步可进一步降低丢数的概率。

ProxySQL是一款高性能数据库中间件,支持MySQL,PXC, MariaDB等流行数据库。相关技术文档可参考官方wiki

MHA也是很传统但非常优秀的高可用切换脚本,其官方文档有详细的介绍,这里只对我们的使用配置方式进行介绍。

MHA 项目配置

MHA Manager所有 的项目都部署在同一个文件夹内mhadir, 安装部署完成后,该文件夹中会有一个template文件夹,该文件夹是所有项目的模板。比如新添加一个项目pink,可执行如下操作:

cp -r template mha_pink

这样会创建一个项目文件夹mha_pink, 该文件夹中有如下内容:

-rw-r--r-- 1 mha mysql  554 May 24 21:30 auto_install.sh
-rwxr-xr-x 1 mha mysql  177 May 24 21:30 check_status.sh
-rw-r--r-- 1 mha mysql  655 May 24 21:30 mha_project.cnf
-rw-r--r-- 1 mha mysql    0 May 24 21:30 mha_project.log
-rwxr-xr-x 1 mha mysql 5283 May 24 21:30 proxysql_failover.sh
-rwxr-xr-x 1 mha mysql  421 May 24 21:30 start.sh
-rwxr-xr-x 1 mha mysql  155 May 24 21:30 stop.sh
-rw-r--r-- 1 mha mysql  695 May 24 21:30 switch_online.sh

其中auto_install.sh是自动安装脚本,执行:

bash auto_install.sh pink

可完成该项目的安装。安装完成后,mha_project.cnf会变成mha_pink.cnf,mha_project.log会变成mha_pink.log。安装完成后,你仍需要修改mha_pink.cnf,添加该MHA manager所管理的主机信息。

check_status.sh是检查MHA Manager运行状态的便捷脚本
start.sh 是启动MHA Manager的便捷脚本
stop.sh 是停止MHA Manager的便捷脚本
switch_online.sh 是MHA Manager在线切换的便捷脚本
proxysql_failover.sh 是MHA Manager在完成切换后,通知ProxySQL的脚本。你需要修改里面的相关信息。

  1. 修改master在ProxySQL中所属的hostgroup
     master_hg=0
    
    这个值务必确保正确,因为ProxySQL可以管理多套MySQL主从集群。这个变量配置错误将无法完成切换,而且还可能造成意想不到后果。
  2. 修改ProxySQL的IP地址
    proxysql_hosts=("172.0.1.0" "172.0.1.0")
    
    这是一个shell数组,如果有多个proxysql需要全部写在里面。
  3. 修改连接ProxySQL的账号、密码
    #credentials to login proxysql's admin interface
    
    admin_user=dba
    admin_password=dbacom
    
    脚本需要连接ProxySQL修改相关主机组的信息。因此需要在ProxySQL中配置账号和密码。
    本来ProxySQL内置了read_only监控,我们可以依赖这一监控来识别后端mysql的主从角色变化。但这个特性有个巨大的风险,如果一台slave其read_only没有正确设置为ON, 则会造成该从库发送写操作,这是很严重的。因此我们禁用了这一特性。我们也对这一特性进行了改进,详见pull request 2019.
Clone this wiki locally