一.导言
MHA(MasterHighAvailability)是MySQL高可用性中比较成熟的解决方案。现在很多大型电子商务网站都采用这种解决方案,比如墨宝、陌动、陌汇。它是一套优秀的高可用性软件,用于MySQL高可用性环境中的故障转移和主从升级。在MySQL故障转移过程中,MHA可以在0~30秒内手动或自动完成数据库故障转移 *** 作(必要时需要用脚本实现),而在故障转移过程中,MHA可以最大程度地保证数据的一致性,从而达到真正的高可用。由于这一特点,MHA受到许多大型电子商务网站的青睐,并被重新研究。
软件由两部分组成:MHA管理器(管理节点)和MHA节点(数据节点)。MHA管理器可以部署在独立的机器上来管理多个主从集群,也可以部署在从节点上。MHA节点运行在每台MySQL服务器上,MHA管理器会定期探测集群中的主节点。当主设备出现故障时,它可以自动将最新数据的从设备升级到新的主设备,然后将所有其他从设备重定向到新的主设备。整个故障转移过程对应用程序是完全透明的。
在MHA自动故障转移的过程中,MHA试图从停机的主服务器上保存二进制日志,以最大程度地确保数据不丢失,但这并不总是可行的。例如,如果主服务器硬件出现故障或无法通过ssh访问,MHA无法保存二进制日志,而只能进行故障切换,并丢失最新数据。使用MySQL5.5半同步复制可以大大降低数据丢失的风险。MHA可以与半同步复制结合使用。如果只有一个从服务器收到了最新的二进制日志,MHA可以将最新的二进制日志应用到所有其他从服务器,从而确保所有节点的数据一致性。有时,它可以故意将从节点设置得比主节点慢,在数据库被意外删除但数据丢失时,从从节点的二进制日志中恢复。
目前,MHA主要支持一主多从的架构。要构建MHA,要求复制集群中必须至少有三台数据库服务器,一台主服务器和两台从服务器,即一台作为主服务器,一台作为备用主服务器,另一台作为从服务器。因为至少需要三台服务器,淘宝出于机器成本的考虑,也在此基础上进行了改造。目前,淘宝TMHA已经支持一主一从。
MHA高可用性集群架构图:
二、实验配置及要求
IP地址规划:
配置要求:
①各个节点之间可以通过主机名进行通信(这个实现很简单自己找数据)。
②MHA上要安装MHA4MySQL-manager及其两个管理软件mha4mysql-node。
③创建配置文件目录,手动写入配置文件。
三。MHA实战配置
配置每个mysql并启动服务:
Node2:mysqlmaster的配置如下:
编辑/etc/my.cnf
innodb_file_per_table=1
跳过名称解决=1
log-bin=主箱
继电器记录=继电器箱
服务器id=1
启动该服务以执行以下 *** 作:
systemctl启动mariadb.service
授予帐户所有权限:
在*上授予全部权限。*致&apos姆豪泽&apos@&apos10.1.10.%&apos由&aposcncn&apos
授权一个具有复制功能的帐户:
授予复制从属服务器,在*上的复制客户端。*致&apos回复用户和。apos@&apos10.1.10.%&apos由&aposcncn&apos
刷新权限;
节点3:mysqlslave1
编辑/etc/my.cnf配置文件;
innodb_file_per_table=1
跳过名称解决=1
log-bin=主箱
继电器记录=继电器箱
服务器id=3
只读=1
中继-日志-清除=0
启动该服务以执行以下 *** 作:
systemctl启动mariadb.service
将master改为MASTER_HOST=&apos10月1日。apos,主用户=&apos回复用户和。aposMASTER_PASSWORD=&aposcncn&aposMASTER_LOG_FILE=&aposbin.000001&apos,MASTER_LOG_POS=245
启动从机
节点4:mysqlslave2
编辑/etc/my.cnf配置文件;
innodb_file_per_table=1
跳过名称解决=1
log-bin=主箱
继电器记录=继电器箱
服务器id=4
只读=1
中继-日志-清除=0
启动该服务以执行以下 *** 作:
systemctl启动mariadb.service
将master改为MASTER_HOST=&apos10月1日。apos,主用户=&apos回复用户和。aposMASTER_PASSWORD=&aposcncn&aposMASTER_LOG_FILE=&aposbin.000001&apos,MASTER_LOG_POS=245
启动从机;
手动创建mha目录及其配置文件
mkdir/etc/masterha
vim/etc/masterha/app1.conf
[服务器默认值]
用户=mhauser
密码=cncn
manager_workdir=/data/masterha/app1
manager_log=/data/masterha/app1/manager.log
remote_workdir=/data/masterha/app1
ssh_user=root
repl_user=repluser
repl_password=cncn
ping_interval=1
[服务器1]
主机名=10.1.10.66
candidate_master=1
[服务器2]
主机名=10.1.10.67
candidate_master=1
[服务器3]
主机名=10.1.10.68
检查每个节点是否可以相互通信,每个节点的健康状态信息是否正常。
启动集群管理让它在后台运行,调试阶段让它在前台运行。
[root@node1~]#masterha_manager-conf=/etc/masterha/app1.conf
Fri2016年11月25日22:15:37-[错误][/usr/share/perl5/vendor_perl/MHA/mastermonitor.pm,ln280]配置文件/etc/masterha/app1.conf找不到!
Fri2016年11月25日22:15:37-[错误][/usr/share/perl5/vendor_perl/MHA/mastermonitor.pm,ln424]检查配置时出错。at/usr/bin/masterha_manager第50行。
Fri2016年11月25日22:15:37-[错误][/usr/share/perl5/vendor_perl/MHA/mastermonitor.pm,ln523]监控服务器发生错误。
Fri2016年11月25日22时15分37秒-[信息]获得退出代码1(非主设备死亡)。
[root@node1~]#masterha_manager-conf=/etc/mastermha/app1.conf
Fri2016年11月25日22:16:40-[警告]未找到全局配置文件/etc/masterha_default.cnf。跳绳。
Fri2016年11月25日22:16:40-[info]从/etc/mastermha/app1.conf读取应用程序默认配置..
Fri2016年11月25日22:16:40-[info]从/etc/mastermha/app1.conf读取服务器配置..
总结:
可以模拟测试,模拟节点故障,检查主节点是否迁移,新节点上线,检查其运行状态信息是否正常。在实际生产中,高可用性MHA可以大大减少平均故障间隔时间,提高数据库的可用性。对于敏感数据,不建议通过结合脚本自动修复失效节点,手动 *** 作相对安全。
来源:马可教育
官方微信:马可linux运维
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)