Mysql—高可用集群MHA

Mysql—高可用集群MHAMHA MasterHighAv 是一套优秀的 MySQL 高可用环境下故障切换和主从复制的软件

大家好,欢迎来到IT知识分享网。

1:什么是MHA?

 MHA(Master High Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 

MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。 

MHA能在故障切换的过程中最大程度上保证数据的一致性,以达到真正意义上的高可用。

2:MHA 的组成 

MHA由两部分组成:MHAManager (管理节点) MHA Node (数据库节点)

MHA  Manager 可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台 slave 节点上。 

MHA Manager 会定时探测集群中的 master 节点。 

当 master 出现故障时,它可以自动将最新数据的 slave 提升为新的 master, 然后将所有其他的 slave 重新指向新的 master。

3:MHA 的特点

自动故障切换过程中,MHA从宕机的主服务器上保存二进制日志,最大程度的保证数据不丢失

使用半同步复制,可以大大降低数据丢失的风险,如果只有一个slave已经收到了最新的二进制日 志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数 据一致性

目前MHA支持一主多从架构,最少三台服务,即一主两从

4.MHA工作原理

目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群必须最少有3台数据库服务器, 一主二从,即一台充当Master,台充当备用Master,另一台充当从库。

MHA Node 运行在每台 MySQL 服务器上

MHAManager 会定时探测集群中的master 节点 当master 出现故障时,它可以自动将最新数据的slave 提升为新的master

然后将所有其他的slave 重新指向新的master,VIP自动漂移到新的master。

整个故障转移过程对应用程序完全透明。

5.MHA部署实施

5.1:搭建主两从架构

准备虚拟机:四台虚拟机:172.25.254.10,172.25.254.20,172.25.254.30,172.25.254.50

准备安装包MHA

Mysql—高可用集群MHA

172.25.254.50上与172.25.254.10,172.25.254.20,172.25.254.30做免密验证

[root@node4 ~]# ssh-keygen

Mysql—高可用集群MHA

172.25.254.50上与172.25.254.10做免密验证

Mysql—高可用集群MHA

[root@node4 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.10

输入密码172.25.254.10主机解析创建成功

172.25.254.50上与172.25.254.20做免密验证

[root@node4 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.20

Mysql—高可用集群MHA

输入密码172.25.254.20主机解析创建成功

172.25.254.50上与172.25.254.30做免密验证

[root@node4 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.30

Mysql—高可用集群MHA

输入密码172.25.254.30主机解析创建成功

确定本地解析是否存在

[root@node4 ~]# vim /etc/hosts

Mysql—高可用集群MHA

5.2:创建半同步模式

还原10,20,30主机的配置文件信息

172.25.254.10与172.25.254.20和172.25.254.30主机创建半同步模式

[root@node1 ~]# vim /etc/my.cnf

Mysql—高可用集群MHA

停止数据库

[root@node1 ~]# /etc/init.d/mysqld stop

清除mysql数据

[root@node1 ~]# rm -fr /data/mysql/*

对数据库进行初始化

[root@node1 ~]# mysqld –user=mysql –initialize

Mysql—高可用集群MHA

启动数据库

[root@node1 ~]# /etc/init.d/mysqld start

登录数据库,输入自己的密码

[root@node1 ~]# mysql -uroot -p’LEfu9_uS*B<h’

Mysql—高可用集群MHA

修改密码’lee’

mysql> alter user root@localhost identified by ‘lee’;

建立同步用户’lee’

mysql> CREATE USER ‘repl’@’%’ IDENTIFIED BY ‘lee’;

同意远程授权

mysql> GRANT REPLICATION SLAVE ON *.*  TO ‘repl’@’%’;

开启半同步模式

mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so’;

打开半同步功能

mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;

mysql> SHOW MASTER STATUS;

mysql> SHOW VARIABLES LIKE ‘rpl_semi_sync%’;

mysql> SHOW STATUS LIKE ‘Rpl_semi_sync%’;

Mysql—高可用集群MHA

同理172.25.254.20也进行相应的配置

[root@node2 ~]# vim /etc/my.cnf

Mysql—高可用集群MHA

停止数据库

[root@node2 ~]# /etc/init.d/mysqld stop

清除mysql数据

[root@node2 ~]# rm -fr /data/mysql/*

对数据库进行初始化

[root@node2 ~]# mysqld –user=mysql –initialize

[root@node2 ~]# /etc/init.d/mysqld start

[root@node2 ~]# mysql -uroot -p’kird_l5Pkg#0′

Mysql—高可用集群MHA

修改密码

mysql> alter user root@localhost identified by ‘lee’;

mysql> CHANGE MASTER TO MASTER_HOST=’172.25.254.10′, MASTER_USER=’repl’, MASTER_PASSWORD=’lee’, MASTER_AUTO_POSITION=1;

开启slave模式

mysql> start slave;

加载半同步模块

mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so’;

打开半同步功能

mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;

mysql> STOP SLAVE IO_THREAD;

mysql> START SLAVE IO_THREAD;

mysql> SHOW STATUS LIKE ‘Rpl_semi_sync%’;

mysql> SHOW SLAVE STATUS\G

Mysql—高可用集群MHA

Mysql—高可用集群MHA

172.25.254.20与172.25.254.10主机建立半同步模式成功

172.25.254.30

[root@node3 ~]# vim /etc/my.cnf

Mysql—高可用集群MHA

停止数据库

[root@node2 ~]# /etc/init.d/mysqld stop

清除mysql数据

[root@node2 ~]# rm -fr /data/mysql/*

[root@node3 ~]# mysql -uroot -p’1;o0/rSwpg2L’

Mysql—高可用集群MHA

mysql> alter user root@localhost identified by ‘lee’;

mysql> CHANGE MASTER TO MASTER_HOST=’172.25.254.10′, MASTER_USER=’repl’, MASTER_PASSWORD=’lee’, MASTER_AUTO_POSITION=1;

mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so’;

mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;

mysql> start slave;

mysql> SHOW SLAVE STATUS\G

Mysql—高可用集群MHA

172.25.254.30与172.25.254.10建立半同步模式成功

5.3:安装MHA所需要的软件

[root@node4 ~]# cd MHA-7/
[root@node4 MHA-7]# yum install *.rpm

Mysql—高可用集群MHA

在172.25.254.50传递软件包到172.25.254.10,172.25.254.20和172.25.254.30主机上

[root@node4 MHA-7]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm root@172.25.254.10:/root

Mysql—高可用集群MHA

172.25.254.10,172.25.254.20和172.25.254.30主机上对传递的包进行安装

[root@node1 ~]# yum install mha4mysql-node-0.58-0.el7.centos.noarch.rpm
[root@node2 ~]# yum install mha4mysql-node-0.58-0.el7.centos.noarch.rpm
[root@node3 ~]# yum install mha4mysql-node-0.58-0.el7.centos.noarch.rpm 

172.25.254.50上生成配置文件并解压压缩包

将底下的文件app1.conf进行拷贝

Mysql—高可用集群MHA

进入新拷贝的文件中修改配置文件

[root@node4 conf]# vim /etc/masterha/app1.cnf

Mysql—高可用集群MHA

Mysql—高可用集群MHA

由于172.25.254.10,172.25.254.20,172.25.254.30主机不允许建立远程连接

由于创建主从复制,172.25.254.10上建立远程连接就可以全部建立成功

mysql> CREATE USER root@’%’ identified by ‘lee’;

mysql> grant ALL ON *.* to root@’%’;

在172.25.254.50主机上进行检测将其底下文件传递到10,20和30主机上

Mysql—高可用集群MHA

[root@node4 ~]#scp id_rsa root@172.25.254.10:/root/.ssh/

[root@node4 ~]#scp id_rsa root@172.25.254.20:/root/.ssh/

[root@node4 ~]#scp id_rsa root@172.25.254.30:/root/.ssh/

Mysql—高可用集群MHA

检测网络及SSH免密验证

[root@node4 ~]# masterha_check_ssh –conf=/etc/masterha/app1.cnf

Mysql—高可用集群MHA

保证了连接完整性

检测数据主从复制情况

[root@node4 ~]# masterha_check_repl –conf=/etc/masterha/app1.cnf

Mysql—高可用集群MHA

数据主从复制没有问题

至此MHA的部署完成!!!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/146172.html

(0)
上一篇 2025-04-16 17:20
下一篇 2025-04-16 17:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信