MHA 工作过程:
(1)从崩溃的master保存二进制日志事件
(2)识别含有最新更新的slave
(3)应用差异的中继日志(relay log)到其他的slave
(4)应用从master保存的二进制日志
(5)提升一个slave为新的master
(6)使其他slave连接新的master进行复制
准备集群环境:(192.168.4.51-56 56作为mha 管理主机51-53作高可用54-55作备份)
1.所有主机安装perl依赖包: yum -y install perl-*
2.所有主机安装 mha-node 包(客户包): yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm (自动安装依赖包)
3.在56主机上还要安装mha-manager 包:
tar -xf mha4mysql-manager-0.56.tar.gz
cd mha4mysql-manager-0.56
per Makefile.PL (按要求安依赖包)
make
make install
4.在除56以外主机上授权监控用户:
grant all on *.* to root@'%' identified by '123456' ;
5.所有数据节点 互相配置ssh秘钥认证登陆:ssh-ken-gen (一定要互相测试)
配置集群:
1.在主机和备用主机上开启半同步复制,且设置不自动删除中继日志。
例:在51主机 vim /etc/my.cnf
relay_log_purge=off 不自动删除中继日志
plugin-load = "rpl_semi_sync_master=semisync_master.so;plugin-load = rpl_semi_sync_slave=semisync_slave.so"
rpl_semi_sync_master_enabled=1
rpl_semi_sync_slave_enabled=1
server_id =51
log-bin=master51
binlog-format="mixed"
添加主从同步授权用户: grant replication slave on *.* to repluser@"%" identified by "123456"
在备用节点上设置以51 为主库:
change master to master_host="192.168.4.51",master_user="repluser",master_password="123456",master_log_file="日志名",master_log_pos=主库偏移量;
start slave;
配置管理主机:
vim /etc/masterha/app1.cnf
[server default]
master_ip_failover_script= /usr/local/bin/master_ip_failover
ssh_user=root
ssh_port=22
repl_user=repluser
repl_password=123456
user=root
password=123456
[server1]
hostname=192.168.4.51
port=3306
candidate_master=1
[server2]
hostname=192.168.4.52
port=3306
candidate_master=1
[server3]
hostname=192.168.4.53
port=3306
candidate_master=1
[server4]
hostname=192.168.4.54
port=3306
no_master=1
[server5]
hostname=192.168.4.55
port=3306
no_master=1
根据配置文件的设置,在数据库上创建监控用户
测试集群配置:
1.检测各节点间ssh互信通信配置是否ok
masterha_check_ssh --conf=/etc/masterha/app1.cnf
结果:All SSH connection tests passed successfully.
2.检测各节点间主从复制是否ok
masterha_check_repl --conf=/etc/masterha/app1.cnf
结果:MySQL Replication Health is OK
启动MHA-Manger:
masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover
查看状态:
masterha_check_status --conf=/etc/mha/app1.cnf
停止服务: masterha_stop
测试高可用配置:
修改故障切换脚本:vim /usr/local/bin/master_ip_failover
指定vip