广告
返回顶部
首页 > 资讯 > 数据库 >配置MySQL高可用集群MHA
  • 643
分享到

配置MySQL高可用集群MHA

2024-04-02 19:04:59 643人浏览 泡泡鱼
摘要

配置Mysql高可用集群+++++++++++++++++++主机角色 :客户端 client50数据库服务器 mysql51 到 mysql55管理主机 mgm56VIP地址

配置Mysql高可用集群+++++++++++++++++++
主机角色 :
客户端 client50
数据库服务器 mysql51 到 mysql55
管理主机 mgm56
VIP地址 192.168.4.100
拓扑结构:

  client50 

     | 
  mysql51主  
     |  

| | | | |
mysql52 mysql53 mysql54 mysql55 mgm56
从 从 从 从 管理集群
备用主 备用主
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
配置MySQL主从同步结构:一主多从
配置主库51
配置备用从库52
配置备用从库53
配置纯从库54
配置纯从库55

51-55都要进行
安装mysql【yum -y install mysql-commUnity-*】
mysql-5.7.17.tartar -xf
mysql-community-client-5.7.17-1.el7.x86_64.rpm
mysql-community-common-5.7.17-1.el7.x86_64.rpm
mysql-community-devel-5.7.17-1.el7.x86_64.rpm
mysql-community-embedded-5.7.17-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.17-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.17-1.el7.x86_64.rpm
mysql-community-libs-5.7.17-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.17-1.el7.x86_64.rpm
mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64.rpm
mysql-community-server-5.7.17-1.el7.x86_64.rpm
mysql-community-test-5.7.17-1.el7.x86_64.rpm
在所有服务器51-56上安装mha_node软件[mha4mysql-node-0.56-0.el6.noarch.rpm]
]#yum -y install perl-DBD-mysql
]#rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
一、配置所有数据库主机之间可以互相以ssh密钥对方式认证登陆[免密码]

二、配置manager56主机 无密码ssh登录 所有数据库主机【免密码】

三、配置主从同步,要求如下:
51 主库 开半同步复制
52 从库(备用主库) 开半同步复制
53 从库(备用主库) 开半同步复制
54 从库 不做备用主库所以不用开半同步复制
55 从库 不做备用主库所以不用开半同步复制
配置半同步复制模式

查看当前的数据库服务是否支持动态加载模块
mysql>show variables like 'have_dynamic_loading';

+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| have_dynamic_loading | YES |
+----------------------+-------+

使用命令安装模块
mysql>
mysql> INSTALL PLUGIN rpl_semi_sync_master
-> SONAME 'semisync_master.so';

mysql> INSTALL PLUGIN rpl_semi_sync_slave
-> SONAME 'semisync_slave.so';

查看模块状态
mysql>
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATioN_SCHEMA.PLUGINS
WHERE PLUGIN_NAME LIKE '%semi%';
+----------------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+----------------------+---------------+
| rpl_semi_sync_master | ACTIVE |
| rpl_semi_sync_slave | ACTIVE |
+----------------------+---------------+
启用半同步复制
mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;

查看是否启用成功
mysql> show variables like 'rpl_semisync%_enabled';
+------------------------------+-------+
| Variable_name | Value |
+------------------------------+-------+
| rpl_semi_sync_master_enabled | ON |
| rpl_semi_sync_slave_enabled | ON |
+------------------------------+-------+
把配置写进配置文件,使其永久生效

3.1、master51配置:
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

relay_log_purge=off; //不允许自动删除中继日志文件【mysql> set global relay_log_purge=off;】

server_id=51
log-bin=master51
binlog-format="mixed"
:wq
#systemctl restart mysqld
#mysql -uroot -p123abcxyz
mysql> grant replication slave on . to repluser@"%" identified by "123abcxyz";
mysql> show master status;
注意:备用52-53上也要有repluser用户
3.2、备用master52的配置
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

relay_log_purge=off; //不允许自动删除中继日志文件【mysql> set global relay_log_purge=off;】

server_id=52
log-bin=master52
binlog-format="mixed"
:wq
#systemctl restart mysqld
]# ls /var/lib/mysql/master52.*
/var/lib/mysql/master52.000001 /var/lib/mysql/master52.index

#mysql -uroot -p123abcxyz
mysql> change master to
-> master_host="192.168.4.51",
-> master_user="repluser",
-> master_passWord="123abcxyz",
-> master_log_file="master51.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)
mysql> show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

3.3、备用master53的配置
]# 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

relay_log_purge=off; //不允许自动删除中继日志文件【mysql> set global relay_log_purge=off;】

server_id=53
log-bin=master53
binlog-format="mixed"
:wq

]# systemctl restart mysqld
]# ls /var/lib/mysql/master53.*

]# mysql -uroot -p123abcxyz
mysql> change master to master_host="192.168.4.51",master_user="repluser",master_password="123abcxyz",master_log_file="master51.000001",master_log_pos=441;
Query OK, 0 rows affected, 2 warnings (0.05 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

3.4、配置从服务器54

]# vim /etc/my.cnf
[mysqld]
server_id=54
:wq

]# systemctl restart mysqld
]# mysql -uroot -p123abcxyz
mysql> change master to master_host="192.168.4.51",master_user="repluser",master_password="123abcxyz",master_log_file="master51.000001",master_log_pos=441;
Query OK, 0 rows affected, 2 warnings (0.09 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

3.5、配置从服务器55
]# vim /etc/my.cnf
[mysqld]
server_id=55
:wq
]# systemctl restart mysqld

]# mysql -uroot -p123abcxyz
mysql> change master to master_host="192.168.4.51",master_user="repluser",master_password="123abcxyz",master_log_file="master51.000001",master_log_pos=441;
Query OK, 0 rows affected, 2 warnings (0.09 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
[配置51-55主从同步完成]
阿保存在所有数据库服务器51-55上授权监控用户
mysql>
grant all on . to root@'%' identified by '123abcxyz';
++++++++++++++++++++++++++++++++++
准备集群环境:
1 在所有主机上安装共享目录里的perl软件包 (51-56)
公共配置:在所有主机上安装软件软件包
perl-Config-Tiny-2.14-7.el7.noarch.rpm
perl-Mail-Sender-0.8.23-1.el7.noarch.rpm
perl-MIME-Types-1.38-2.el7.noarch.rpm
perl-Email-Date-Format-1.002-15.el7.noarch.rpm
perl-Mail-Sendmail-0.79-21.el7.art.noarch.rpm
perl-Parallel-ForkManager-1.18-2.el7.noarch.rpm
perl-Log-Dispatch-2.41-1.el7.1.noarch.rpm
perl-MIME-Lite-3.030-1.el7.noarch.rpm

]# yum -y install perl-.rpm
2 在所有服务器51-56上安装mha_node软件包
]#cd mha-soft-student/
]#yum -y install perl-DBD-mysql
]#rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
4 在管理主机56上安装mha_manager软件包
]# yum -y install perl-ExtUtils-
perl-CPAN-*

]# tar -zxf mha4mysql-manager-0.56.tar.gz

]# cd mha4mysql-manager-0.56

]# perl Makefile.pl //[需要的依赖包可通过yum list | grep -i 关键字 获取yum -y install perl-ExtUtils- perl-CPAN-]

]# make

]# make install

配置MHA:
在管理主机56上创建管理命令
]# mkdir /root/bin
]#cd mha4mysql-manager-0.56/bin
]#cp * /root/bin/
创建主配置 并编辑
]# mkdir /etc/mha
]#cp mha4mysql-manager-0.56/samples/conf/app1.cnf /etc/mha/
]#vim /etc/mha/app1.cnf
[server default] #服务默认配置
manager_workdir=/etc/mha #工作目录
manager_log=/etc/mha/manager.log #日志文件

master_ip_failover_script=/etc/mha/master_ip_failover #故障切换脚本

#ssh服务用户名及端口
ssh_user=root
ssh_port=22

#主从复制时,从库连接主库的用户名及密码
repl_user=repluser
repl_password=123abcxyz

#监控数据库时,连接服务器的用户及密码
user=root
password=123abcxyz

#指定数据库服务器ip及角色
[server1]
hostname=192.168.4.51
candidate_master=1
port=3306
[server2]
hostname=192.168.4.52
candidate_master=1
port=3306
[server3]
hostname=192.168.4.53
candidate_master=1
port=3306
[server4]
hostname=192.168.4.54
no_master=1
port=3306
[server5]
hostname=192.168.4.55
no_master=1
port=3306
:wq

创建故障切换脚本并编辑[正常在mha4mysql-manager-0.56目录下]
]# cd mha-soft-student
]# cp master_ip_failover /etc/mha/
]# chmod +x /etc/mha/master_ip_failover

]# vim /etc/mha/master_ip_failover
35 my $vip = '192.168.4.100/24'; # Virtual IP
36 my $key = "1";
37 my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip";
38 my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down";
:wq

把脚本中指定的ip地址手动部署在当前主库51 上。
mysql51]# ifconfig eth0:1 192.168.4.100/24
mysql51]# ifconfig eth0:1

启动服务
1 检查ssh连接
mgm56]# masterha_check_ssh --conf=/etc/mha/app1.cnf

2检查主从同步配置
mgm56]# masterha_check_repl --conf=/etc/mha/app1.cnf
3 启动管理服务
mgm56]#
masterha_manager --conf=/etc/mha/app1.cnf \
--remove_dead_master_conf --ignore_last_failover
4查看状态
]# masterha_check_status --conf=/etc/mha/app1.cnf
app1 (pid:9541) is running(0:PING_OK), master:192.168.4.51

测试配置
在客户端50主机上连接vip 192.168.4.100 访问数据库服务
1主库做用户授权
mysql51>create database db3;create table db3.a(id int);
mysql51>grant select,insert on db3. to test@"%" identified
by "123abcxyz";
2客户端使用授权用户连接
client50]# mysql -h292.168.4.100 -utest -p123abcxyz db3
mysql>
mysql> insert into db3.a values(100);
Query OK, 1 row affected (0.07 sec)
mysql> select
from db3.a;

测试高可用配置
把主库51的数据库服务停止
客户端仍然可以连接VIP地址192.168.4.100 访问数据库服务
mysql51]# systemctl stop mysqld

client50]# ping -c 2 192.168.4.100

client50]# mysql -h292.168.4.100 -uplj -p123abcxyz db3
mysql> select @@hostname;
mysql> select * from db3.a;
mysql> insert into db3.a values(101);

在/etc/mha/app1.cnf文件没有了主库51的配置
数据库53 - 55 把 主库地址指向 新选举出的主库ip地址

把坏掉的数据库服务器51 再添加到集群里。
MySQL51]# systemctl start mysqld
MySQL51]# mysql -uroot -p123abcxyz

mysql> change master to master_host="192.168.4.52",
-> master_user="repluser",
-> master_password="123abcxyz",
-> master_log_file="master52.000002", 当前主库日志
-> master_log_pos=1237; 对应的pos点
mysql> start slave;
mysql> show slave status\G; IO 和SQL 进程都是Yes 主机ip 52

mgm56]# vim /etc/mha/app1.cnf
[server1]
candidate_master=1
hostname=192.168.4.51
:wq

mgm56]#
masterha_manager --conf=/etc/mha/app1.cnf \
--remove_dead_master_conf --ignore_last_failover

查看状态
mgm56]# masterha_check_status --conf=/etc/mha/app1.cnf
app1 (pid:9541) is running(0:PING_OK), master:192.168.4.52
把主库52的数据库服务停止后,客户端仍然可以连接
vip地址192.168.4.100 访问MySQL数据库服务.
在/etc/mha/app1.cnf文件没有了主库52的配置
数据库53 - 55 把 主库地址指向 新选举出的主库ip地址[日志最新的51/53]

您可能感兴趣的文档:

--结束END--

本文标题: 配置MySQL高可用集群MHA

本文链接: https://www.lsjlt.com/news/50590.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 配置MySQL高可用集群MHA
    配置MySQL高可用集群+++++++++++++++++++主机角色 :客户端 client50数据库服务器 mysql51 到 mysql55管理主机 mgm56VIP地址 ...
    99+
    2022-10-18
  • MySQL MHA高可用群集的原理与配置
    这篇文章主要为大家详细介绍MySQL MHA高可用群集的原理与配置,文中还介绍了MHA高可用群集的启动方法和查看MHA状态的方法,希望大家通过这篇文章能有所收获。MHA高可用架构部署配置实例一、前言1.1W...
    99+
    2022-10-18
  • MySQL高可用篇之MHA集群
       1 准备工作 1.1 修改主机名 vim /etc/hosts # 添加对应主机 192.168.28.128 mha1 192.168.28.131 mha2 192.168.28.132 mha3 1.2 关闭...
    99+
    2016-10-07
    MySQL高可用篇之MHA集群
  • mysql进阶(三)MHA高可用集群
    简介: 1、MHA目前在MySQL高可用方面是一个相对成熟的解决方案,是MySQL高可用环境下故障切换和主从提升的高可用软件 2、MHA能在短时间内完成故障切换,并且在最大程度上保证数据的一致性,以达到真正...
    99+
    2022-10-18
  • MySQL数据库之MHA高可用群集
    MHA概述 日本DeNA公司youshimaton (现就职于Facebook公司) 开发一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件 MHA的组成 MHA Manager (...
    99+
    2022-10-18
  • MHA实现MySQL高可用集群架构
    转转连接 https://www.cnblogs.com/tanxiaojun/p/10424699.html MHA简介 MHA(Master HighAvailability)目前在MySQL高可...
    99+
    2022-10-18
  • MySQL中MHA高可用集群是怎样的
    本篇文章为大家展示了MySQL中MHA高可用集群是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、什么是MHA传统的主从复制如果主库宕机,其余从库不会自动的...
    99+
    2022-10-18
  • MySQL高可用群集------配置MMM高可用架构
    MMM简介: MMM(Master-Master replication manager for Mysql,Mysql 主主复制管理器)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语...
    99+
    2022-10-18
  • 基于MHA搭建MySQL Replication集群高可用架
    MHA架构介绍 MHA是Master High Availability的缩写,它是目前MySQL高可用方面的一个相对成熟的解决方案,其核心是使用perl语言编写的一组脚本,是一套优秀的作为MySQL高可用...
    99+
    2022-10-18
  • mysql mha高可用配置与详解
    三台mysql网段配置为10.0.0.51 10.0.0.52 10.0.0.53安装mysql1.2.1安装包准备#创建安装包存放目录[root@mysql-db01 ~]# mkdir /home/cc...
    99+
    2022-10-18
  • harbor高可用集群配置
    arbor是由VMWare在Docker Registry的基础之上进行了二次封装,加进去了很多额外程序,而且提供了一个非常漂亮的web界面。说明...
    99+
    2023-06-05
  • keepalived+MHA应该如何实现mysql主从高可用集群
    下文给大家带来关于keepalived+MHA应该如何实现mysql主从高可用集群,感兴趣的话就一起来看看这篇文章吧,相信看完keepalived+MHA应该如何实现mysql主从高可用集群对大家多少有点帮...
    99+
    2022-10-18
  • HaProxy+Keepalived+Mycat高可用群集配置
    概述  本章节主要介绍配置HaProxy+Keepalived高可用群集,Mycat的配置就不在这里做介绍,可以参考我前面写的几篇关于Mycat的文章。 部署图: 配...
    99+
    2022-10-18
  • 如何配置高可用RabbitMQ集群
    这篇文章给大家分享的是有关如何配置高可用RabbitMQ集群的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。作为一名合格的开...
    99+
    2023-06-27
  • Redis高可用集群的搭建配置
    这篇文章将为大家详细讲解有关Redis高可用集群的搭建配置,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Redis的集群主从模型是一种高可用的集群架构。本章主要内容有:高...
    99+
    2022-10-18
  • MHA高可用Mysql
    原文:https://www.cnblogs.com/ckh2014/p/14488889.html...
    99+
    2016-05-17
    MHA高可用Mysql 数据库入门 数据库基础教程
  • MySQL-MMM高可用群集
    一、MMM简介1、MMM(Master-Master replication manager for MySQL,MySQL主主复制管理器)是一套支持双主故障切换和双主日常管理的脚本程序。2、MMM是一套灵...
    99+
    2022-10-18
  • Mysql - 配置Mysql主从复制-keepalived高可用-读写分离集群
    目录 高可用: 为什么需要高可用呢? 高可用的主要作用: keepalived是什么?它用在哪里? 什么是VRRP协议,它的作用是什么? 搭建一个基于keepalived的高可用Mysql主从复制读写分离集群 一、项目中的IP地址配置表:...
    99+
    2023-09-18
    数据库
  • mysql的MHA高可用
    一.MHA简介 作者简介 松信嘉範: MySQL/Linux专家 2001年索尼公司入职 2001年开始使用oracle 2004年开始使用MySQL 2006年9月-2010年8月MySQL从事顾问 2010年-2012年 DeNA 2...
    99+
    2016-04-01
    mysql的MHA高可用
  • MySQL+Amoeba+MySQLMMM高可用群集
    一、MySQL-MMM(Master-Master MySQL) MMM概述 双主故障切换和日常管理的脚本程序 由多个mysql主服务器和多个mysql从服务器组成 虽然叫做双主复制,但是业务上同一时刻只...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作