本文简单介绍了MySQL的高可用实现方式之一的MHA

MHA:Master High Availability,对主节点进行监控,可实现自动故障转移至其它从节点;通过提升某一从节点为新的主节点,基于主从复制实现,还需要客户端配合实现,目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库。官网:https://code.google.com/archive/p/mysql-master-ha/

MHA工作原理:

  1、 从宕机崩溃的master保存二进制日志事件(binlog events)

  2 、识别含有最新更新的slave

3、 应用差异的中继日志(relay log)到其他的slave

4 、应用从master保存的二进制日志事件(binlog events)

5、 提升一个slave为新的master

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

MHA配置方法

1、准备安装环境

  -  MHA服务器1台,CentOS7

  -  主库1台,CentOS7,192.168.1.100

  -  从库1台,CentOS7,192.168.1.101

  -  从库1台,CentOS7,192.168.1.102

  从官网下载安装包

    1、mha4mysql-manager-0.55-0.el6.noarch.rpm

    2、mha4mysql-node-0.54-0.el6.noarch.rpm

2、安装软件包

  MHA服务器需要安装mha的node包和manager包

    # yum -y install mha4mysql-node-0.54-0.el6.noarch.rpm

    # yum -y install mha4mysql-manager-0.55-0.el6.noarch.rpm

  主库,及所有从库服务器安装mha的node包,并且安装数据库,这里采用CentOS7默认的mairadb数据库

    # yum-y install mha4mysql-node-0.54-0.el6.noarch.rpm

    # yum -y install mariadb-server

    

3、服务器之间ssh免密登录

  MHA,主库,从库四台服务器之间实现两两免密登录。参考链接

4、配置主从复制

主库192.168.1.100
、修改配置文件
#vim /etc/my.cnf
[mysqld]
log-bin
server_id=100
skip_name_resolve=1
、启动mariadb
# systemctl start mariadb 、登录数据库添加主从复制的账户
mysql >grant replication slave on *.* to repluser@'192.168.1.%' identified by ‘123456';
================================================== 从库192.168.1.101
、修改配置文件
#vim /etc/my.cnf
server_id=101
log-bin
read_only
relay_log_purge=0
skip_name_resolve=1 、启动mariadb
# systemctl start mariadb 3、开启主从模式:注意二进制日志的位置
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='repluser',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='mariadb-bin.000001',
MASTER_LOG_POS=245;
mysql> start slave;
================================================== 从库192.168.1.102
、修改配置文件
#vim /etc/my.cnf
server_id=102
log-bin
read_only
relay_log_purge=0
skip_name_resolve=1 、启动mariadb
# systemctl start mariadb 、开启主从模式:注意二进制日志的位置
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='repluser',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='mariadb-bin.000001',
MASTER_LOG_POS=245;
mysql> start slave;

5、配置MHA

在主库192.168.1.100上创建mha管理用户
mysql>grant all on *.* to mhauser@'192.168.1.%’identified by '111111';
========================================================================== 在MHA服务器上
1、修改配置文件
# vim /etc/mha/mha.cnf
[server default]
user=mhauser
password=111111
manager_workdir=/data/mastermha/app1/
manager_log=/data/mastermha/app1/manager.log
remote_workdir=/data/mastermha/app1/
ssh_user=root
repl_user=repluser
repl_password=123456
ping_interval=1 [server1]
hostname=192.168.1.200
candidate_master=1
[server2]
hostname=192.168.1.201
candidate_master=1
[server3]
hostname=192.168.1.202 2、MHA检测验证
# masterha_check_ssh --conf=/etc/mha/mha.cnf
# masterha_check_repl --conf=/etc/mha/mha.cnf 3、启动MHA服务
# masterha_manager --conf=/etc/mha/mha.cnf

注意:MHA服务一旦启动后会占据前台,只有当主库出现故障的时候,MHA生效,自动提升一台从库为主库。此时MHA程序停止运行,退出前台。

最新文章

  1. 嵌入式Linux驱动学习之路(十一)按键驱动-中断机制
  2. C#:生成短网址
  3. C#并行编程-线程同步原语
  4. Fedora 23 配置
  5. A class for global logging
  6. C++ Primer 学习笔记_98_特殊的工具和技术 --优化内存分配
  7. 【高斯消元】兼 【期望dp】例题
  8. 2019-04-18 Beetl模板学习
  9. 分享几个 SpringBoot 实用的小技巧
  10. [Be a Coding Plasterer] Components 1:get Basic Things
  11. fg和bg前后台调度命令
  12. 为什么要用日志框架 Logback 基本使用
  13. [jQ/PHP]使用JS数组储值的两种情况(提交PHP处理)
  14. [Robot Framework] 怎么做数学运算?
  15. Chrome浏览器缓存查看工具-ChromeCacheView
  16. iOS 为什么使用xcode8上传app包到appStore无法构建版本
  17. 170628、springboot编程之Druid数据源和监控配置一
  18. day13(JSTL和自定义标签&MVC模型&javaweb三层框架)
  19. 利用|,&,^,~,<<,>>>写出高效艺术的代码
  20. 1-16-2 LVM管理和ssm存储管理器使用&磁盘配额

热门文章

  1. codeforces 962F.simple cycle(tarjan/点双连通分量)
  2. 8.10-Day2T3 镇守府
  3. ubuuntu截图
  4. bugku 隐写2
  5. CGMH:Constrained Sentence Generation by Metropolis-Hastings Sampling解读
  6. Win2012或Win2016安装网卡
  7. JavaScript对象,函数,作用域
  8. pwnable.kr-flag-Writeup
  9. shell脚本自学之路
  10. 2019 EIS高校安全运维赛 misc webshell