MySQL架构-MHA搭建部署

系统环境:

  • centos 7.2.1511
  • mysql 5.7.24-27
  • mha4mysql-manager 0.58
  • mha4mysql-node 0.58

MHA 是较为常用的数据库中的高可用架构,以下部署是基于主从已经部署部署完毕的情况下搭建的。


部署搭建:

需要注意:
mysql服务需要设置: relay_log_purge=0

所有MySQL数据库节点中添加定时任务:

00 04 * * *  /usr/bin/purge_relay_logs --user=ha_monitor --password=123123 --disable_relay_log_purge &>> /var/purge_relay_logs.log

配置SSH认证:

证书生成、公钥分发及依赖安装需要在每个节点上执行

  • 生成证书
ssh-keygen
  • 分发公钥到所有节点
ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.17.0.55
ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.17.0.56
ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.17.0.57
ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.17.0.58

安装依赖:

yum install  epel-release  -y
yum install  perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager \
perl-Time-HiRes perl-devel perl-devel perl-CPAN  -y

创建相关目录:

/home/masterha/ 目录需要在所有节点创建, /etc/mastermha/仅在ha-monitor节点中创建

mkdir -p /etc/mastermha/
mkdir -p /home/masterha/

下载MHA组建:

所有节点需要安装mha node 节点,仅manager需要安装在ha-monitor节点上

wget \
https://github.com/yoshinorim/mha4mysql-node/releases/download/v0.58/mha4mysql-node-0.58-0.el7.centos.noarch.rpm
wget \
https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-manager-0.58-0.el7.centos.noarch.rpm

在所有节点上安装mha-node 组件:

yum localinstall mha4mysql-node-0.58-0.el7.centos.noarch.rpm -y

在ha-monitor节点上安装mha4mysql-manager 组件:

yum localinstall mha4mysql-manager-0.58-0.el7.centos.noarch.rpm  -y

创建监控用户:

mysql> CREATE USER 'ha_monitor'@'172.17.0.%' IDENTIFIED BY '123123';
mysql> GRANT ALL ON *.* TO 'ha_monitor'@'172.17.0.%' ;

在ha-monitor节点添加配置文件:

cat > /etc/mastermha/app1.conf << EOF
[server default]
#授权的manager监控用号和密码
user=ha_monitor
password=123123

#MySQL服务复制用户和密码
repl_user=sync
repl_password=123123

# ssh远程登录用户和端口
ssh_user=root
ssh_port=22

# 检测主master存活间隔和类型
ping_interval=1
ping_type=SELECT

#管理端log路径
manager_log=/home/masterha/manager.log
#管理服务端所使用的目录
manager_workdir=/home/masterha/
#远程节点工作目录
remote_workdir=/home/masterha/
#数据库binlog目录
master_binlog_dir=/data/mysql_3306_core/log/binary_log

#故障failover脚本,需在官网的基础上修改配置
master_ip_failover_script=/usr/local/bin/master_ip_failover
master_ip_online_change_script=/usr/local/bin/master_ip_online_change

#检测路由主master是否宕机
secondary_check_script="masterha_secondary_check -s 172.17.0.56 -s 172.17.0.57"

[server1]
hostname=172.17.0.56
port=3306
candidate_master=1

[server2]
hostname=172.17.0.57
port=3306
#设置可参数选举为MYSQL MASTER
candidate_master=1
#忽略延迟
check_repl_delay=0

[server3]
hostname=172.17.0.58
port=3306
#不参与选举
no_master=1
EOF

在ha-monitor节点下载相关脚本并修改相关信息:

  • 下载相关脚本
wget  https://down.niknk.com/MYSQL/master_ip_failover
wget  https://down.niknk.com/MYSQL/master_ip_online_change
mv master_ip_* /usr/local/bin/
chmod +x /usr/local/bin/master_ip_*
  • 修改master_ip_failover、master_ip_online_change中的参数信息
my $vip = '172.17.0.100'; #配置虚拟IP
my $gateway = '172.17.0.1'; #配置网关
my $interface = 'eth0'; #配置网卡名称

测试SSH及主从复制是否正常:

masterha_check_ssh  --conf=/etc/mastermha/app1.conf
masterha_check_repl  --conf=/etc/mastermha/app1.conf

启动HA监控管理服务器:

nohup masterha_manager  --conf=/etc/mastermha/app1.conf --remove_dead_master_conf \
--ignore_fail_on_start --ignore_last_failover &

检查是否正常:

masterha_check_status  --conf=/etc/mastermha/app1.conf

输出信息:app1 (pid:11522) is running(0:PING_OK), master:172.17.0.56


后续维护:

其它操作:

  • 停止HA监控管理服务
 masterha_stop --conf=/etc/mastermha/app1.conf
  • 在线手动切换

手动执行切换需要停止HA监控管理服务

masterha_master_switch --master_state=alive --new_master_host=172.17.0.56  \
--orig_master_is_new_slave  --conf=/etc/mastermha/app1.conf
  • 宕机手动切换
masterha_master_switch --master_state=dead  --new_master_host=172.17.0.57  \
--orig_master_is_new_slave --conf=/etc/mastermha/app1.conf

重新加入节点:

过滤 CHANGE MASTER 的信息并修改密码,在新添加的MySQL节点服务添加即可

  • 过滤CHANGE MASTER信息
grep 'CHANGE MASTER TO' /home/masterha/manager.log
  • 过滤出日志修改信息如下
CHANGE MASTER TO MASTER_HOST='172.17.0.57',
MASTER_PORT=3306,
MASTER_AUTO_POSITION=1,
MASTER_USER='sync',
MASTER_PASSWORD='123123';
  • 在MHA配置文件中添加节点信息
vim /etc/mastermha/app1.conf
[server1]
candidate_master=1
check_repl_delay=0
hostname=172.17.0.56
port=3306
  • 重新测试SSH及主从复制是否正常
masterha_check_ssh  --conf=/etc/mastermha/app1.conf
masterha_check_repl  --conf=/etc/mastermha/app1.conf
  • 重新启动HA监控管理服务器
nohup masterha_manager  --conf=/etc/mastermha/app1.conf --remove_dead_master_conf \
--ignore_fail_on_start --ignore_last_failover &
  • 重新检查是否正常
masterha_check_status  --conf=/etc/mastermha/app1.conf

相关网址:

MHA GITHUB WIKI

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注