一、MHA说明
MHA - Master High Availability,MySQL高可用方面相对成熟的解决方案,是一个用于故障切换和主从提升的软件
要搭建MHA,要求集群至少要有三个节点,即一主二从。MHA分为MHA-Manager(管理节点)和MHA-Node(数据节点)两部分
二、MHA安装
1、服务器状态
mysql版本 | 服务器系统 | 服务器IP地址 | 服务器主从 | MHA角色 |
---|---|---|---|---|
5.6.47 | CentOS7.6 | 10.50.6.16 | master | Master |
5.6.47 | CentOS7.6 | 10.50.6.5 | slave-2 | Slave |
5.6.47 | CentOS7.6 | 10.50.6.6 | slave-1 | MHA manager |
2、设置ssh可以使三台服务器之间进行免密登录
ssh-keygen -t rsa #一直回车
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
cd ..
scp -r .ssh -l root 10.50.6.16:/root/
scp -r .ssh -l root 10.50.6.6:/root/
# 相互测试ssh登录即可
3、主从配置
由于后面slave节点会提升为master节点,所以主从配置需要做一下改动
# 登录mysql-master,创建mha账号并授权
# 需要的权限:Super,select,create,insert,update,delete,drop,reload
mysql> grant all on *.* to 'mha'@'10.50.6.%' identified by 'mhaadmin123';
mysql> flush privileges;
4、MHA安装配置
mha4mysql-node下载
mha4mysql-node下载
在各节点上安装mha4mysql-node
在三台机器上上分别安装mha4mysql-node
# 所有的三个节点安装
# 安装前先安装依赖组件,如果已经安装跳过即可
yum install -y epel-release perl-DBD-MySQL
# 安装mha4mysql-node
wget https://github.com/linyue515/mysql-master-ha/raw/master/mha4mysql-node-0.57-0.el7.noarch.rpm
rpm -ivh mha4mysql-node-0.57-0.el7.noarch.rpm
在管理节点上安装manager节点
# 10.50.6.6管理节点
# 下载epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum makecache
# 安装manager依赖
yum install -y perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager
# 安装mha4mysql-mangere
wget https://github.com/linyue515/mysql-master-ha/raw/master/mha4mysql-manager-0.57-0.el7.noarch.rpm
rpm -ivh mha4mysql-manager-0.57-0.el7.noarch.rpm
创建mha配置文件
mkdir /etc/mhamanager
vim /etc/mhamanager/manager.conf
[server default]
# mysql用戶名
user=mha
# mysql密码
password=mha123456
# ssh免密钥登录的帐号名
ssh_user=root
# mysql复制帐号,主从配置里配的
repl_user=slave
# mysql复制账号密码
repl_password=123456
# ping间隔,用来检测master是否正常,默认是3秒,尝试三次没有回应的时候自动进行failover
ping_interval=1
# 数据目录
manager_workdir=/opt/mhamanager
# 日志文件
manager_log=/opt/mhamanager/mhamanager.log
# 另外2台机子在运行时候需要创建的目录,注意ssh-keygen帐号的权限问题
remote_workdir=/opt/mhamanager
# binlog目录,不指定会报错
master_binlog_dir=/var/lib/mysql
[server1]
hostname=10.50.6.6
port=3306
candidate_master=1
[server2]
hostname=10.50.6.16
port=3306
# 一定不会选这个机器为master,根据情况设置
no_master=1
[server3]
hostname=10.50.6.5
port=3306
candidate_master=1
启动mha监控
# 检查ssh登录
masterha_check_ssh --conf=/etc/mhamanager/manager.conf
# 检查mysql复制是否成功
masterha_check_repl --conf=/etc/mhamanager/manager.conf
# 检查无误后可以启动MHA监控
nohup masterha_manager --conf=/etc/mhamanager/manager.conf --remove_dead_master_conf --ignore_last_failover < /dev/null > /opt/mhamanager/manager.log 2>&1 &
5、错误检查 && 错误总结
数据库连接错误
上述情况检查在mysql-master里面检查mha用户是否创建,访问权限是否开放