今天继续给大家介绍MySQL的相关知识,本文主要内容是MySQL MHA高可用的实战配置。

一、实战环境

使用Vmware虚拟机,搭建实战场景下MySQL MHA高可用架构,一共使用4态虚拟机,相关信息如下:
Manager:192.168.136.11
Master:192.168.136.12
Slave1:192.168.136.13
Slave2:192.168.136.14

二、软件安装

MySQL MHA的安装需要一些依赖数据包,因此,在进行软件安装时,请确保系统上已经安装配置好了EPEL的源。

(一)MHA数据节点安装

在MHA数据节点上,首先安装MySQL MHA的依赖环境,执行命令:

yum install -y perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager --skip-broken

之后,上传在官网上下载的RPM数据节点安装包,上传后安装即可。

(二)MHA管理节点安装

在MHA管理节点上,首先也是安装MySQL MHA的依赖环境,但是在管理节点上的依赖包要比数据节点多4个,执行命令:

yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker perl-CPAN -y

之后,MHA的管理节点要首先安装MHA的数据节点,然后再安装管理节点的数据包,因此,我们要在官网上下载MHA管理节点的安装包,并且将其与数据节点的安装包同时传送到设备上去,先安装MHA数据节点的安装包,然后再安装MHA管理节点的安装包,这样,管理节点就也配置完成了。

三、SSH免密登录配置

之后,由于MHA的manager节点需要在各个数据库之间互相登录,因此,我们需要配置四台设备两两之间的SSH之间互相配置SSH免密登录,执行命令:

ssh-keygen -t rsa

可以在本地生成密钥,过程如下所示:

之后,需要执行命令:

ssh-copy-id 【目标IP地址】

将之前生成的SSH密钥,传递给目标设备上。

四、搭建MySQL主从同步

在完成上述步骤之后,我们接下来就可以搭建MySQL主从同步了,过程和步骤如下所示:

(一)MySQL主库配置

在MySQL主库上,需要声明二进制日志名称、server-id以及允许同步和不允许同步的数据库,如下所示:

log-bin=master
server-id=1
binlog-do-db=mha
binlog-ignore-db=mysql
validate-password=off

配置完成后如下所示:

(二)MySQL从库配置

与之前配置的MySQL主从同步不同,在本次配置中,MySQL从库也需要指定允许同步的和不允许同步的数据库,并且必须与MySQL主库保持一致,否则MHA在检查时会报错,其次,因为从库有可能被提升为主库,因此也必须要开启二进制日志,最后,为了使得MySQL从库也记录MySQL主库的同步的日志,配置文件如下所示:

server-id=2
log-bin=slave1
binlog-do-db=mha
binlog-ignore-db=mysql
log_slave_updates=1
validate-password=off

最终配置文件如下图所示:

五、配置MHA

在完成上述配置,并且在两个MySQL从库上都看到两个进程yes之后,我们就可以进行MHA的配置了,首先,我们要先创建MySQL MHA的配置文件和日志文件,执行命令:

mkdir -p /var/mysql_mha

创建MHA的工作目录,之后,创建MySQL的配置文件/etc/mysql_mha.conf,并写入如下内容:

[server default]
manager_log=/var/log/mysql_mha.log
manager_workdir=/var/mysql_mha
master_binlog_dir=/var/lib/mysql
password=mha
ping_interval=1
remote_workdir=/tmp
repl_password=mha
repl_user=root
ssh_user=root
user=mha[server1]
hostname=192.168.136.11
port=3306[server2]
candidate_master=1
hostname=192.168.136.13
port=3306[server3]
hostname=192.168.136.14
port=3306

上述文件各参数作用如下:
在[server default]模块中,manager_workerdir主要用于设置manager的工作目录;manager_log用于设置MHA的日志文件;master_binlog_dir用于指定MySQL主库上二进制文件的存放位置,以便MHA找到二进制日志,这里即是MySQL的工作目录;user和password是MHA用于监控各个MySQL设备所使用的用户名和密码;remote_workdir为远端mysql在发生切换时二进制日志的保存位置,repl_user和repl_password为在进行主从同步时的用户名和密码;ssh_user为设置SSH登录时的用户名。
在各个[server]模块中,hostname为设备的IP地址,port为设备的端口号。
在完成上述操作后,还要在两个MySQL从库设备上,分别执行如下SQL命令:

set global read_only=1
set global relay_log_purge=0

第一条命令为将该MySQL数据库设置为只读,之所以采用命令执行的方式而不是写入配置文件中,是考虑到该MySQL数据库有可能将来升级为MySQL主库,因此方便修改,第二条命令是设置MySQL从库的中继日志不自动清空。在默认情况下,该功能打开,即在SQL进程完成中继日志的读取后,会自动清空中继日志的内容,但是,在MHA场景下,由于该设备的中继日志有可能在故障转移时用于数据恢复,因此必须保留数据信息,不可以被清空,因此会执行第二条命令将其关闭。
同时,还要在MySQL三台主、从设备上配置MHA的管理用户信息,即授权mha用户,验证密码为mha,该信息必须与MHA管理节点的配置相符合。在三台设备上执行的命令为:

grant all on *.* to 'mha'@'192.168.136.%' identified by 'mha';

六、效果验证

在上述所有过程都完成后,我们接下来就可以开启MHA监控功能,并且验证我们配置的结果了。
首先,我们来检查一下SSH设置是否正常,执行命令:

masterha_check_ssh --conf=/etc/mysql_mha.conf

–conf参数的文件是刚才我们在MHA管理节点上的配置文件。
执行结果如下所示:

最后发现有“ALL SSH connection tests passed successfully”,即说明SSH链接没有问题,如果存在故障,请返回第三章进行配置。
在SSH链接正常之后,我们需要检验MySQL主从同步复制的情况,执行命令:

masterha_check_repl --conf=/etc/mysql_mha.sql

执行结果如下:

可以看到,最终如果是“MySQL Replication Health is OK”,则表示检查成功!
上述操作完成后,我们接下来开启MHA,执行命令:

nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &

–remove_dead_master_conf参数表示当发生主从切换后,老的MySQL主库的IP会从配置文件中移除;–manager_log指名了日志存放位置。在缺省状态下,如果MHA检测到连续宕机,且两次宕机的时间间隔不足8小时,则不会进行故障转移。事实上,每次在设备宕机后,MHA都会生成一个文件来进行表示,–ignore_fast_failover参数表示忽略上一次宕机产生的文件,使得该默认配置不生效。
由于我们最后使用了&符号进行后台运行,因此,我们在执行该命令后,会得到一个进程号。
之后,我们可以查看MHA架构的状态,执行命令:

masterha_check_status --conf=/etc/mysql_mha.conf

执行结果如下:

可以看出,最后为msql_mha is running,说明我们的MySQL MHA架构启动成功!
最后,我们来模拟以下MySQL主库发生故障,来检验一下MHA的作用。人工停止MySQL主库相关配置,等待一段时间后,发现其中一台设备(192.168.136.13)自动称为主库,如下所示:

与此同时,另一台设备自动指向新的MySQL主库,如下所示:

最后,我们来查看一下MHA管理节点上的日志,发现有如下的切换记录:

可以看出,MHA架构作用发挥正常,配置成功!
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

MySQL MHA详解(二)——实战配置相关推荐

  1. pandas读写MySQL数据库详解及实战

    pandas读写MySQL数据库详解及实战 SQLAlchemy是Python中最有名的ORM工具. 关于ORM: 全称Object Relational Mapping(对象关系映射). 特点是操纵 ...

  2. Linux DNS服务详解——DNS实战配置

    今天继续给大家介绍Linux基础知识,本文主要内容是DNS的实战配置. 一.DNS安装与配置文件 如果采用YUM的安装方式,DNS设计到三个包,相关命令如下: yum install -y bind ...

  3. Mysql主从复制详解和实战

    一.主从复制原理 1.1 基本介绍 MySQL 内建的复制功能是构建大型,高性能应用程序的基础.将 MySQL 的 数亿分布到到多个系统上去,这种分步的机制,是通过将 MySQL 的某一台主机的数据复 ...

  4. haproxy mysql配置文件详解_HAProxy基础配置-haproxy的配置文件说明

    defaults [] 默认配置项,针对以下的frontend.backend和lsiten生效,可以多个name. defaults常用的配置参数: option redispatch 当serve ...

  5. 跟我学python之mysql操作详解 一、查询操作

    在python中,我们使用PyMySQL来操作mysql. 一.安装PyMySQL: 使用pip进行安装,命令为: pip install PyMySQL 二.在进行操作之前,首先要打开本机的mysq ...

  6. catboost参数详解及实战(强推)

    目录 一 参数详解 二 实战 1 导包 2 数据读取 3 贷后y标签分布,逾期率20% 4 预处理 5 特征分布 6 特征分组 7 初始参数 8 catboost建模函数 9 初始模型 10 特征重要 ...

  7. MySQL数据库,从入门到精通:第十二篇——MySQL数据类型详解

    MySQL数据库,从入门到精通:第十二篇--MySQL数据类型详解 第 12 章_MySQL数据类型精讲 1. MySQL中的数据类型 2. 整数类型 2. 1 类型介绍 2. 2 可选属性 2. 2 ...

  8. from mysql partition select_爬虫(九十九)mysql详解二

    **mysql中字段的常见类型: ** 二进制位 bit(长度) tinyint[(长度)] [有无符号unsigned] [位数低于长度时候是否填充零zerofill] 有符号表示范围-128 ~ ...

  9. Mysql高手系列 - 第20篇:异常捕获及处理详解(实战经验)

    Mysql高手系列 - 第20篇:异常捕获及处理详解(实战经验) 参考文章: (1)Mysql高手系列 - 第20篇:异常捕获及处理详解(实战经验) (2)https://www.cnblogs.co ...

  10. (!详解 Pytorch实战:①)kaggle猫狗数据集二分类:加载(集成/自定义)数据集

    这系列的文章是我对Pytorch入门之后的一个总结,特别是对数据集生成加载这一块加强学习 另外,这里有一些比较常用的数据集,大家可以进行下载: 需要注意的是,本篇文章使用的PyTorch的版本是v0. ...

最新文章

  1. vue + element +tp5 个人博客后台管理小记
  2. mysql超时失效c3p0_解决c3p0和MySQL集成情况下,连接长时间闲置后重新使用时报错的问题...
  3. python语言属于-Python语言属于( )。_学小易找答案
  4. 等待多个并发事件完成的模型
  5. Python到底是什么?Python发展前景好吗?
  6. CSS浏览器兼容性----Hack
  7. 交换机设备登录账号权限1_计算机网络管理员考试试题和答案
  8. JAVA在PDF指定位置赋值
  9. 用socket发送流数据示--用 php://input? 接受post数据(可实现php和c/c++数据通讯)
  10. MD5加密,Base64加密/解密,AES加密/解密
  11. 兄弟9020cdn提示更换粉盒_兄弟打印机提示更换墨粉盒怎么办
  12. UCF101数据集标签错误解决方案
  13. 隐马尔可夫模型(Hidden Markov Model)
  14. 用这几款软件轻松自动识别图片文字,快码住
  15. 用友T+改成IIS-网站报500.19错误代码0x8007000d问题解决
  16. VB学习记录——数组
  17. www.us258.com 这家主机商相当无耻,用着不到一个月给我停了,连用户名都删了。...
  18. 自然语言处理实战:机器学习常见工具与技术
  19. fastlane提交AdHoc测试包到蒲公英平台,获取git提交信息展示到更新说明中
  20. Ubuntu18.04中如何更换为清华的镜像源

热门文章

  1. LeetCode刷题——75. 颜色分类
  2. 风口上的“低代码”,是时候来系统学一学了
  3. 大揭秘!RocketMQ如何管理消费进度
  4. HITS 算法(Hypertext Induced TopicSelection)
  5. 基于Hosted WebCore 方式部署Web Role
  6. 全面规范的软件需求可以规避项目风险
  7. 矩阵论:向量求导/微分和矩阵微分
  8. 对数线性模型:逻辑斯谛回归和最大熵模型
  9. 【数据结构笔记】快速排序(quickSort)和快速选择(findKthLargest)--Python3
  10. LeetCode.83. Remove Duplicates from Sorted List(删除单链表中的重复元素)