1 简介
MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。
2 环境
172.17.0.6 |
node1 |
master |
172.17.0.7 |
node2 |
slave1 |
172.17.0.8 |
node3 |
slave2 |
172.17.0.9 |
manager |
mha-manager |
3 测试目标
本次测试基于mha+主从复制,对现有的集群进行增加、删除节点操作。
本文档主要记录增加、删除节点的操作。
4 增加节点
4.1 节点信息
4.1.1 原有节点
172.17.0.6 |
node1 |
master |
172.17.0.7 |
node2 |
slave1 |
172.17.0.8 |
node3 |
slave2 |
172.17.0.9 |
manager |
mha-manager |
4.1.2 新增节点
172.17.0.13 |
node4 |
slave3 |
4.2 主从添加节点
4.2.1 开启日志、打开gtid
修改my.cnf配置
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id=4
log-bin=mysql-bin
gtid_mode=ON
enforce_gtid_consistency=ON
4.2.2 开启半同步复制
1) 安装相关插件
install plugin rpl_semi_sync_master soname 'semisync_master.so';
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
2) 修改配置
方法1:(重启mysql后参数失效)
set global rpl_semi_sync_master_enabled=1;
set global rpl_semi_sync_master_timeout=2000;
set global rpl_semi_sync_slave_enabled=1;
方法2:修改my.cnf文件配置(参数永久有效)
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_master_timeout = 2000
rpl_semi_sync_slave_enabled=1
3) 重启mysql服务,查看修改的参数
show global variables like '%rpl_semi%';
4.2.3 从节点配置
mysql> alter user root@'localhost' identified by 'Aa!123456';
mysql> grant all privileges on *.* to root@'%' identified by 'Aa!123456';
mysql> change master to master_host='172.17.0.6', master_user='root', master_password='Aa!123456',master_auto_position=1;
mysql> start slave;
mysql> show slave statusG;
4.3 mha添加节点
4.3.1 下载、安装mha包
rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm
4.3.2 修改mha配置文件
添加配置
[server4]
hostname=172.17.0.13
port=3306
4.3.3 配置SSH无密码验证
1)新增节点slave3生成秘钥、公钥
ssh-keygen -t rsa
2)其他节点将公钥发送salve3节点
master :ssh-copy-id root@172.17.0.13
salve1 :ssh-copy-id root@172.17.0.13
salve2 :ssh-copy-id root@172.17.0.13
mha-manager :ssh-copy-id root@172.17.0.13
3)在salve3机器再将公钥发送到其他节点
scp /root/.ssh/authorized_keys root@172.17.0.6:/root/.ssh
scp /root/.ssh/authorized_keys root@172.17.0.7:/root/.ssh
scp /root/.ssh/authorized_keys root@172.17.0.8:/root/.ssh
scp /root/.ssh/authorized_keys root@172.17.0.9:/root/.ssh
4)测试
masterha_check_ssh --conf=/etc/mhamanger/app.conf
4.3.4 节点检测
masterha_check_repl --conf=/etc/mhamanger/app.conf
4.4 重启mha服务
4.4.1 停止
masterha_stop --conf=/etc/mhamanger/app.conf
4.4.2 启动
nohup masterha_manager --conf=/etc/mhamanger/app.conf >/etc/mhamanger/mha.log 2>&1 &