目录一、MySQL MHA1.1 什么是MHA1.2 MHA的组成1.3 MHA的特点1.4 MHA的工作原理二、搭建MySQL MHA2.1 环境2.2 准备工作2.3 安装MHA2.4 在所有服务器上配置无密码认证2.5 在manager节点上配置MHA2.6 第一次配置需要在Master节点上手动开启虚拟IP2.7 在manager节点上测试ssh2.8 在manager节点上测试mysql主从连接2.9 在manager节点上启动MHA2.10 查看MHA状态2.11 查看MHA日志2.12 查看master VIP2.13 MHA故障模拟2.14 故障恢复三、总结一、MySQL MHA1.1 什么是MHAMHAMaster High Availability是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。MHA 的出现就是解决MySQL 单点的问题。MySQL故障切换过程中MHA能做到0-30秒内自动完成故障切换操作。MHA能在故障切换的过程中最大程度上保证数据的一致性以达到真正意义上的高可用。1.2 MHA的组成1、MHA Node数据节点MHA Node 运行在每台 MySQL 服务器上。2、MHA Manager管理节点 检测MHA Manager 可以单独部署在一台独立的机器上管理多个 master-slave 集群也可以部署在一台 slave 节点上。MHA Manager 会定时探测集群中的 master 节点。当 master 出现故障时它可以自动将最新数据的 slave 提升为新的 master 然后将所有其他的 slave 重新指向新的master。整个故障转移过程对应用程序完全透明。1.3 MHA的特点1、自动故障切换过程中MHA试图从宕机的主服务器上保存二进制日志最大程度的保证数据不丢失2、使用半同步复制可以大大降低数据丢失的风险如果只有一个slave已经收到了最新的二进制日志MHA可以将最新的二进制日志应用于其他所有的slave服务器上因此可以保证所有节点的数据一致性3、目前MHA支持一主多从架构最少三台服务即一主两从1.4 MHA的工作原理1、从宕机崩溃的master 保存二进制日志事件binlog events2、识别含有最新的更新 slave 日志3、应用差异的中继日志relay log到其他的slave4、应用从master保存的二进制日志事件5、提升一个 salve 为新的master6、使其他的slave连接行的master 进行复制。二、搭建MySQL MHA2.1 环境1、MHA manager 节点服务器CentOS7.6(64 位) manager/10.8.0.104 安装MHA node和 manager 组件2、Master 节点服务器CentOS7.6(64 位) mysql1/10.8.0.110 安装mysql5.7、MHA node组件3、Slave1 节点服务器CentOS7.6(64 位) mysql2/10.8.0.100 安装mysql5.7、MHA node组件4、Slave2 节点服务器CentOS7.6(64 位) mysql3/10.8.0.102 安装mysql5.7、MHA node组件5、主从复制2.2 准备工作1、主从复制后将两个从库设置为只读模式2、插入数据测试数据库同步主库从库2.3 安装MHA1、在所有服务器上安装MHA依赖环境2、在所有服务器上安装node组件3、在MHA manager节点上安装manager组件10.8.0.1042.4 在所有服务器上配置无密码认证1、在manager节点上配置所有数据库节点的无密码认证2、在master节点上配置slave1和slave2节点的无密码认证3、在slave1上配置数据库节点master和slave2的无密码认证4、在slave2上配置数据库节点master和slave1的无密码认证2.5 在manager节点上配置MHA1、在 manager 节点上复制相关脚本到/usr/local/bin 目录生成4个执行文件2、复制master_ip_failover文件到/usr/local/bin目录下3、修改master_ip_failover文件添加内容4、创建 MHA 软件目录并拷贝配置文件这里使用app1.cnf配置文件来管理 mysql 节点服务器5、修改app1.cnf配置文件2.6 第一次配置需要在Master节点上手动开启虚拟IP2.7 在manager节点上测试ssh2.8 在manager节点上测试mysql主从连接2.9 在manager节点上启动MHA2.10 查看MHA状态2.11 查看MHA日志2.12 查看master VIP2.13 MHA故障模拟1、关闭master节点的Mysql,正常自动切换一次后MHA进程会退出。HMA会自动修改app1.cnf文件内容将宕机的 master 节点删除。查看slave1是否接管VIP2.14 故障恢复1、master节点开启mysql服务2、在slave1节点上查看3、在原主服务器上执行同步操作4、在 manager节点上修改配置文件app1.cnf再把这个记录添加进去因为它检测掉失效时候会自动消失5、在manager节点上启动MHA三、总结环境准备基于CentOS 7.6搭建一主两从10.8.0.110为主10.8.0.100/102为从架构并配置MySQL主从复制将从库设为只读。组件安装在所有节点安装MHA依赖环境并分别在Master/Slave节点安装node组件在Manager节点安装manager组件。核心配置配置各节点间的SSH无密码认证复制并修改MHA配置文件app1.cnf手动开启虚拟IP。启动与测试通过masterha_check_ssh检查连通性随后在Manager节点后台启动MHA服务。