mysql集群之 MHA高可用

时间:2024-03-24 14:09:36

一、集群定义:

使用多台服务提供相同的服务

二、高可用集群定义:

主备模式,被客户端访问的称作主,当主宕机时,备用
服务器自动接收客户端访问。

集群类型:LB(负载均衡集群) HA(高可用集群) HPC(高计算集群)

三、配置mysql数据库服务高可用集群(MHA + 主从同步)

1、 MHA集群架构图
mysql集群之 MHA高可用

2、 配置MHA集群

安装软件包:
2.1 在所有主机上安装perl软件包 (1~6)
perl-Config-Tiny-2.14-7.el7.noarch.rpm
perl-Email-Date-Format-1.002-15.el7.noarch.rpm
perl-Log-Dispatch-2.41-1.el7.1.noarch.rpm
perl-Mail-Sender-0.8.23-1.el7.noarch.rpm
perl-Mail-Sendmail-0.79-21.el7.art.noarch.rpm
perl-MIME-Lite-3.030-1.el7.noarch.rpm
perl-MIME-Types-1.38-2.el7.noarch.rpm
perl-Parallel-ForkManager-1.18-2.el7.noarch.rpm

2.2 在所有主机上安装mha_node软件包 (1~6)
mha4mysql-node-0.56-0.el6.noarch.rpm

2.3 只在管理主机上安装mha_manager软件包(6)
[[email protected] mha-soft-student]# tar -zxf mha4mysql-manager-0.56.tar.gz
[[email protected] mha-soft-student]# cd mha4mysql-manager-0.56
[[email protected] mha4mysql-manager-0.56]# ls
AUTHORS COPYING inc Makefile.PL META.yml rpm t
bin debian lib MANIFEST README samples tests
[[email protected] mha4mysql-manager-0.56]#yum -y install perl-ExtUtils-* perl-CPAN-*
[[email protected] mha4mysql-manager-0.56]# perl Makefile.PL
[[email protected] mha4mysql-manager-0.56]#make
[[email protected] mha4mysql-manager-0.56]#make install

2.4 检查配置环境

A、配置 ssh **对认证登陆,每台服务器之间互相可以以以 root 用户 ssh 秘
钥对认证登录。

B、安装 manager 软件包 后产生的命令
masterha_check_ssh 检查 MHA 的 SSH 配置状况
masterha_check_repl 检查 MySQL 复制状况
masterha_manger 启动 MHA
masterha_check_status 检测 MHA 运行状态
masterha_master_monitor 检测 master 是否宕机

C、配置 master 数据库服务器

C1、master1 (192.168.4.1)数据库服务器配置文件
]vim /etc/my.cnf
[mysqld]
plugin-load=
“rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisyn
c_slave.so”
rpl-semi-sync-master-enabled = 1
rpl-semi-sync-slave-enabled = 1
server_id=1
log-bin=master1
binlog-format=”mixed”
:wq
]# systemctl
restart mysqld

C2、添加主从同步授权用户
mysql> set global relay_log_purge=off; // 不自动删除本机的中继日志文件
mysql> grant replication slave on . to [email protected]”%” identified by
“123456”;

D、master2(192.168.4.2) 、 master3(192.168.4.3)
vim /etc/my.cnf
[mysqld]
plugin-load =
“rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=
semisync_slave.so
rpl-semi-sync-master-enabled = 1
rpl-semi-sync-slave-enabled = 1
server_id=2
log-bin=master2
binlog-format=”mixed”
:wq

备用 1 master2 、master3 数据库服务器配置文件
mysql> set global relay_log_purge=off ; // 不自动删除本机的中继日志文件重点内容
mysql> change master to
-> master_host=”192.168.4.1”,
-> master_user=”repluser”,
-> master_password=”1234546”,
-> master_log_file=”master1.000001”,
-> master_log_pos=441;
Query OK, 0 rows affected, 2 warnings (0.04 sec)
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)

**E、从库 slave4 、slave5 、slave6的 数据库服务器配置文件** slave4 (192.168.4.4) vim /etc/my.cnf [mysqld] server_id=4
wq
mysql> change master to
-> master_host=”192.168.4.1”,
-> master_user=”repluser”,
-> master_password=”123456”,
-> master_log_file=”master1.000001”,
-> master_log_pos=441;
Query OK, 0 rows affected, 2 warnings (0.04 sec)
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)

2.5 配置管理主机

管理节点主机配置文件(192.168.4.6)

创建工作目录 和主配置文件 (6)
]#mkdir /etc/mha_manager/
]# vim /etc/mha_manager/app1.cnf
[server default]
manager_workdir=/var/log/masterha/app1
manager_log=/var/log/masterha/app1/manager.log

————-自动failover 时候的切换脚本
master_ip_failover_script=/usr/local/bin/master_ip_failover
ssh_user=root ——–远程登入用户
ssh_port=22
repl_user=repluser ———主从同步用户名
repl_password=123456 ———–主从同步密码
user=root ————-连接数据库服务器用户名
password=123456—————-连接数据库服务器密码

[server1]
hostname=192.168.4.1
port=3306

[server2]
hostname=192.168.4.2
port=3306
candidate_master=1

[server3]
hostname=192.168.4.3
port=3306
candidate_master=1

[server4]
hostname=192.168.4.4
port=3306
no_master=1

[server5]
hostname=192.168.4.5
port=3306
no_master=1

[server6]
hostname=192.168.4.6
port=3306
no_master=1

2.6测试 ssh **对认证登陆

在管理节点上 通过 master_check_ssh 做 ssh 检查
[[email protected] mha-soft-student]# masterha_check_ssh –conf=/etc/mha_manager/app1.cnf
Thu Sep 6 20:59:44 2018 - [info] All SSH connection tests passed successfully.
(所有状态显示为ok才成功。)

2.7 创建故障切换脚本(6)
]# cp mha4mysql-manager-0.56/samples/scripts/master_ip_failover /usr/local/bin/
修改脚本 master_ip_failover 中 vip
https://blog.csdn.net/weixin_42972553/article/details/82498509

2.8 验证配置
验证ssh 免密码登录 数据节点主机
]# masterha_check_ssh –conf=/etc/mha_manager/app1.cnf
验证 数据节点的主从同步配置
]# masterha_check_repl –conf=/etc/mha_manager/app1.cnf

四、测试高可用集群配置

1 、在主库上手动部署vip 地址 192.168.4.100
]# /sbin/ifconfig eth0:1 192.168.4.100/24
]#ip a (查看vip是否添加成功)
2 、修改故障切换脚本 指定vip地址的部署信息
]# vim /usr/local/bin/master_ip_failover
my vip = ‘192.168.4.100/24’;  # Virtual IP   mykey = “1”;
my sshstartvip="/sbin/ifconfigeth0:key vip;myssh_stop_vip = "/sbin/ifconfig eth0:$key down”;
:wq

3 、启动管理服务,并查看服务状态

开启一个终端启动管理服务:
]# masterha_manager –conf=/etc/mha/app1.cnf –remove_dead_master_conf –ignore_last_failover

另启一个终端查看服务状态:
[[email protected] ~]# masterha_check_status –conf=/etc/mha_manager/app1.cnf
app1 (pid:16944) is running(0:PING_OK), master:192.168.4.1

4、测试故障转移
在主库1 上执行 (192.168.4.1)
]# systemctl stop msyqld

找一台服务器登入测试
]# mysql -h192.168.4.1 -uadmin -p123456
mysql> select @@localhost
(在宕机之后的之后重新选举新的主库)