MHA高可用
- MHA工作原理
从宕机崩溃的master保存二进制日志事件(binlog events)
识别含有最新更新的slave
应用差异的中继日志(relay log)到其他的slave
应用从master保存的二进制日志事件(binlog events)
提升一个slave为新的master
使其他的slave连接新的master进行复制 - MHA命令
masterha_check_ssh 检查MHA的SSH配置状况
masterha_check_repl 检查MySQL复制状况
masterha_manger 启动MHA
masterha_check_status 检测当前MHA运行状态
masterha_master_monitor 检测master是否宕机
masterha_master_switch 故障转移(自动或手动)
masterha_conf_host 添加或删除配置的server信息
secondary_check_script 通过多条网络路由检测master的可用性
master_ip_ailover_script 更新Application使用的masterip
shutdown_script 强制关闭master节点
report_script 发送报告
init_conf_load_script 加载初始配置参数
master_ip_online_change_script:更新master节点ip地址 - 配置文件
global配置,为各application提供默认配置
application配置:为每个主从复制集群 - 实现MHA
为了尽可能的减少主库硬件损坏宕机造成的数据丢失,因此在配置MHA的同时建议配置成MySQL半同步复制
在管理节点上安装两个包
yum安装先装node包,再装manager包
mha4mysql-manager
mha4mysql-node
在被管理节点安装
mha4mysql-node
在管理节点建立配置文件
配置Master# vim /etc/mastermha/app1.cnf [server default] user=mhauser #管理账号(root) password=123456 manager_workdir=/data/mastermha/app1/ # 自动生成 manager_log=/data/mastermha/app1/manager.log remote_workdir=/data/mastermha/app1/ ssh_user=root #ssh-key账号 repl_user=repluser #主从复制账号 repl_password=123 ping_interval=1 [server1] hostname=192.168.8.17 candidate_master=1 [server2] hostname=192.168.8.27 candidate_master=1 [server3] hostname=192.168.8.37
配置slave# vim /etc/my.cnf [mysqld] log-bin server_id=1 skip_name_resolve=1 # mysql mysql>show master logs # 查看二进制日志的起始位置 mysql>grant replication slave on *.* to repluser@'192.168.8.%' identified by '123456'; #创建管理账号 mysql>grant all on *.* to mhauser@'192.168.8.%' identified by '123';#创建复制账号
在所有节点实现相互之间ssh key验证# vim /etc/my.cnf [mysqld] server_id=2 不同节点此值各不相同 log-bin read_only relay_log_purge=0 #不清除中继日志 skip_name_resolve=1 #不解析主机名 # mysql mysql> CHANGE MASTER TO MASTER_HOST='MASTER_IP',MASTER_USER='repluser',MASTER_PASSWORD='123',MASTER_PORT=3306,MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=245;
- Mha验证和启动
masterha_check_ssh --conf=/etc/mastermha/app1.cnf #检查mha的配置文件
masterha_check_repl --conf=/etc/mastermha/app1.cnf
masterha_manager --conf=/etc/mastermha/app1.cnf #启动MHA - 排错日志
/data/mastermha/app1/manager.log