我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【赵强老师】MySQL高可用架构:MHA

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【赵强老师】MySQL高可用架构:MHA

【赵强老师】MySQL高可用架构:MHA

MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating master failover 功能。MHA 在监控到 master 节点故障时,会提升其中拥有最新数据的 slave 节点成为新的master 节点,在此期间,MHA 会通过于其它从节点获取额外信息来避免一致性方面的问题。MHA 还提供了 master 节点的在线切换功能,即按需切换 master/slave 节点。
MHA 是由日本人 yoshinorim(原就职于DeNA现就职于FaceBook)开发的比较成熟的 MySQL 高可用方案。MHA 能够在30秒内实现故障切换,并能在故障切换中,最大可能的保证数据一致性。目前淘宝也正在开发相似产品 TMHA, 目前已支持一主一从。

一、MHA的组成

(一)MHA中的角色

MHA 服务有两种角色, MHA Manager(管理节点)和 MHA Node(数据节点):

  • MHA Manager:通常单独部署在一台独立机器上管理多个 master/slave 集群(组),每个master/slave 集群称作一个application,用来管理统筹整个集群。
  • MHA Node:运行在每台 MySQL 服务器上(master/slave/manager),它通过监控具备解析和清理 logs 功能的脚本来加快故障转移。主要是接收管理节点所发出指令的代理,代理需要运行在每一个 mysql 节点上。简单讲node就是用来收集从节点服务器上所生成的bin-log。对比打算提升为新的主节点之上的从节点的是否拥有并完成操作,如果没有发给新主节点在本地应用后提升为主节点。

(二)MHA提供的工具

MHA会提供诸多工具程序,其常见的如下所示:

  • Manager节点

  • Node节点(这些工具通常由MHA Manager的脚本触发,无需人为操作)

二、MHA的工作原理

  • 从宕机崩溃的master保存二进制日志事件(binlog events);
  • 识别含有最新更新的 slave ;
  • 应用差异的中继日志(relay log) 到其他 slave ;
  • 应用从 master 保存的二进制日志事件(binlog events);
  • 提升一个 slave 为新 master ;
  • 使用其他的 slave 连接新的 master 进行复制。

三、部署MHA

(一)准备实验环境

  • 三台主机:mysql111、mysql112、mysql113
  • 操作系统:CentOS
  • 配置主机名(/etc/hosts)
  • 配置免密码登录
  • 每台主机安装MySQL

(二)搭建主从环境

  • 每台MySQL开启binlog,设置server-id
vi /etc/my.cnf
log-bin=mysql-binlog
server-id=1           (注意:每台MySQL设置不同的server-id)

show variables like "%log_bin%";
  • 在所有机器上,创建主从复制的账号
create user "repl"@"192.168.79.%" identified by "Welcome_1";
grant replication slave on *.* to "repl"@"192.168.79.%";
flush privileges;
  • 在所有机器上,创建管理账号
create user "myadmin"@"192.168.79.%" identified by "Welcome_1";
grant all privileges on *.* to "myadmin"@"192.168.79.%";
flush privileges;
  • 在主库和从库上,启用GTID
set @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;
set @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;
set @@GLOBAL.GTID_MODE = ON_PERMISSIVE;
set @@GLOBAL.GTID_MODE = ON;

 参数说明:

GTID是MySQL 5.6的新特性,其全称是Global Transaction Identifier,可简化MySQL的主从切换以及Failover。GTID用于在binlog中唯一标识一个事务。当事务提交时,MySQL Server在写binlog的时候,会先写一个特殊的Binlog Event,类型为GTID_Event,指定下一个事务的GTID,然后再写事务的Binlog。主从同步时GTID_Event和事务的Binlog都会传递到从库,从库在执行的时候也是用同样的GTID写binlog,这样主从同步以后,就可通过GTID确定从库同步到的位置了。也就是说,无论是级联情况,还是一主多从情况,都可以通过GTID自动找点儿,而无需像之前那样通过File_name和File_position找点儿了。

  • 在从库上分别配置主从复制命令并开启主从同步
change master to master_host="mysql111",master_user="repl",
master_password="Welcome_1",master_auto_position=1;

start slave;
  • 在从库上查看主从复制的状态
show slave statusG;

  • 测试主从复制

(三)安装MHA

  • 所有节点安装node软件依赖包和node软件
yum -y install perl-DBD-MySQL 
rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm
  • 在mysql111上安装安装manager软件依赖包
yum install -y perl-Config-Tiny 
yum install -y epel-release 
yum install -y perl-Log-Dispatch 
yum install -y perl-Parallel-ForkManager 
yum install -y perl-Time-HiRes
  • 在mysql111上安装安装manager软件
rpm -ivh mha4mysql-manager-0.58-0.el7.centos.noarch.rpm

(四)创建Manager的配置文件

#创建配置文件目录、日志目录
mkdir -p /etc/mha
mkdir -p /var/log/mha/log

#编辑mha配置文件 vi /etc/mha/mha.cnf
[server default]
manager_log=/var/log/mha/log/manager
manager_workdir=/var/log/mha/log
master_binlog_dir=/var/lib/mysql
user=myadmin
password=Welcome_1
ping_interval=2
repl_user=repl
repl_password=Welcome_1
ssh_user=root
[server1]
hostname=mysql111
port=3306
[server2]
hostname=mysql112
port=3306
[server3]
hostname=mysql113
port=3306

(五)检查状态,并开启MHA

  • 检查互信
masterha_check_ssh --conf=/etc/mha/mha.cnf

  • 检查主从复制状态
masterha_check_repl --conf=/etc/mha/mha.cnf

  • 开启MHA-manager
nohup masterha_manager --conf=/etc/mha/mha.cnf > /var/log/mha/log/manager.log < /dev/null 2>&1 &
  • 查看MHA状态
masterha_check_status --conf=/etc/mha/mha.cnf

  • 测试HA高可用的自动切换
在mysql111上,执行shutdown操作
mysqladmin -uroot -pWelcome_1 shutdown

MHA会自动进行主从切换。切换完成后,MHA进程会自动停止运行。

在mysql112和mysql113上观察,执行下面的语句:
show slave statusG;
 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【赵强老师】MySQL高可用架构:MHA

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

下载Word文档

猜你喜欢

【赵强老师】MySQL高可用架构:MHA

MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating master failover 功能。MHA 在监控到 master 节点故障时,会提升其中拥有最新数据的 slave 节点成为新的
【赵强老师】MySQL高可用架构:MHA
2019-11-27

【赵强老师】Kafka的体系架构

一、什么是Kafka?数据工程中最具挑战性的部分之一是如何从不同点收集和传输大量数据到分布式系统进行处理和分析。需要通过消息队列正确地分离大量数据,因为如果一部分数据无法传送,则可以在系统恢复时传输和分析其他数据。有两种消息排队,对于上述目的,它们都是可靠的和
【赵强老师】Kafka的体系架构
2021-01-25

【赵强老师】HBase的体系架构

一、什么是HBase?HBase是一个基于HDFS之上的分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“BigTable大表”,即:把所有的数据存入一张表中。就像Bigtable利用了Google文件系统(File S
【赵强老师】HBase的体系架构
2021-10-26

MySQL高可用架构之MHA

一、MHA介绍  MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主
MySQL高可用架构之MHA
2019-01-11

MySQL高可用架构-MMM、MHA、MGR、PXC

主从复制如何工作在主库把数据记录到binlog(二进制日志)。备库开IO线程把binlog复制到自己的relaylog(中继日志)。备库读取中继日志,重放到备库上。半同步复制半同步复制可以确保备库拥有主库数据的拷贝,减少了数据丢失的危险。半同步复制在提交过程中
MySQL高可用架构-MMM、MHA、MGR、PXC
2015-08-21

【赵强老师】史上最详细的PostgreSQL体系架构介绍

PostgreSQL是最像Oracle的开源数据库,我们可以拿Oracle来比较学习它的体系结构,比较容易理解。PostgreSQL的主要结构如下:一、存储结构PG数据存储结构分为:逻辑存储结构和物理存储存储。其中:逻辑存储结构是内部的组织和管理数据的方式;物
【赵强老师】史上最详细的PostgreSQL体系架构介绍
2016-05-01

MySQL高可用之MHA架构企业实战

?????? 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10年DBA工作经验 一位上进心十足的【大数据领域博主】!??? 中国DBA联盟(ACDU)成员,目前从事DBA及程序编程 擅长主流数据Orac
2023-08-17

MySQL高可用架构-MMM、MHA、MGR、PXC(补小结,laoqi)

小结MMM是MHA是MGR是主从复制如何工作在主库把数据记录到binlog(二进制日志)。备库开IO线程把binlog复制到自己的relaylog(中继日志)。备库读取中继日志,重放到备库上。半同步复制半同步复制可以确保备库拥有主库数据的拷贝,减少了数据丢失的
MySQL高可用架构-MMM、MHA、MGR、PXC(补小结,laoqi)
2019-01-17

Mysql 高可用架构

MMM方案 即使主从复制中间出现异常情况,MMM记录了详细同步日志,重启服务后会从错误的地方继续同步,不会丢失数据; Mysql经典架构方案 此方案做了读写分离,写入是通过访问映射VIP地址,写入到主服务器,再通过vip实现主从同步保持数据一致;LVS+k
Mysql 高可用架构
2020-03-29

编程热搜

目录