mysql进阶(三)MHA高可用集群
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,简介:1、MHA目前在MySQL高可用方面是一个相对成熟的解决方案,是MySQL高可用环境下故障切换和主从提升的高可用软件2、MHA能在短时间内完成故障切换,并且在最大程度上保证数据的一致性,以达到真
千家信息网最后更新 2025年02月01日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安全错误
数据库的锁怎样保障安全
苏州手机软件开发培训
联志服务器机箱官网
服务器主板属于什么设备
水污染现状数据库
软件开发培训招生裂变方案
佳通轮胎 软件开发 加班吗
学校网络安全工作计划
征途两个号在一个服务器里
中芯国际软件开发工程师
云服务器能用企业网站吗
c语言怎样写数据库
计算机网络技术买电脑
英语关于网络安全的好词好句
网络安全法演讲词
长沙如腾软件开发公司
大学校园网络安全教育课堂
网络安全相关理论和技术
数据库简单介绍ppt
小米软件开发部总监
避世血族哪个服务器的人多
量级服务器
奋达科技互联网医疗
山东济南服务器零售商云空间
2017年网络安全情况
软件开发怎么积攒人脉
ps5无法重构数据库
北京泰和维度网络技术有限公司
珠海网络软件开发公司
中信银行的软件开发工作内容
民法典网络安全宣传图