mysql进阶(三)MHA高可用集群
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,简介:1、MHA目前在MySQL高可用方面是一个相对成熟的解决方案,是MySQL高可用环境下故障切换和主从提升的高可用软件2、MHA能在短时间内完成故障切换,并且在最大程度上保证数据的一致性,以达到真
千家信息网最后更新 2025年11月07日mysql进阶(三)MHA高可用集群
简介:1、MHA目前在MySQL高可用方面是一个相对成熟的解决方案,是MySQL高可用环境下故障切换和主从提升的高可用软件2、MHA能在短时间内完成故障切换,并且在最大程度上保证数据的一致性,以达到真正意义上的高可用3、MHA基于mysql协议,通过mysql主从或主主进行复制4、MHA官网:https://code.google.com/p/mysql-master-ha/软件由两部分组成:MHA Manager(关理节点)和MHA Node(数据节点)1、MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上2、MHA Node运行在每台MySQL服务器上3、MHA_Manager会定时探测集群中的master节点,当master出现故障时, 它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master4、MHA配合半同步复制使用可以最大限度的保证数据安全性工作原理:1、从宕机崩溃的master保存二进制日志事件(binlog events)2、识别含有最新更新的slave3、应用差异的中继日志(relay log)到其他的slave4、应用从master保存的二进制日志事件(binlog events)5、提升一个slave为新的master6、使其他的slave连接新的master进行复制MHA工具:Manager工具包:masterha_check_ssh #检查MHA的SSH配置状况,MHA强烈依赖ssh秘钥验证masterha_check_repl #检查MySQL复制状况masterha_manager #MHA主程序masterha_check_status #检测当前MHA运行状态masterha_master_monitor #检测master是否宕机masterha_master_switch #手动控制故障转移masterha_conf_host #添加或删除配置的server信息masterha_stop #MHA关闭工具Node工具包:save_binary_logs #保存和复制master的二进制日志apply_diff_relay_logs #识别差异的中继日志事件并将其差异的事件应用于其他的slavefilter_mysqlbinlog #去除不必要的ROLLBACK事件(MHA已不再使用这个工具)purge_relay_logs #清除中继日志(不会阻塞SQL线程)实验环境:角色 ip地址 MHA_manager 192.168.0.70Master 192.168.0.40Slave 192.168.0.60Slave 192.168.0.10安装MHA:1、配置elpe和baseyum源2、yum -y localinstall mha4mysql-manager-0.55-0.el6.noarch.rpm mha4mysql-node-0.54-0.el6.noarch.rpm#非管理节点不用安装mha4mysql-manager-0.55-0.el6.noarch.rpm3、配置ssh秘钥验证ssh-keygen #生成秘钥,一直回车就行cat id_rsa.pub >> authorized_keys #将authorized_keys id_rsa id_rsa.pub 拷贝到所有节点的~/.ssh目录下注意:不能禁止password登陆,否则会出现错误 配置mysql主从(建议使用mysql5.5版本以上):master配置:vim /etc/my.cnf #修改配置文件,添加如下内容[mysqld] #找到mysqld配置段log-bin=mysql-bin #开启二进制日志relay-log=relay-bin #开启中继日志binlog_format=mixed #使用混合模式的二进制日志server-id= 1 #全局唯一的server-idinnodb-file-per-table=1 #使用单独表空间文件default-storage-engine=InnoDB #使用InnoDB存储引擎autocommit=0 #关闭事务自动提交skip-name-resolve=1 #关闭主机名反解relay-log-purge=0 #不允许自动清理中继日志,因为MHA会依靠中继日志恢复数据service mysqld restart #重启mysqlmysql> SHOW MASTER STATUS; #查看当前二进制日志位置+------------------+----------+| File | Position|+------------------+----------+|mysql-bin.000004 | 360 | #记住当前值+------------------+----------+mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'mha'@'192.168.0.%' IDENTIFIED BY 'mha';mysql> GRANT ALL ON *.* TO 'mymha'@'192.168.0.%' IDENTIFIED BY 'mymha'; #创建MHA监控用户mysql> FLUSH PRIVILEGES;slave配置:vim /etc/my.cnf #修改配置文件,添加如下内容[mysqld] #找到mysqld配置段log-bin=mysql-bin #开启二进制日志relay-log=relay-bin #开启中继日志binlog_format=mixed #使用混合模式的二进制日志server-id= 2 #全局唯一的server-idinnodb-file-per-table=1 #使用单独表空间文件default-storage-engine=InnoDB #使用InnoDB存储引擎autocommit=0 #关闭事务自动提交skip-name-resolve=1 #关闭主机名反解read-only=1 #只读,对root用户无效(slave节点必须设置)relay-log-purge=0 #不允许自动清理中继日志,因为MHA会依靠中继日志恢复数据mysql> CHANGE MASTER TO MASTER_HOST='192.168.0.10',MASTER_USER='mha',MASTER_PASSWORD='mha', MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=360,MASTER_PORT=3306; #指定主服务器mysql> START SLAVE; #启动复制线程mysql> SHOW SLAVE STATUS\G; #查看从服务器状态Slave_IO_Running: Yes #必须都为yesSlave_SQL_Running: Yesmysql> SELECT USER,PASSWORD,HOST FROM mysql.user; #查看mha是否同步成功MHA配置: mkdir /etc/mha mkdir /var/log/mha_app1vim /etc/mha/app1.cnf [server default] #MHA工作属性定义(配置时不能有注释)manager_workdir=/masterha/app1 #MHA的工作目录manager_log=/var/log/mha_app1/manager.log #MHA的日志文件password=mymha #设置MHA监控用户的密码user=mymha #设置监控用户ping_interval=1 #设置监控主库,健康检查时间remote_workdir=/masterha/app1 #设置远端mysql在发生切换时binlog的保存位置repl_password=mha #设置复制用户的密码repl_user=mha #设置复制环境中的复制用户名ssh_user=root #设置ssh的登录用户名master_binlog_dir=/usr/local/mysql/data/ #二进制日志文件存放路径 可选参数,脚本都需要自己写:shutdown_script=/masterha/scripts/shutdown.sh #故障发生后关闭故障主机脚本(用于防止脑裂)master_ip_failover_script=/masterha/scripts/automatic.sh #设置自动故障转移时执行的脚本 master_ip_online_change_script=/masterha/scripts/manual.sh #设置手动故障转移时执行的脚本 report_script=/masterha/scripts/twili.py #设置发生切换后发送的报警脚本[server1] hostname=192.168.0.40 port=3306 [server2] #节点设置hostname=192.168.0.60 #主机地址port=3306 #端口check_repl_delay=0 #用防止master故障时,切换时slave有延迟candidate_master=1 #设置为候选master,如果没有设置则在slave中选择数据最新的成为master,如果设置了建议最好指向半同步节点[server3] hostname=192.168.0.10 port=3306MHA使用:chmod 600 /etc/mha/app1.cnf #设置为只有root用户对此文件有权限masterha_check_ssh --conf=/etc/mha/app1.cnf #检查ssh秘钥认证是否成功--conf:指定配置文件masterha_check_repl --conf=/etc/mha/app1.cnf #检查mysql复制环境成功masterha_check_status --conf=/etc/mha/app1.cnf #检查MHA运行状态masterha_manager --conf=/etc/mha/app1.cnf #启动MHA
日志
配置
二进制
故障
节点
中继
文件
用户
数据
检查
事件
工具
脚本
切换
主机
环境
监控
成功
主从
差异
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
自考本科软件开发
自我保护网络安全手抄报图片
脉动测速软件开发
微信小程序的数据库怎么搭建
西安众智软件开发有限公司
普陀区生态网络技术
学习通无法链接服务器
我的世界手游暑假必玩服务器
计划软件开发报价
无法建立网络安全连接
安徽高性能服务器价钱
通常服务器的审核内容包括
网络安全要学啥
服务器的com端口有什么用
有没有关于网络安全的视频
四川双轨直销软件开发
机关单位网络安全激励机制
百度网络技术平均工资
软件开发不出来怎么办
软件开发者选项卡
国家什么统筹协调网络安全
福田网络安全管理软件
阿里的网络技术
神舟通用数据库的市场占有率
服务器的com端口有什么用
网络安全的最终目标是
产品经理数据库原理
多功能网络技术服务常见问题
derby 数据库教程
国内工程软件开发公司排行