MHA集群

相关概念

1)MHA

  • 由日本DeNA公司youshimaton开发
  • 优秀的实现MySQL高可用的解决方案
  • 数据库的自动故障切换操作能做到在30s之内完成
  • MHA能确保在故障切换过程中最大限度保证数据的一致性

2)MHA组成

MHA Manager 管理节点

  • 管理所有数据库服务器
  • 可以单独部署在一台独立的机器上
  • 也可以部署在某台数据库服务器上

MHA Node 数据节点

  • 存储数据的MySQL服务器
  • 运行在每台MySQL服务器上

3)MHA工作过程

  • MHA集群架构
    在这里插入图片描述
    由Manager定时探测集群中的master节点,当master故障时,Manager自动将拥有最新数据的slave提升为新的master

准备集群环境

  • 配置所有数据库服务器之间彼此ssh免密登录
  • 配置管理主机ssh免密登录所有数据库服务器

本次案例:

服务器ip服务器角色
192.168.4.51master
192.168.4.52slave1
192.168.4.53slave2
192.168.4.57MHA管理节点
192.168.4.100virtual ip
  • 配置数据库服务器主从半同步模式,从服务器开启binlog日志

所有数据库服务器同样操作,不论主从,因为需要所有服务器都有能担任主服务器的能力

master,slave1,slave2:

vim /etc/my.cnf
server_id=51   #注意id别重复
log_bin=master51   #binlog日志名
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=0   #禁止自动删除中继日志

systemctl restart mysqld
slave1,slave2:
mysql> change master to ...    #设置主服务器
mysql> start slave;   #启动slave进程
mysql> show slave status;  #确认状态

配置管理主机

  • 安装软件:
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
tar -xvf mha4mysql-manager-0.56.tar.gz
cd mha4mysql-manager-0.56
perl Makefile.pl
make
make install
  • 创建并编辑主配置文件:

模板文件:mha4mysql-manager-0.56/samples/conf/app1.cnf

mkdir /etc/mha   #创建工作目录
cp mha4mysql-manager-0.56/sample/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_user=root   #访问ssh服务用户
ssh_port=22   #ssh服务端口

repl_user=repluser   #数据同步授权用户
repl_password=123qqq...A  #密码

user=root   #监控用户
password=123qqq...A   #密码

[server1]   #指定数据库服务器
hostname=192.168.4.51    #ip
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
  • 部署故障切换脚本:

有服务器故障时,该脚本会自动将VIP移动到新的master服务器

cp mha-soft-student/master_ip_failover /etc/mha/
vim /etc/mha/master_ip_failover   #手动添加四行
my $vip = '192.168.4.100/24';  # Virtual IP  #定义VIP地址
my $key = "1"; #定义变量$key
my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip"; #部署vip地址命令
my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down"; #释放vip地址命令
  • master服务器部署VIP:
[root@master] ifconfig eth0:1 192.168.4.100

配置数据库服务器(数据节点)

  • 在所有数据库服务器上安装mha_node
yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm
  • 在所有数据库服务器上授权用户
master:
mysql> grant all on *.* to root@'%' identified by '123qqq...A';  
#授权监控用户,从服务器会自动同步授权
slave1,salve2:
grant replication slave on *.* to repluser@'%' identified by '123qqq...A';  
#因为从服务器成为主服务器时,需要有此用户

启动管理服务

  • 相关命令:安装目录/bin/
命令作用
masterha_check_ssh检查MHA的ssh配置状况
masterha_check_repl检查MySQL复制状况
masterha_manager启动MHA
masterha_check_status检测MHA运行状态
masterha_stop停止MHA

1)测试配置

[root@mha] masterha_check_ssh --conf=/etc/mha/app1.cnf  #测试ssh配置
Sat Jan 11 16:06:40 2020 - [info] All SSH connection tests passed successfully.   #配置正常的输出信息
[root@mha] masterha_check_repl --conf=/etc/mha/app1.cnf   #测试主从
MySQL Replication Health is OK.  #配置正常的输出信息

2)启动

[root@mha] masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover  
#选项1:指定配置文件
#选项2:主库宕机时从配置文件中删除它的配置
#选项3:忽略xxx.health文件,作用为不记录上次故障切换
#启动该服务会占用终端,主服务器宕机该进程会停止
[root@mha] masterha_check_status --conf=/etc/mha/app1.cnf   #查看服务状态
app1 (pid:2803) is running(0:PING_OK), master:192.168.4.51   #正常运行的输出信息

向集群添加新的数据库服务器(修复故障)

  • 启动mysql服务
  • 确保与主服务器数据一致
  • 指定主服务器信息
  • 启动slave进程
  • 查看状态信息
  • MHAmanager配置文件写入该服务器
  • masterha_check_repl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值