一、MHA原理1、简介:MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件 。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用 。
该软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点) 。MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上 。MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master 。整个故障转移过程对应用程序完全透明 。
在MHA自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据的不丢失,但这并不总是可行的 。例如,如果主服务器硬件故障或无法通过ssh访问,MHA没法保存二进制日志,只进行故障转移而丢失了最新的数据 。使用MySQL 5.5的半同步复制,可以大大降低数据丢失的风险 。MHA可以与半同步复制结合起来 。如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性 。
目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库,因为至少需要三台服务器,出于机器成本的考虑,淘宝也在该基础上进行了改造,目前淘宝TMHA已经支持一主一从 。
我们自己使用其实也可以使用1主1从,但是master主机宕机后无法切换,以及无法补全binlog 。master的mysqld进程crash后,还是可以切换成功,以及补全binlog的 。
文章插图
(1)从宕机崩溃的master保存二进制日志事件(binlog events);
(2)识别含有最新更新的slave;
(3)应用差异的中继日志(relay log)到其他的slave;
(4)应用从master保存的二进制日志事件(binlog events);
(5)提升一个slave为新的master;
(6)使其他的slave连接新的master进行复制;
2、MHA组成Manager工具包主要包括以下几个工具:
masterha_check_ssh检查MHA的SSH配置状况masterha_check_repl检查MySQL复制状况masterha_manger启动MHAmasterha_check_status检测当前MHA运行状态masterha_master_monitor检测master是否宕机masterha_master_switch控制故障转移(自动或者手动)masterha_conf_host添加或删除配置的server信息
Node工具包(这些工具通常由MHA Manager的脚本触发,无需人为操作)主要包括以下几个工具:save_binary_logs保存和复制master的二进制日志Apply_diff_relay_logs识别差异的中继日志事件并将其差异的事件应用于其他的slavefilter_mysqlbinlog去除不必要的ROLLBACK事件(MHA已不再使用这个工具)purge_relay_logs清除中继日志(不会阻塞SQL线程)由于mha的软件包需要FQ,找到了一个大神百度云盘提供的下载链接:https://pan.baidu.com/s/1pJ0VkSz#list/path=%2F
二、环境准备主机ip描述系统linux-node1192.168.56.11master以及MHA管理节点centos 7.4linux-node2192.168.56.12slave节点centos 7.4linux-node3192.168.56.13slave节点centos 7.4三、MHA部署实战1、安装依赖【MySQL架构之MHA架构实战】
[root@linux-node1 ~]# yum install -y perl-DBD-MySQL[root@linux-node1 ~]#yum install -y perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager[root@linux-node2 ~]# yum install -y perl-DBD-MySQL[root@linux-node3 ~]# yum install -y perl-DBD-MySQL#如果无法安装,需要安装epel源:yum install -y epel-release
2、安装软件[root@linux-node1 ~]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm 准备中...################################# [100%]正在升级/安装...1:mha4mysql-node-0.56-0.el6################################# [100%][root@linux-node2 ~]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm 准备中...################################# [100%]正在升级/安装...1:mha4mysql-node-0.56-0.el6################################# [100%][root@linux-node3 ~]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm Preparing...################################# [100%]Updating / installing...1:mha4mysql-node-0.56-0.el6################################# [100%]
3、修改/etc/my.cnf
推荐阅读
- MySQL中的行级锁,表级锁,页级锁
- 霍山黄芽之瓦坛贮存法,如何用金属罐贮存霍山黄芽
- 快手早餐之鸡蛋葱油饼的做法
- 我想种植黄茶在哪里购买黄茶苗,中国黄茶之乡在哪里
- 黄茶的独特性表现在哪里呢,中国黄茶之乡在哪里
- 岳阳黄茶产自哪里,中国黄茶之乡在哪里
- 小风暴之时间的玫瑰郑婉莹结局 小风暴之时间的玫瑰高山的仇人是谁
- 十大名茶之六安瓜片的简述
- 茶道与茶艺,茶文化知识之茶艺
- 如果是MySQL引起的CPU消耗过大,你会如何优化?