MySQL系列之十四 MySQL的高可用实现
一、MHA
对主节点进行监控,可实现自动故障转移至其它从节点;通过提升某一从节点为新的主节点,基于主从复制实现,还需要客户端配合实现,目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库。
1、MHA工作原理
- 从宕机崩溃的master保存二进制日志事件(binlog events)
- 识别含有最新更新的slave
- 应用差异的中继日志(relay log)到其他的slave
- 应用从master保存的二进制日志事件(binlog events)
- 提升一个slave为新的master
2、MHA软件
MHA软件由两部分组成,Manager工具包和Node工具包;
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的同时建议配置成MySQL 5.5的半同步复制。
自定义扩展:
secondary_check_script:通过多条网络路由检测master的可用性master_ip_ailover_script:更新Application使用的masteripshutdown_script:强制关闭master节点report_script:发送报告init_conf_load_script:加载初始配置参数master_ip_online_change_script:更新master节点ip地址
下载地址:https://code.google.com/archive/p/mysql-master-ha/downloads
3、MHA的实现
环境:基于秘钥认证,参考:https://www.cnblogs.com/L-dongf/p/9058265.html,时间必须同步,执行:ntpdate cn.pool.ntp.org
1)manager节点
[root@manager ~]# yum install mha4mysql-manager-0.56-0.el6.noarch.rpm mha4mysql-node-0.56-0.el6.noarch.rpm -y #安装mha软件 [root@manager ~]# scp mha4mysql-node-0.56-0.el6.noarch.rpm 192.168.0.7: [root@manager ~]# scp mha4mysql-node-0.56-0.el6.noarch.rpm 192.168.0.8: [root@manager ~]# scp mha4mysql-node-0.56-0.el6.noarch.rpm 192.168.0.9: [root@manager ~]# mkdir /etc/mha/ [root@manager ~]# vim /etc/mha/cluster1.cnf [server default] user=mhauser password=mhapass manager_workdir=/data/mastermha/cluster1/ manager_log=/data/mastermha/cluster1/manager.log remote_workdir=/data/mastermha/cluster1/ ssh_user=root repl_user=repluser repl_password=replpass ping_interval=1 #每秒检测一次 [server1] hostname=192.168.0.7 candidate_master=1 #可以成为主节点 [server2] hostname=192.168.0.8 candidate_master=1 #可以成为主节点 [server3] hostname=192.168.0.9 [root@manager ~]# masterha_check_ssh --conf=/etc/mha/cluster1.cnf #检查ssh秘钥环境 All SSH connection tests passed successfully. [root@manager ~]# masterha_check_repl --conf=/etc/mha/cluster1.cnf #检查MySQL状态 MySQL Replication Health is OK. [root@manager ~]# yum install screen -y [root@manager ~]# screen -S mha #mha是工作在前台的进程,不能用终端实时检测 [root@manager ~]# masterha_manager --conf=/etc/mha/cluster1.cnf #开始监测
您可能感兴趣的文章
- 05-31MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
- 05-31MySQL索引失效十种场景与优化方案
- 05-31MYSQL 高级文本查询之regexp_like和REGEXP详解
- 05-31MySQL获取binlog的开始时间和结束时间(最新方法)
- 05-31MySQL索引查询的具体使用
- 05-31基于MySQL和Redis扣减库存的实践
- 05-31关于MySQL的存储过程与存储函数
- 05-31MySQL实战文章(非常全的基础入门类教程)
- 05-31MySQL Flink Watermark实现事件时间处理的关键技术
- 05-31MySQL Flink实时流处理的核心技术之窗口机制
阅读排行
推荐教程
- 05-30Navicat for MySQL 11注册码激活码汇总
- 05-27Mysql误删数据快速恢复
- 05-31VS2022连接数据库MySQL并进行基本的表的操作指南
- 05-30解决seata不能使用mysql8版本的问题方法
- 05-30MYSQL字符集设置的方法详解(终端的字符集)
- 05-30解决MySQL启动报错:ERROR 2003 (HY000): Can't con
- 05-30关于Mysql-connector-java驱动版本问题总结
- 11-22mac下安装mysql忘记密码的修改方法
- 05-30MySQL中的隐藏列的具体查看
- 11-22mysql exists与not exists实例详解