良许Linux教程网 干货合集 MariaDB基于MHA高可用部署(Binlog模式)具体方法

MariaDB基于MHA高可用部署(Binlog模式)具体方法

本篇文章重点为大家讲解一下MariaDB基于MHA高可用部署(Binlog模式)具体方法, 有需要的小伙伴可以参考一下。

image-20220913214907467

简介:

MHA能够在较短的时间内实现自动故障检测和故障转移,通常在10-30秒以内;在复制框架中,MHA能够

很好地解决复制过程中的数据一致性问题,由于不需要在现有的replication中添加额外的服务器,仅需

要一个manager节点,而一个Manager能管理多套复制,所以能大大地节约服务器的数量;另外,安装简

单,无性能损耗,以及不需要修改现有的复制部署也是它的优势之处。

MHA的目的在于维持MySQL Replication中Master库的高可用性,其最大特点是可以修复多个Slave之间的差异日志,最终使所有Slave保持数据一致,然后从中选择一个充当新的Master,并将其它Slave指向它

MHA还提供在线主库切换的功能,能够安全地切换当前运行的主库到一个新的主库中(通过将从库提升为 主库),大概0.5-2秒内即可完成。

工作流程:

1)把宕机的master二进制日志保存下来。

2)找到binlog位置点最新的slave。

3)在binlog位置点最新的slave上用relay log(差异日志)修复其它slave。

4)将宕机的master上保存下来的二进制日志恢复到含有最新位置点的slave上。

5)将含有最新位置点binlog所在的slave提升为master。

6)将其它slave重新指向新提升的master,并开启主从复制。

MHA软件的架构:由两部分组成,Manager工具包和Node工具包

masterha_check_ssh              检查MHA的SSH配置状况
masterha_check_repl             检查MySQL复制状况
masterha_manger                 启动MHA
masterha_check_status           检测当前MHA运行状态
masterha_master_monitor       检测master是否宕机
masterha_master_switch          控制故障转移(自动或者手动
masterha_conf_host               添加或删除配置的server信息1.2.3.4.5.6.7.

Node工具包(这些工具通常由MHA Manager的脚本触发,无需人为操作)主要包括以下几个工具:

save_binary_logs        保存和复制master的二进制日志
apply_diff_relay_logs   识别差异的中继日志事件并将其差异的事件应用于其他的slave
purge_relay_logs        清除中继日志(不会阻塞SQL线程)1.2.3.

部署:

MariaDB基于MHA高可用部署(Binlog模式)_配置文件
MariaDB基于MHA高可用部署(Binlog模式)_配置文件

1.基于半同步复制部署一主两从

10.0.0.20 MHA-Manager

10.0.0.21 MariaDB-21 master

10.0.0.22 MariaDB-22 候选者,当master宕机,可以成为新的master

10.0.0.23 MariaDB-23 salve

所有的主机都需要做免密登录

ssh-keygen
ssh-copy-id -i id_rsa root@IP1.2.

先搭建一主两从,在21、22、23上安装MariaDB

yum -y install MariaDB-server MariaDB-client
# 安装包在最下面第一篇博客中会有百度云链接
yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm
systemctl start mariadb
# 除了将密码改为mariadb123456,其余步骤都按Y
/usr/bin/mysql_secure_installation

# 在Master和Slave首次启动时,安装插件,开启半同步复制
# mariadb10.3无需安装插件可以直接命令开启
mysql -uroot -pmariadb123456
# 在MariaDB-21、MariaDB-22上均安装这两个模块,因为指不定哪天MariaDB-22就上位了
install plugin rpl_semi_sync_master soname 'semisync_master.so';
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
set global rpl_semi_sync_master_enabled = 1;
set global rpl_semi_sync_slave_enabled = 1;
grant replication slave on *.* to 'repluser'@'10.0.0.%' identified by 'repluser123456';
flush privileges;

# 在MariaDB-23上仅开启开启从同步模块
# 不用给它授权用户,因为我们会在MHA中设置,它不会有机会成为master
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
set global rpl_semi_sync_slave_enabled = 1;1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.

修改三台MariaDB的配置文件

# MariaDB-21配置文件
cat /etc/my.cnf.d/server.cnf
[mysqld]
skip_name_resolve = ON
innodb_file_per_table = ON
server-id = 21
log-bin = master-bin
relay_log_purge = 0
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_master_timeout = 3000
rpl_semi_sync_slave_enabled = 1

# MariaDB-22配置文件
cat /etc/my.cnf.d/server.cnf
[mysqld]
skip_name_resolve = ON
innodb_file_per_table = ON
server-id = 22
log-bin = master-bin
relay_log_purge = 0
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_master_timeout = 3000
rpl_semi_sync_slave_enabled = 1

# MariaDB-23配置文件
cat /etc/my.cnf.d/server.cnf
[mysqld]
skip_name_resolve = ON
innodb_file_per_table = ON
server-id = 23
log-bin = master-bin
relay_log_purge = 0
rpl_semi_sync_slave_enabled = 11.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.

重启三台mariadb,加载配置文件

systemctl restart mariadb.service

# 查看10.0.0.21上的Position位置
show master status\G
File: master-bin.000001
Position: 657
# 在10.0.0.22、23上配置主从同步
change master to master_host='10.0.0.21',master_user='repluser',
master_password='repluser123456',master_log_file='master-bin.000001',master_log_pos=657;
start slave;

# 在10.0.0.21上授权用户,mhauser用于MHA管理各节点,两台Slave会同步这两个用户
grant all on *.* to 'mhauser'@'10.0.0.%' identified by 'mhauser123456';
flush privileges;1.2.3.4.5.6.7.8.9.10.11.12.13.14.

2.安装mha-manager

yum install -y epel-release.noarch
yum -y install mha4mysql-manager-0.56-0.el6.noarch.rpm \
mha4mysql-node-0.56-0.el6.noarch.rpm
mkdir /etc/mha
cat /etc/mha/app1.conf
[server default]
#设置具有spuer的用户
user=mhauser
#设置对应的密码
password=mhauser123456
#设置ssh登录的用户名
ssh_user=root

#设置实例mysql的二进制文件目录
master_binlog_dir=/var/lib/mysql
#远端mysql发生切换时保存的二进制文件
remote_workdir=/data/log/masterha
#工作日志文件
manager_workdir=/usr/local/mha
#日志文件
manager_log=/usr/local/mha/manager.log

#设置监控主机的间隔时间,默认3秒
ping_interval=1
#设置复制环境中的复制用户名
repl_user=repluser
#设置复制用户名密码
repl_password=repluser123456

[server1]
hostname=10.0.0.21

[server2]
hostname=10.0.0.22
candidate_master=1

[server3]
hostname=10.0.0.23
#设置此库不成为master
no_master=1

# ssh检测,授权检测,启动MHA
chmod +x /etc/mha/app1.conf
mkdir /usr/local/mha

#检查ssh是否能够连通
masterha_check_ssh --conf=/etc/mha/app1.conf

masterha_check_repl --conf=/etc/mha/app1.conf
masterha_manager --conf=/etc/mha/app1.conf  2>&1 &
masterha_check_status --conf=/etc/mha/app1.conf1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.

3.故障切换

在10.0.0.21上关闭mariadb

mysqladmin -uroot -p “shutdown”

可以看到10.0.0.22成为新的master,并且23将master指向了22,当21重新上线后,将master指向22,21变成slave.

如果想让21重新变成master,先将master指向22

change master to master_host='10.0.0.22',master_user='repluser',
master_password='repluser123456',master_log_file='master-bin.000001',master_log_pos=657;
start slave;
# 再在mha-manager手动执行切换命令
masterha_master_switch --conf=/etc/mha/app1.conf --master_state=alive \
--new_master_host=10.0.0.21 --new_master_port=3306 --orig_master_is_new_slave1.2.3.4.5.6.

4.添加插件设置VIP

在配置文件中加入:

master_ip_failover_script=/etc/mha/ master_ip_failove

在现任master上配置VIP,以做启动之用,添加一个ip

配置脚本

vim /etc/mha/ master_ip_failove
my $vip = 'VIP/24'
my $ssh_start_vip = "/sbin/ip addr add $vip dev ens33";
my $ssh_stop_vip = "/sbin/ip addr del $vip dev ens33";
my $exit_code=0;
sub start_vip(){
 `ssh $ssh_user\@$new_master_host \" $ssh_start_vip \"`;
}
sub stop_vip(){
 return 0 unless ($ssh_user);
 `ssh $ssh_user\@$new_master_host \" $ssh_start_vip \"`;
}

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部