栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

实现MySQL的高可用性MHA集群架构

实现MySQL的高可用性MHA集群架构

MySQL的主从能解决读操作的可用性,如果从节点挂掉,也可以通过其他从节点继续提供读的操作,但是主节点的单点问题没有解决,因此在日常生产中会利用MHA配合主从架构来实现数据库的高可用。

MHA工作逻辑:

MHA会利用Select 1 As Value指令判断master服务器的健康性,一旦master down机之后,MHA从down机崩溃的master中把二进制日志保存下来,然后判断有最新数据更新的slave,

数据最全的slave应用中继日志的数据差,把差异数据同步到其他slave上,使之与其数据保持一致

应用从master上保存的二进制日志同步到所有slave节点上

这样所有节点上的数据都是一致的,

提升一个slave为新的master

使其他的slave连接新的master进行复制

故障master将被踢出集群,清除配置信息

MHA是一次性高可用性解决方案,只防止一次性的损坏,提升主节点之后即退出

选举新的master

如果设定权重candidate_master=1,按照权重强制指定新主,但是默认情况下如果一个slave落后master二进制日志超过100M的relay logs,即使有权重也会失效,如果设置check_repl_delay=0,即使落后很多日志,也会强制选择其为新主

如果slave节点数据之间有差异,最接近master的slave会成为新主

如果所有slave节点的数据都一致,按照配置文件顺序最前面的当新主

注意:为了尽可能的减少master服务器硬件损坏down机造成的数据丢失,因此在配置MHA的同时建议配置成MySQL的半同步复制

实现MHA集群架构:

10.0.0.7   manager(安装mha4mysql-manager包和mha4mysql-node包)

mha4mysql-manager包只兼容mysql5.7和mysql8.0,但和centos8上的mariaDB10.3不兼容

10.0.0.8   MySQL8.0  master(安装mha4mysql-node包)

10.0.0.18  MySQL8.0  slave1(安装mha4mysql-node包)

10.0.0.28  MySQL8.0  slave2(安装mha4mysql-node包)

10.0.0.7 manager安装mha4mysql-manager包和mha4mysql-node包

[root@mha ~]# yum -y install mha4mysql-manager-0.58-0.el7.centos.noarch.rpm

[root@mha ~]# yum -y install mha4mysql-node-0.58-0.el7.centos.noarch.rpm

10.0.0.8 MySQL8.0  master安装mha4mysql-node包

[16:43:25 root@master ~]$yum -y install mha4mysql-node-0.58-0.el7.centos.noarch.rpm

10.0.0.18 MySQL8.0  master安装mha4mysql-node包

[16:44:32 root@slave1 ~]$yum -y install mha4mysql-node-0.58-0.el7.centos.noarch.rpm

10.0.0.28 MySQL8.0  master安装mha4mysql-node包

[16:45:24 root@slave2 ~]$yum -y install mha4mysql-node-0.58-0.el7.centos.noarch.rpm

在所有的节点实现相互之间的ssh key验证

生成密钥

 [root@mha ~]# ssh-keygen

Copy到自己的系统

[root@mha ~]# ssh-copy-id 127.0.0.1

将此目录分别拷贝到其他三个节点

[root@mha ~]# scp -r .ssh 10.0.0.8:

[root@mha ~]# scp -r .ssh 10.0.0.18:

[root@mha ~]# scp -r .ssh 10.0.0.28:

ssh验证

在管理节点上建立配置文件(配置文件写完查看一下不要有空格一类的操作,不然服务会失败)

[root@mha ~]# mkdir /etc/mastermha

[root@mha ~]# vim /etc/mastermha/app1.cnf

准备vip飘移脚本(脚本为官方站点下载)

根据配置文件要求把脚本放到/usr/local/bin下

[root@mha mastermha]# mv master_ip_failover /usr/local/bin

脚本加执行权限

[root@mha mastermha]# chmod +x /usr/local/bin/master_ip_failover

准备MHA提醒邮件脚本,根据配置文件要求把脚本放到/usr/local/bin下

加执行权限

[root@mha mastermha]# chmod +x /usr/local/bin/sendmail.sh

创建二进制日志目录,在主从节点上约定好放二进制日志的路径

[23:28:49 root@master ~]$mkdir /data/mysql/

[22:37:30 root@slave1 ~]$mkdir /data/mysql/

[22:37:57 root@slave2 ~]$mkdir /data/mysql/

建好之后更改属性

[23:30:00 root@master ~]$chown mysql.mysql /data/mysql/

[23:30:13 root@slave1 ~]$chown mysql.mysql /data/mysql/

[23:30:18 root@slave2 ~]$chown mysql.mysql /data/mysql/

在master上创建配置文件(skip_name_resolve=1名字解析,如果不加这一项可能会尝试把ip地址解析成名字,有可能会导致连接不成功,general_log通用日志是为了配合观察发生的操作,为了实验效果,非必须项,生产中无需启用)

[23:37:46 root@master ~]$vim /etc/my.cnf

重启数据库服务,当然也可以设为立即启动并开机启动

[23:50:49 root@master ~]$systemctl restart mysqld

[23:51:14 root@master ~]$systemctl enable --now  mysqld

观察master二进制日志位置

创建远程连接帐号

赋予它进行复制的权限

设置一个用于配置修改mysql配置的关联帐号

并赋予它所有的权限,让它将来用于修改slave信息方便易主

在主节点上配置vip,在eth0:1的接口上增加一个vip,加上以后除了原有的ip以外,又增加了一个新的ip,实现飘移vip,用于将来用户访问

[00:21:35 root@master ~]$ifconfig eth0:1 10.0.0.100/24

配置slave的配置文件

[17:33:41 root@slave1 ~]$vim /etc/my.cnf

[17:40:11 root@slave2 ~]$vim /etc/my.cnf

slave数据库设为开机启动并立即启动

[17:43:11 root@slave1 ~]$systemctl enable --now mysqld

[17:42:25 root@slave2 ~]$systemctl enable --now mysqld

登录两个slave数据库配置change master

开启slave线程

查看线程状态

导入文件测试复制环境

[19:03:52 root@master ~]$ mysql < hellodb_innodb.sql

检测两个slave节点的同步没有问题

探测四个节点之间ssh的相互通讯,复制情况

[root@mha ~]# masterha_check_ssh --conf=/etc/mastermha/app1.cnf

[root@mha ~]# masterha_check_repl --conf=/etc/mastermha/app1.cnf

观察日志

探测主节点目前是健康状态,每秒发送Select 1 as value的健康指令

模拟主节点down机,停掉master节点

[23:14:10 root@master ~]$systemctl stop mysqld

观察mha节点的日志会有提示,同时会发邮件通知,MHA执行完任务之后会立即退出

 登录新主节点,已经没有两个线程的信息,而且read only属性也已更改,vip也已成功飘移

登录slave1查看状态,master已显示新主节点的ip

到此,MySQL高可用性MHA模拟完成。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/583036.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号