MySQL高可用运维的示例分析


这篇文章将为大家详细讲解有关MySQL高可用运维的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、MHA定义Master HA。是一个开源的高可用程序,为MySQL的主从架构提供了故障自动恢复的功能。主从复制期间,当MHA监测到MySQL的Master节点故障时,会自动提升复制集群中的某个Slave节点成为新的Master节点。在切换期间,也会通过从其他节点中获取额外信息来避免数据一致性问题。除此之外,MHA还提供了master节点的在线故障切换功能,可以按照需要来切换Master/Slave节点。2、MHA结构MHA中的所有节点主要有两种角色,即:管理节点和数据节点。
管理节点(MHA Manager):一般单独部署在一台机器上,用来管理多个master和slave集群,而每个master和slave组成的集群称之为一个application。
数据节点(MHA Node):运行在每一台MySQL服务器上,通过监控具有解析和清理logs功能的脚本来加速节点的故障转移。3、HMA组件
(1)Manager组件(2)Node组件(3)自定义扩展1、环境准备
操作系统:CentOS6.9_X86_64
MySQL版本:MySQL5.6.39通用二进制
服务器规划:
主节点Master:192.168.199.104(mysql-master,master)从节点1:192.168.199.105(mysql-slave01,slave01)
从节点2:192.168.199.106(mysql-slave02,slave02)
管理节点:192.168.199.107(mysql-manager,manager)
2、搭建
(1)配置各个节点的host,在后面使用起来会比较方便,不用每次手写IP(2)将配置好的host文件复制到其他三个节点上(3)配置主从同步,slave01和slave02为master的从库
开启master的二进制日志在master上查看当前的二进制日志点位置,并创建复制账户在slave01上开启二进制日志和中继日志,并配置为master的从库参数解释:启动slave01节点,并将需要同步的主节点信息指向master节点:以同样的方式配置第二台从库,可以直接将slave01上的配置文件直接复制到第二台slave上,然后修改即可。修改完成之后,保存退出,并重启mysql开发云主机域名,然后配置slave02为master的从库(4)创建具有管理权限的用户账号(5)由于MHA架构需要各个节点之间可以进行互信通信,所以需要将各个节点之间配置为无秘钥登录,由于节点比较多,单个生成并复制比较麻烦,可以在主节点上生成秘钥对,然后让每个主机都具有同样的私钥将秘钥对和私钥文件复制到其他三个节点上,注意:保证其原有的权限(6)下载mha4mysql-manager和mha4mysql-node安装包
此处使用的软件包版本如下:(7)配置epel,因为mha4mysql有的包是来自于base中,有的包是来自于epel中(8)解压,并使用perl命令执行Makefile.PL脚本注意:执行Makefile.PL过程中,如果出现类似于如下的错误,则需要安装perl程序所依赖的库文件:出现上述错误,则需要安装依赖:(9)确保”perl MakeFile.PL”正确执行之后,使用make命令完成安装。注:可以使用”echo $?”查看上此命令的执行结果来判断上条命令是否正确执行完成。通常0代表正确完成。(10)master上的manager安装完成之后,按照同样的方式编译安装mha4mysql-node(11)在其他三台服务器上(master,slave01,slave02)上安装mha4mysql-node其他两个节点安装方式相同,此处略。(12)安装完成,可以看到在/usr/local/bin下有一些脚本,就是mha4mysql生成的脚本文件(13)初始化MHA
编辑mha的配置文件,主要有以下两类:
global配置:为各个application提供默认配置
application配置:用来指定有哪些服务器写入如下内容:(14)检查各个节点之间的通信是否正常错误1:Can’t locate Config/Tiny.pm in @INC (@INC contains:XXX
原因:这种错误是因为缺少依赖包
解决办法:安装提示的依赖包
如下的几个rpm包如果操作系统本身没有自带,需要自己从网上下载,可以从
http://rpmfind.net/ 下载所需要的rpm包。以下的rpm包都是针对CentOS6.9 X86_64的:下载完成之后,使用yum命令安装即可,因为其中可能还会依赖其他包。错误2:master_check_ssh执行中的错误:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
原因:/root/.ssh/下的文件内容不一样或者文件的权限有问题,我遇到的是文件内容有问题。
解决办法:重新将其他主机上的秘钥对和私钥拷贝一份就正常了。(15)检查主从复制环境是否正常错误1:原因:缺少perl-DBD-MySQL依赖库
解决办法:错误2:错误3:原因:mysql的binlog日志目录没有在默认的/var/log/mysql下,而是在其他地方,导致目录找不到。
解决办法:在manager节点的配置文件中每个节点下制定二进制日志的目录路径。错误4:原因:使用ssh连接之后找不到mysqlbinlog命令
解决办法:将/usr/local/mysql-5.6.39/目录连接到/usr/bin下(16)启动MHA(17)验证高可用故障自动转移注意:当某一个master故障之后,从库提升为主库,原来的manager节点上的manager服务会自动退出。需要手动重启。
(18)故障的服务器再次恢复时,需要使用”CHANGE MASTER”命令手动将其加入到从节点中
(19)manager节点启动之后,可以使用masterha_check_status命令查看当前的主节点状态信息MHA的其他用法,如在线主从切换等,可以自行参考官方文档,此处不再介绍。另外还有MHA的manager节点的自动重启功能,报警功能,故障主机彻底摘除功能等可以通过shell脚本实现,后面有时间会继续介绍。关于“MySQL高可用运维的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

相关推荐: MySQL中的统计信息相关参数介绍

统计信息的作用 上周同事在客户现场遇到了由于统计信息的原因,导致应用数据迁移时间过慢,整个迁移差点失败。关键时刻同事发现测试环境与生产环境SQL语句执行计划不一致,立刻收集统计信息才保证迁移得以正常完成。 统计信息对于SQL的执行时间有重要的影响,统计信息的不…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/21 11:12
下一篇 06/21 11:12

相关推荐