1.简介
在 mysql 主从复制 基础上 集成。请先查询之前内容。
https://my.oschina.net/u/943316/blog/4335125
2.软件下载
MHA 下载页面:https://github.com/yoshinorim/mha4mysql-manager/wiki/Downloads
EPEL 补充下载:https://centos.pkgs.org/7/centos-extras-x86_64/epel-release-7-6.noarch.rpm.html
3. 免密登录
1.主从服务器相互之间免密登录
2.Mha服务器--->主从服务器 免密登录
#生成秘钥
ssh-keygen
#复制秘钥到其他主机 多台主机依次复制
for i in 192.168.202.{128,129}; do ssh-copy-id $i; done
检测秘钥是否生效
ssh root@192.168.1.20 'ifconfig'
3. 主从服务安装
#安装 node 服务
yum localinstall -y mha4mysql-node-0.56-0.el6.noarch.rpm
4.Hma服务安装
1.按照相关软件
#添加 所需额外 依赖
yum install epel-release
#安装 node 服务
yum localinstall -y mha4mysql-node-0.56-0.el6.noarch.rpm
#安装 manage服务
yum localinstall -y mha4mysql-manager-0.56-0.el6.noarch.rpm
如果出现如下错误
运行 --如果有问题,在 https://centos.pkgs.org/7/centos-extras-x86_64/epel-release-7-6.noarch.rpm.html 自行下载安装
#添加 所需额外 依赖
yum install epel-release
如果出现如下错误
请求下载对应依赖包,地址 https://pkgs.org/download/epel-release 或者 http://rpm.pbone.net/
2.编辑 Mange 配置文件
vi /etc/masterha_default.cnf
[server default]
#授权的mysql管理用戶名
user=root
password=root
#ssh免密钥登录的帐号名
ssh_user=root
#mysql复制帐号,用来在主从机之间同步二进制日志等
repl_user=root
repl_password=root
#ping间隔,用来检测master是否正常
ping_interval= 1
#文件配置
manager_workdir=/mha
manager_log=/mha/manager.log
remote_workdir=/mha
#binlog路径--可忽略
master_binlog_dir=/var/lib/mysql
[server1]
hostname=192.168.202.128
#候选人,master挂掉时候优先让它顶
candidate_master=1
#用防止master故障时,切换时slave有延迟,卡在那里切不过来
check_repl_delay = 0
[server2]
hostname=192.168.202.129
candidate_master=1
check_repl_delay = 0
[server3]
hostname=192.168.202.131
#不能成为master
no_master=1
check_repl_delay = 0
3.检测 ssh 通讯
masterha_check_ssh --conf=/etc/masterha_default.cnf
4.检测 主从 节点
masterha_check_repl --conf=/etc/masterha_default.cnf
错误 一 ,未关闭 防火墙 (未给外部访问 mysql开启防火墙)
错误二 master配置了 忽略数据库,但是 主机备份 未 设置
出现为检测正常
5.启动 MHA
masterha_manager --conf=/etc/masterha_default.cnf --ignore_last_failover &
6.检测 MHA 状态
masterha_check_status --conf=/etc/masterha_default.cnf
5.检验MHA服务
1.关闭 master 数据库
systemctl stop mysqld
2.异常时 Master 切换日志
问题:
删除 /mysqlData/mha/etc/app/app.failover.complete 或者 启动命令添加 --ignore_last_failover &
3.其他手动切换
masterha_master_switch --conf=/etc/masterha_default.cnf --master_state=alive --new_master_host=新master的IP --new_master_port=3306 --orig_master_is_new_slave --running_updates_limit=10000
masterha_master_switch --master_state=dead --conf=/etc/masterha_default.cnf --dead_master_host=旧master --new_master_host=新master
#参数说明
--master_state=dead
强制的参数,参数值为"dead" 或者 "alive" . 如果 设置为 alive 模式,masterha_master_switch 开始在线主库切换操作。
--dead_master_host=(hostname)
强制参数,宕机的主库所在的主机名称。--dead_master_ip 和 --dead_master_port 是可选参数,如果这些参数没有设置,--dead_master_ip 就是 --dead_master_host 解析的IP地址。--dead_master_port 为 3306
--new_master_host=(hostname)
新主机地址,可选参数,这个参数在你明确新的主库的主机,非常有用。(这就意味着你不需要让MHA来决定新的主库)。如果不设置此参数,MHA 将会利用自动failover的规则来选择新的主库。如果设置--new_master_host,MHA选择此主机为新的主库,如果不能成为主库,MHA将会退出
--skip_change_master
如果设置此参数,当发生failover的时候,MAH 在应用完不同的relay log退出,忽略CHANGE MASTER 和 START SLAVE 操作。所以 slaves 不会指向 新的master. 开启此参数,有利于手动的二次检查slave 恢复是否成功
--skip_disable_read_only
设置此参数,MHA 将不会在新的主库上执行 SET GLOBAL read_only =0 操作,有利于手动操作
来源:oschina
链接:https://my.oschina.net/u/943316/blog/4337214