30_MHA集群概述 、 部署MHA集群 测试配置

版本:5.7.28

1.准备MHA集群环境
准备6台虚拟机,并按照本节规划配置好IP参数
在这些虚拟机之间实现SSH免密登录
在相应节点上安装好MHA相关的软件包
 
使用6台RHEL 7虚拟机,如图-1所示。准备集群环境,安装依赖包,授权用户,配置ssh密钥对认证登陆,所有节点之间互相以root秘钥对认证登录,管理主机以root密钥对认证登录所有数据节点主机,配置mha集群。

1.1 修改主机名,配置IP
msyql{50..57}
192.168.4.{50..57}
 
1.2 安装包(51-55)
]# tar -xvf mha56.tar.gz
]# cd mha
]# yum -y install perl-*.rpm
 
1.3 在管理主机上安装mha_node 和 mha-manager包(56操作)
]# yum -y install perl-DBD-mysql perl-DBI
]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
 
1.4 配置ssh密钥对认证登陆
所有节点之间可以互相以ssh密钥对方式认证登陆(以51为例)
]# ssh-keygen
]# for i in {50..57}
> do
> ssh-copy-id 192.168.4.$i
> done

]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.4.50 mysql50
192.168.4.51 mysql51
192.168.4.52 mysql52
192.168.4.53 mysql53
192.168.4.54 mysql54
192.168.4.55 mysql55
192.168.4.56 mysql56
192.168.4.57 mysql57

2. 配置MHA集群环境
配置主节点 master51
配置两个备用主节点 master52、master53
配置两个从节点 slave54、slave55
配置管理节点 mgm56
 
2.1 配置mha集群环境
 
2.1.1 安装数据库(51-55同样操作,以51为例)
前面有。
 
2.1.2 master51 数据库服务器配置文件
]# vim /etc/my.cnf(52.53都配置,修改id)
relay_log_purge=off(不自动删除本机的中继日志文件)
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=51
log-bin=mysql51
binlog-format="mixed"
validate_password_policy=0
validate_password_length=6
 
添加主从同步授权用户(51)
必要时:(从库)
mysql> STOP SLAVE;
mysql> RESET SLAVE;

mysql> grant replication slave on  *.*  to [email protected]"%" identified by "123456";
mysql> RESET MASTER;
mysql> show master status;
mysql> SHOW MASTER STATUS\G
mysql> SHOW MASTER STATUS\G
*************************** 1. row ***************************
             File: mysql51.000001
         Position: 154
     Binlog_Do_DB:
 Binlog_Ignore_DB:
Executed_Gtid_Set:
 
2.1.3 master52数据库服务器配置文件(53同样配置)
mysql> RESET MASTER;
mysql> CHANGE MASTER TO
    -> MASTER_HOST=‘192.168.4.51‘,
    -> MASTER_USER=‘repluser‘,
    -> MASTER_PASSWORD=‘123456‘,
    -> MASTER_LOG_FILE=‘mysql51.000001‘,
    -> MASTER_LOG_POS=154;
 
mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G
...
 Slave_IO_Running: Yes
 Slave_SQL_Running: Yes
...
 
2.1.4 slave54 数据库服务器配置文件(55一样)
]# vim /etc/my.cnf
[mysqld]
server_id=54
log-bin=mysql54
binlog-format="mixed"
validate_password_policy=0
validate_password_length=6
 
mysql> RESET MASTER;
mysql> CHANGE MASTER TO
    -> MASTER_HOST=‘192.168.4.51‘,
    -> MASTER_USER=‘repluser‘,
    -> MASTER_PASSWORD=‘123456‘,
    -> MASTER_LOG_FILE=‘mysql51.000001‘,
    -> MASTER_LOG_POS=154;
 
mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G
...
 Slave_IO_Running: Yes
 Slave_SQL_Running: Yes
...
 
2.2 配置管理主机4.56
# yum -y install perl*(root下)
]# cd mha/
mha]# yum -y install *.rpm
mha]# tar -xvf mha4mysql-manager-0.56.tar.gz
mha]# cd mha4mysql-manager-0.56/
0.56]# perl Makefile.PL
0.56]# make && make install
0.56]# cp bin/* /usr/local/bin/
创建工作目录
]# mkdir /etc/mha_manager
建立样板文件
]# cp samples/conf/app1.cnf /etc/mha_manager/
 
]# vim /etc/mha_manager/app1.conf
//编辑主配置文件app1.cnf
[server default]
manager_workdir=/etc/mha_manager
manager_log=/etc/mha_manager/manager.log
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.51    
port=3306
 
[server2]
hostname=192.168.4.52
port=3306            
candidate_master=1
 
[server3]
hostname=192.168.4.53
port=3306
candidate_master=1
 
[server4]
hostname=192.168.4.54
no_master=1
 
[server5]
hostname=192.168.4.55
no_master=1
 
创建故障切换的脚本
]# vim samples/scripts/master_ip_failover
 
 35 my $vip=‘192.168.4.100/24‘;
 36 my $key=‘1‘;
 37 my $ssh_start_vip = ‘/sbin/ifconfig eth0:$key $vip‘;
 38 my $ssh_stop_vip = ‘/sbin/ifconfig eth0:$key down‘;
 39
40 GetOptions(在这上面添加上面几行)
 
]# cp samples/scripts/master_ip_failover /usr/local/bin/
]# chmod +x /usr/local/bin/master_ip_failover
 
51上部署eth0
51 ~]# ifconfig eth0:1 192.168.4.100/24
]# ifconfig eth0:1
eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.4.100  netmask 255.255.255.0  broadcast 192.168.4.255
        ether 52:54:00:d6:46:46  txqueuelen 1000  (Ethernet)
 
3.测试MHA集群
查看MHA集群状态
测试节点之间的SSH登录
测试集群VIP的故障切换功能
 
3.1 验证配置
检查配置环境,在主机 52-55 检查是否有同步数据的用户repluser
mysql> select user,host from mysql.user where user="repluser";
mysql> show grants for [email protected]"%";
 
在51的主机上做root的授权,其他的会同步(如果不做,在验证数据节点的主从同步配置时会出错)
mysql> grant all on *.* to [email protected]"%" identified by "123456";
(50-55查看)
mysql> select user,host from mysql.user where user="root";
+------+-----------+
| user | host      |
+------+-----------+
| root | %         |
| root | localhost |
+------+-----------+
 
验证ssh 免密登陆数据节点主机(56)
-0.56]# cd /usr/local/bin/
bin]# masterha_check_ssh --conf=/etc/mha_manager/app1.conf
...
All SSH connection tests passed successfully.
 
3.2 启动管理服务MHA_Manager
--remove_dead_master_conf //删除宕机主库配置
--ignore_last_failover    //忽略xxx.health文件
bin]# masterha_manager --conf=/etc/mha_manager/app1.conf \  
--remove_dead_master_conf --ignore_last_failover
 
查看状态(另开一个终端)
]# masterha_check_status --conf=/etc/mha_manager/app1.conf
停止服务
]# masterha_stop --conf=/etc/mha_manager/app1.cnf
 
3.3 测试故障转移
启动服务
bin]# masterha_manager --conf=/etc/mha_manager/app1.conf \
--remove_dead_master_conf --ignore_last_failover
查看状态
]# masterha_check_status --conf=/etc/mha_manager/app1.conf
...master:192.168.4.52
 
验证数据节点的主从同步配置
bin]# masterha_check_repl --conf=/etc/mha_manager/app1.conf

原文地址:https://www.cnblogs.com/luwei0915/p/12258326.html

时间: 2024-08-03 23:37:12

30_MHA集群概述 、 部署MHA集群 测试配置的相关文章

同一个Docker swarm集群中部署多版本的测试环境

先介绍下用到的技术 Docker swarm: Docker官方的集群管理工具,相比kubernetes更加简单,容易入门.https://docs.docker.com/engine/swarm/ Traefik: 一个现代化的反向代理工具,原生支持Docker swarm模式,可以实现swarm的动态代理.https://docs.traefik.io/user-guide/swarm-mode/ 下图展示主要的思路: 在Docker swarm中创建某个测试版本service时,通过设置s

二十八. Ceph概述 部署Ceph集群 Ceph块存储

client:192.168.4.10 node1 :192.168.4.11 ndoe2 :192.168.4.12 node3 :192.168.4.13 1.实验环境 准备四台KVM虚拟机,其三台作为存储集群节点,一台安装为客户端,实现如下功能: 创建1台客户端虚拟机 创建3台存储集群虚拟机 配置主机名.IP地址.YUM源 修改所有主机的主机名 配置无密码SSH连接 配置NTP时间同步 创建虚拟机磁盘 1.1 五台机器(包括真机)配置yum源 1.1.1 全部搭建ftp服务 1.1.2 配

Cluster基础(二):ipvsadm命令用法、部署LVS-NAT集群、部署LVS-DR集群

一.ipvsadm命令用法 目标: 准备一台Linux服务器,安装ipvsadm软件包,练习使用ipvsadm命令,实现如下功能: 使用命令添加基于TCP一些的集群服务 在集群中添加若干台后端真实服务器 实现同一客户端访问,调度器分配固定服务器 会使用ipvsadm实现规则的增.删.改 保存ipvsadm规则 方案: 安装ipvsadm软件包,关于ipvsadm的用法可以参考man ipvsadm资料.常用ipvsadm命令语法格式如下表所示. 步骤: 步骤一:使用命令增.删.改LVS集群规则

docker swarm英文文档学习-8-在集群中部署服务

Deploy services to a swarm在集群中部署服务 集群服务使用声明式模型,这意味着你需要定义服务的所需状态,并依赖Docker来维护该状态.该状态包括以下信息(但不限于): 应该运行服务容器的镜像名称和标记有多少容器参与服务是否有任何端口暴露给集群之外的客户端当Docker启动时,服务是否应该自动启动重启服务时发生的特定行为(例如是否使用滚动重启)服务可以运行的节点的特征(例如资源约束和位置首选项)有关群模式的概述,请参见 Swarm mode key concepts.有关

flink部署操作-flink standalone集群安装部署

flink集群安装部署 standalone集群模式 必须依赖 必须的软件 JAVA_HOME配置 flink安装 配置flink 启动flink 添加Jobmanager/taskmanager 实例到集群 个人真实环境实践安装步骤 必须依赖 必须的软件 flink运行在所有类unix环境中,例如:linux.mac.或者cygwin,并且集群由一个master节点和一个或者多个worker节点.在你开始安装系统之前,确保你有在每个节点上安装以下软件. java 1.8.x或者更高 ssh 如

Step By Step 搭建 MySql MHA 集群

关于MHA ?? MHA(Master High Availability)是一款开源的mysql高可用程序,目前在mysql高可用方面是一个相对成熟的解决方案.MHA 搭建的前提是MySQL集群中已经搭建了MySql Replication环境,有了Master/Slave节点.MHA的主要作用就是监测到Master节点故障时会提升主从复制环境中拥有最新数据的Slave节点成为新的master节点.同时,在切换master期间,MHA会通过从其他的Slave节点来获取额外的信息来避免一致性的问

Storm笔记整理(三):Storm集群安装部署与Topology作业提交

[TOC] Storm分布式集群安装部署 概述 Storm集群表面类似Hadoop集群.但在Hadoop上你运行的是"MapReduce jobs",在Storm上你运行的是"topologies"."Jobs"和"topologies"是大不同的,一个关键不同是一个MapReduce的Job最终会结束,而一个topology永远处理消息(或直到你kill它). Storm集群有两种节点:控制(master)节点和工作者(wo

mysql MHA集群的搭建

MHA集群介绍与安装 MHA ( Master High Availability ) – 由日本 DeNA 公司 youshimaton (现就职于 Facebook 公司)开发 – 是一套优秀的作为 MySQL 高可用性环境下故障切换和主从提升的高可用软件. – 目前在 MySQL 高可用方面是一个相对成熟的解决方案. – 在 MySQL 故障切换过程中, MHA 能做到在 0~30 秒之内自动完成数据库的故障切换操作 – 并且在进行故障切换的过程中, MHA 能在最大程度上保证数据的一致性

使用Docker部署RabbitMQ集群

概述 本文重点介绍的Docker的使用,以及如何部署RabbitMQ集群,最基础的Docker安装,本文不做过多的描述,读者可以自行度娘. Windows10上Docker的安装 因为本人用的是Windows系统,所有推荐一个不错的安装文章,详见:https://blog.csdn.net/xiaoping0915/article/details/75094857 注意:设置阿里云Docker Hub加速,配置Registry mirrors地址"https://j0andt2p.mirror.