安装 mha 实现 MySQL 主库高可用
MHA是一位日本MySQL大牛用Perl写的一套MySQL故障切换方案,来保证数据库系统的高可用.在宕机的时间内(通常10—30秒内),完成故障切换,部署MHA,可避免主从一致性问题,节约购买新服务器的费用,不影响服务器性能,易安装,不改变现有部署。还支持在线切换,从当前运行master切换到一个新的master上面,只需要很短的时间(0.5-2秒内),此时仅仅阻塞写操作,并不影响读操作,便于主机硬件维护。在有高可用,数据一致性要求的系统上,MHA 提供了有用的功能,几乎无间断的满足维护需要。
测试环境
操作系统: CentOS 6.x 64位
主机名 | IP |
---|---|
master | 192.168.1.100 |
slave1 | 192.168.1.101 |
slave2 | 192.168.1.102 |
MHA manager | 192.168.1.103 |
准备
作为前提条件,应先配置MySQL复制,并设置SSH公钥免密码登录。下面以CentOS为例来说明,最好先安装EPEL,不然YUM可能找不到某些软件包。
1 | # ssh-keygen -t rsa |
添加管理账号
1 | grant all privileges on *.* TO mha@'192.168.1.%' IDENTIFIED BY 'test'; |
下载 MHA 套件:
1 | mha4mysql-node-0.56-0.el6.noarch.rpm |
https://code.google.com/p/mysql-master-ha/wiki/Downloads?tm=2
安装
安装Manager:
1 | yum localinstall -y mha4mysql-node-0.56-0.el6.noarch.rpm |
安装Node:
1 | yum localinstall -y mha4mysql-node-0.56-0.el6.noarch.rpm |
配置
全局配置文件 (/etc/masterha_default.cnf)
1 | [server default] |
Application configuration file should be written separately. The below example is configuraing app1 (host1-4) and app2 (host11-14).
应用配置文件 (/etc/app1.cnf)
1 | [server default] |
更多配置参考官方文档:
检查
检查SSH公钥免密码登录:
masterha_check_ssh --conf=/etc/app1.cnf
检查MySQL复制:
masterha_check_repl --conf=/etc/app1.cnf
实战
首先启动 MHA 进程:
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &
注:视配置情况而定,可能会提示 read_only
,relay_log_purge
等警告信息。
然后检查 MHA 状态:
masterha_check_status --conf=/etc/mha/app1.cnf
注:如果正常,会显示『PING_OK』,否则会显示『NOT_RUNNING』。
关闭监控:
masterha_stop --conf=/etc/mha/app1.cnf
管理端常用命令:
1 | masterha_check_ssh 检查MHA的SSH配置状况 |
在线切换主从:
1 | masterha_master_switch --conf=/etc/mha/app1.cnf --master_state=alive --new_master_host=192.168.10.101 --new_master_port=3306 --orig_master_is_new_slave --running_updates_limit=10000 |
内容基于:
火丁笔记
海底苍鹰(tank)博客