MySQL高可用之MHA配置
本文简单介绍了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程序停止运行,退出前台。
MySQL高可用之MHA配置的更多相关文章
- mysql高可用架构 -> MHA配置binlog-server-06
前期准备 1.准备一台新的mysql实例(db03),GTID必须开启. 2.将来binlog接收目录,不能和主库binlog目录一样 停止mha masterha_stop --conf=/etc/ ...
- mysql高可用架构 -> MHA配置VIP漂移-05
VIP漂移的两种方式 1)通过keepalived的方式,管理虚拟IP的漂移 2)通过MHA自带脚本方式,管理虚拟IP的漂移 MHA脚本方式 虚拟ip漂移的脚本下载地址 -> wget http ...
- mysql高可用方案MHA介绍
mysql高可用方案MHA介绍 概述 MHA是一位日本MySQL大牛用Perl写的一套MySQL故障切换方案,来保证数据库系统的高可用.在宕机的时间内(通常10-30秒内),完成故障切换,部署MHA, ...
- MySQL高可用方案MHA自动Failover与手动Failover的实践及原理
集群信息 角色 IP地址 ServerID 类型 Master ...
- MySQL高可用方案--MHA部署及故障转移
架构设计及必要配置 主机环境 IP 主机名 担任角色 192.168.192.128 node_master MySQL-Master| ...
- MySQL高可用方案MHA在线切换的步骤及原理
在日常工作中,会碰到如下的场景,如mysql数据库升级,主服务器硬件升级等,这个时候就需要将写操作切换到另外一台服务器上,那么如何进行在线切换呢?同时,要求切换过程短,对业务的影响比较小. MHA就提 ...
- 【DB宝42】MySQL高可用架构MHA+ProxySQL实现读写分离和负载均衡
目录 一.MHA+ProxySQL架构 二.快速搭建MHA环境 2.1 下载MHA镜像 2.2 编辑yml文件,创建MHA相关容器 2.3 安装docker-compose软件(若已安装,可忽略) 2 ...
- MySQL高可用之MHA (转)
MySQL高可用之MHA MHA简介 MHA是由日本人yoshinorim(原就职于DeNA现就职于FaceBook)开发的比较成熟的MySQL高可用方案.MHA能够在30秒内实现故障切换,并能在故障 ...
- MySQL高可用之MHA的搭建 转
http://www.cnblogs.com/muhu/p/4045780.html http://www.cnblogs.com/gomysql/p/3675429.html http://www ...
随机推荐
- linux中systemctl详细理解及常用命令
linux中systemctl详细理解及常用命令 https://blog.csdn.net/skh2015java/article/details/94012643 一.systemctl理解 Li ...
- The entity type XXX is not part of the model for the current context.
今天遇到了一个奇葩问题,虽然解决了,但还是一脸懵,先附赠一下别人的解决方案:https://www.cnblogs.com/zwjaaron/archive/2012/06/08/2541430.ht ...
- Googletest Primer
Googletest Primer 原文地址:https://github.com/google/googletest/blob/master/googletest/docs/primer.md In ...
- AcWing STL初步学习
vector, 变长数组,倍增的思想 size() 返回元素个数 empty() 返回是否为空 clear() 清空 front()/back() push_back()/pop_back() beg ...
- WLC-Virtual Interface IP
关于思科WLC,有很多接口类型,如下所示,这里主要针对Virtual IP记录一些最佳实践建议. 思科WLC的Virtual IP地址的作用: • Mobility management • DHCP ...
- HL7解析器
最近做了关于医疗的项目,用了HL7协议,以下是解析的代码: HL7解析器: using System; using System.Text; using System.Xml; using Syste ...
- MyBatis-Spring整合之方式3
通过注解整合 1.在UserDao同级目录下新建接口UserMapper,内容如下: public interface UserMapper { @Select("select * from ...
- 普及C组第一题(8.1)
1999. [2015.8.6普及组模拟赛]Wexley接苹果(apple) 题目: Wexley最近发现了一个古老的屏幕游戏.游戏的屏幕被划分成n列.在屏幕的底端,有一个宽为m列的篮子(m<n ...
- Python3 post 嵌套json
目录 python3 post json burpsuite 抓取 python requests 数据包 小结 python3 post json 前些天python3 post出现的小问题做下记录 ...
- SpringBoot+mongoDB实现id自增
这段时间给朋友做了一个微信小程序,顺便练习一下spring boot,虽然项目使用的是JPA+MySQL,但是好奇尝试了一下MongoDB实现自增ID,虽然MongoDB很少有自增ID的需求(在分布式 ...