Mariadb主从复制之MHA配置

Posted jks212454

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mariadb主从复制之MHA配置相关的知识,希望对你有一定的参考价值。

Mariadb主从复制之MHA配置


.

一、环境介绍

1.主从复制及半同步复制配置链接

mariadb数据库的主从复制

Mariadb的半同步复制

2.IP规划

一主两从,一MHA节点
192.1683.3.50  master-k8s——mariadb主节点,mha-node节点
192.168.3.51   node01-k8s——mariadb从节点,开启半同步复制,mha-node节点
192.168.3.52  node02-k8s——mariadb从节点,mha-node节点
192.168.3.53.  node03——mha-master节点

二、检查一主两从数据库状态

1.主库状态

2.从库状态


三、MHA高可用介绍

1.MAH介绍

MHA(Master HighAvailability)目前在mysql高可用方面是一个相对成熟的解决方案,
它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。
在MySQL故障切换过程中,MHA能做到在10~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,
MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。

2.MAH作用

1.MHA还提供在线主库切换的功能,能够安全地切换当前运行的主库到一个新的主库中 (通过将从库提升为主库),大概0.5-2秒内即可完成。
2.该软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。
3.MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。
4.MHA Node运行在每台MySQL服务器上。
5.MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,
然后将所有其他的slave重新指向新的master。
6.整个故障转移过程对应用程序完全透明。

四、MHA基本环境配置

1.所有节点配置hosts文件

[root@mster-k8s ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6


192.168.3.50 master-k8s
192.168.3.51 node01-k8s
192.168.3.52 node02-k8s
10.244.118.115 www.example.com
192.168.3.52 www.aa1.com
192.168.3.53 node03
[root@mster-k8s ~]# 

2.master节点配置ssh免密

 ssh-keygen -t rsa
 ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.3.51
 ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.3.52
[ ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.3.53


[root@mster-k8s .ssh]# 

五、所有节点安装mha-node

1.安装依赖包

wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes -y

2.下载mha软件包

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

3.安装mha

rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm

六、两个从库修改配置文件

vim /etc/my.cnf.d/server.cnf


relay_log_purge = 0       # 不自动删除relay log
log_bin=mysql-bin         # 同样开启 bin log
 
# 因为主库中配置了 bin log 库过滤,从库也必须配置一样的库过滤
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
binlog-ignore-db=sys

七、配置MAH-master节点

1.安装mha-master软件

wget https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-manager-0.58-0.el7.centos.noarch.rpm
[root@node03 soft]# ls
mha4mysql-manager-0.58-0.el7.centos.noarch.rpm  mha4mysql-node-0.58-0.el7.centos.noarch.rpm
[root@node03 soft]# rpm -ivh mha4mysql-manager-0.58-0.el7.centos.noarch.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:mha4mysql-manager-0.58-0.el7.cent################################# [100%]

2.创建mha配置目录

[root@node03 soft]# mkdir -p /etc/mha/conf,logs,work
[root@node03 soft]# touch /etc/mha/server1.conf
[root@node03 soft]# 

3.编辑配置文件

[server default]
#MHA日志名字
manager_log=/etc/mha/manager.log
master_ip_failover_script=/etc/mha/master_ip_failover
#MHA的工作目录
manager_workdir=/etc/mha/work/
#数据库binlog存放路径, 如果在 maser 库中自定义了 bin log 的目录,则需要在这里配置
#master_binlog_dir=/var/logs/
 
#mha管理用户的用户名, 所有数据库中已经给这个用户做了授权
user=root
#mha管理用户的密码
password=123
 
#监测心跳,每隔2秒监测一次(默认是3秒)
ping_interval=2
 
#ssh远程连接用户(做完免密的)
ssh_user=root
 
[server1]
hostname=192.168.3.50
port=3306
[server2]
hostname=192.168.3.51
port=3306
[server3]
hostname=192.168.3.52
port=3306

4.所有节点数据库配置mha用户并授权

MariaDB [(none)]> grant all on *.* to 'mha'@'%' identified by 'mha';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> 

八、检查mha状态

1.检查免密状态

[root@node03 mha]# masterha_check_ssh --conf=/etc/mha/server1.conf
Sat Apr 23 21:56:31 2022 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Sat Apr 23 21:56:31 2022 - [info] Reading application default configuration from /etc/mha/server1.conf..
Sat Apr 23 21:56:31 2022 - [info] Reading server configuration from /etc/mha/server1.conf..
Sat Apr 23 21:56:31 2022 - [info] Starting SSH connection tests..
Sat Apr 23 21:56:58 2022 - [debug] 
Sat Apr 23 21:56:31 2022 - [debug]  Connecting via SSH from root@192.168.3.50(192.168.3.50:22) to root@192.168.3.51(192.168.3.51:22)..
Sat Apr 23 21:56:32 2022 - [debug]   ok.
Sat Apr 23 21:56:32 2022 - [debug]  Connecting via SSH from root@192.168.3.50(192.168.3.50:22) to root@192.168.3.52(192.168.3.52:22)..
Sat Apr 23 21:56:57 2022 - [debug]   ok.
Sat Apr 23 21:56:58 2022 - [debug] 
Sat Apr 23 21:56:32 2022 - [debug]  Connecting via SSH from root@192.168.3.51(192.168.3.51:22) to root@192.168.3.50(192.168.3.50:22)..
Sat Apr 23 21:56:32 2022 - [debug]   ok.
Sat Apr 23 21:56:32 2022 - [debug]  Connecting via SSH from root@192.168.3.51(192.168.3.51:22) to root@192.168.3.52(192.168.3.52:22)..
Sat Apr 23 21:56:57 2022 - [debug]   ok.
Sat Apr 23 21:57:23 2022 - [debug] 
Sat Apr 23 21:56:32 2022 - [debug]  Connecting via SSH from root@192.168.3.52(192.168.3.52:22) to root@192.168.3.50(192.168.3.50:22)..
Sat Apr 23 21:56:57 2022 - [debug]   ok.
Sat Apr 23 21:56:57 2022 - [debug]  Connecting via SSH from root@192.168.3.52(192.168.3.52:22) to root@192.168.3.51(192.168.3.51:22)..
Sat Apr 23 21:57:23 2022 - [debug]   ok.
Sat Apr 23 21:57:23 2022 - [info] All SSH connection tests passed successfully.

2.检查主从状态

 masterha_check_repl --conf=/etc/mha/server1.conf
 

3.启动mha-master

①启动mha-master

nohup masterha_manager --conf=/etc/mha/server1.conf --remove_dead_master_conf --ignore_last_failover < /dev/null > /etc/mha/manager.log 2>&1 &

②停止mha-master

masterha_stop --conf=/etc/mha/server1.conf 

4.查看mha-mster日志

[root@node03 mha]# cat /etc/mha/manager.log
Sun Apr 24 00:06:29 2022 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Sun Apr 24 00:06:29 2022 - [info] Reading application default configuration from /etc/mha/server1.conf..
Sun Apr 24 00:06:29 2022 - [info] Reading server configuration from /etc/mha/server1.conf..
Sun Apr 24 00:06:29 2022 - [info] MHA::MasterMonitor version 0.58.
Sun Apr 24 00:06:30 2022 - [info] GTID failover mode = 0
Sun Apr 24 00:06:30 2022 - [info] Dead Servers:
Sun Apr 24 00:06:30 2022 - [info] Alive Servers:
Sun Apr 24 00:06:30 2022 - [info]   192.168.3.50(192.168.3.50:3306)
Sun Apr 24 00:06:30 2022 - [info]   192.168.3.51(192.168.3.51:3306)
Sun Apr 24 00:06:30 2022 - [info]   192.168.3.52(192.168.3.52:3306)
Sun Apr 24 00:06:30 2022 - [info] Alive Slaves:
Sun Apr 24 00:06:30 2022 - [info]   192.168.3.51(192.168.3.51:3306)  Version=10.6.7-MariaDB-log (oldest major version between slaves) log-bin:enabled
Sun Apr 24 00:06:30 2022 - [info]     Replicating from 192.168.3.50(192.168.3.50:3306)
Sun Apr 24 00:06:30 2022 - [info]     Primary candidate for the new Master (candidate_master is set)
Sun Apr 24 00:06:30 2022 - [info]   192.168.3.52(192.168.3.52:3306)  Version=10.6.7-MariaDB-log (oldest major version between slaves) log-bin:enabled
Sun Apr 24 00:06:30 2022 - [info]     Replicating from 192.168.3.50(192.168.3.50:3306)
Sun Apr 24 00:06:30 2022 - [info] Current Alive Master: 192.168.3.50(192.168.3.50:3306)
Sun Apr 24 00:06:30 2022 - [info] Checking slave configurations..
Sun Apr 24 00:06:30 2022 - [info]  read_only=1 is not set on slave 192.168.3.51(192.168.3.51:3306).
Sun Apr 24 00:06:30 2022 - [info]  read_only=1 is not set on slave 192.168.3.52(192.168.3.52:3306).
Sun Apr 24 00:06:30 2022 - [info] Checking replication filtering settings..
Sun Apr 24 00:06:30 2022 - [info]  binlog_do_db= , binlog_ignore_db= 
Sun Apr 24 00:06:30 2022 - [info]  Replication filtering check ok.
Sun Apr 24 00:06:30 2022 - [info] GTID (with auto-pos) is not supported
Sun Apr 24 00:06:30 2022 - [info] Starting SSH connection tests..

5.检查mha-master运行状态

[root@node03 mha]# masterha_check_status --conf=/etc/mha/server1.conf
server1 (pid:181377) is running(0:PING_OK), master:192.168.3.50

九、配置VIP脚本

1.配置VIP脚本

在/etc/masterha/server.conf

[server default]
master_ip_failover_script=/etc/mha/master_ip_failover
#MHA日志名字
manager_log=/etc/mha/manager.log
#MHA的工作目录
manager_workdir=/etc/mha
#数据库binlog存放路径, 如果在 maser 库中自定义了 bin log 的目录,则需要在这里配置
#master_binlog_dir=/var/logs/

#mha管理用户的用户名, 全面所有数据库中已经给这个用户做了授权
user=root
#mha管理用户的密码
password=123

#监测心跳,每隔2秒监测一次(默认是3秒)
ping_interval=2

#ssh远程连接用户(做完免密的)
ssh_user=root

[server1]
hostname=192.168.3.50
port=3306
[server2]
hostname=192.168.3.51
master_binlog_dir = /data/mysql/mysql3306/logs
candidate_master = 1
check_repl_delay = 0 #用防止master故障时,切换时slave有延迟,卡在那里切不过来。
port=3306
[server3]
hostname=192.168.3.52
port=3306

2.重启mha-master服务

masterha_stop --conf=/etc/mha/server1.conf

nohup masterha_manager --conf=/etc/mha/server1.conf --remove_dead_master_conf --ignore_last_failover < /dev/null > /etc/mha/manager.log 2>&1 &

3.VIP脚本

链接:https://pan.baidu.com/s/1t8akH4yyDg0F8EKHJEl6tA
提取码:3hi3

十、测试故障

1.测试环境

所有配置如上一样,节点和IP更改:

[root@node01 soft]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.3.71 node01
192.168.3.72 node02
192.158.3.73 node03
192.168.3.74 node04
[root@node01 soft]# 

2.停用master节点

[root@node01# systemctl stop mysqld

2.检查从库状态

3.检查mha-master日志

 cat /etc/mha/manager.log
Master 192.168.3.71(192.168.3.71:3306) is down!

Check MHA Manager logs at node04:/etc/mha/manager.log for details.

Started automated(non-interactive) failover.
Invalidated master IP address on 192.168.3.71(192.168.3.71:3306)
The latest slave 192.168.3.72(192.168.3.72:3306) has all relay logs for recovery.
Selected 192.168.3.72(192.168.3.72:3306) as a new master.
192.168.3.72(192.168.3.72:3306): OK: Applying all logs succeeded.
192.168.3.72(192.168.3.72:3306): OK: Activated master IP address.
192.168.3.73(192.168.3.73:3306): This host has the latest relay log events.
Generating relay diff files from the latest slave succeeded.
192.168.3.73(192.168.3.73:3306): OK: Applying all logs succeeded. Slave started, replicating from 192.168.3.72(192.168.3.72:3306)
192.168.3.72(192.168.3.72:3306): Resetting slave info succeeded.
Master failover to 192.168.3.72(192.168.3.72:3306) completed successfully.

4.检查切换后主库的VIP

VIP已经成功切换到master节点上

以上是关于Mariadb主从复制之MHA配置的主要内容,如果未能解决你的问题,请参考以下文章

Mariadb数据库之主从复制同步配置实战

MYSQL高可用架构之MHA实战一 数据库主从配置(真实可用)

MariaDB基于MHA和Galera Cluster实现高可用

MySQL 高可用之MHA

MySQL高可用之MHA—部署MHA

MHA集群(gtid复制)和vip漂移