-
Notifications
You must be signed in to change notification settings - Fork 13
Home
William Wang edited this page May 28, 2019
·
3 revisions
Welcome to the MySQL-HA-Cluster wiki!
本MySQL HA架构包含三部分:
- MySQL主从集群
- ProxySQL中间件
- MHA高可用切换脚本
MySQL版本采用了5.7, 由于MHA的高可用切换方式有可能造成事务丢失,启用mysql5.7的增强半同步可进一步降低丢数的概率。
ProxySQL是一款高性能数据库中间件,支持MySQL,PXC, MariaDB等流行数据库。相关技术文档可参考官方wiki
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的脚本。你需要修改里面的相关信息。
- 修改master在ProxySQL中所属的hostgroup
这个值务必确保正确,因为ProxySQL可以管理多套MySQL主从集群。这个变量配置错误将无法完成切换,而且还可能造成意想不到后果。
master_hg=0
- 修改ProxySQL的IP地址
这是一个shell数组,如果有多个proxysql需要全部写在里面。
proxysql_hosts=("172.0.1.0" "172.0.1.0")
- 修改连接ProxySQL的账号、密码
脚本需要连接ProxySQL修改相关主机组的信息。因此需要在ProxySQL中配置账号和密码。
#credentials to login proxysql's admin interface admin_user=dba admin_password=dbacom
本来ProxySQL内置了read_only监控,我们可以依赖这一监控来识别后端mysql的主从角色变化。但这个特性有个巨大的风险,如果一台slave其read_only没有正确设置为ON, 则会造成该从库发送写操作,这是很严重的。因此我们禁用了这一特性。我们也对这一特性进行了改进,详见pull request 2019.