## 实验环境 此次实验的环境如下 - MySQL 5.7.25 - Redhat 6.10 - 操作系统账号:mysql - 数据库复制账号:repl - 复制格式:基于行的复制 - MHA版本: 0.56 | IP地址 |主从关系|复制账号 |复制格式 | | --- | --- | --- | --- | | 11.12.14.29 | 主库 | repl |Row-Based | | 11.12.14.30| 从库(半同步/备master)| repl |Row-Based| | 11.12.14.39 | 从库(异步) | repl |Row-Based | | 11.12.14.40| 管理节点| 无 |无| | 11.12.14.41| VIP| 无 |无| [image:680 size:orig] 这节的内容为在正式部署MHA前需要做哪些准备 ## 1. hosts文件 首先我们在四台服务器上添加其他服务器的hosts信息 ``` 11.12.14.29 shytest 11.12.14.30 shytest2 11.12.14.39 shytest3 11.12.14.40 shytest4 ``` ## 2. 配置免密码登录 接下来我们需要配置各服务请求间的免密码登录 ssh-kengen 命令后请一路下一步 **11.12.14.29** ``` ssh-keygen -t rsa ssh-copy-id 11.12.14.30 ssh-copy-id 11.12.14.39 ssh-copy-id 11.12.14.40 ssh-copy-id shytest2 ssh-copy-id shytest3 ssh-copy-id shytest4 ``` **11.12.14.30** ``` ssh-keygen -t rsa ssh-copy-id 11.12.14.29 ssh-copy-id 11.12.14.39 ssh-copy-id 11.12.14.40 ssh-copy-id shytest ssh-copy-id shytest3 ssh-copy-id shytest4 ``` **11.12.14.39** ``` ssh-keygen -t rsa ssh-copy-id 11.12.14.29 ssh-copy-id 11.12.14.30 ssh-copy-id 11.12.14.40 ssh-copy-id shytest ssh-copy-id shytest2 ssh-copy-id shytest4 ``` **11.12.14.40** ``` ssh-keygen -t rsa ssh-copy-id 11.12.14.29 ssh-copy-id 11.12.14.30 ssh-copy-id 11.12.14.39 ssh-copy-id shytest ssh-copy-id shytest2 ssh-copy-id shytest3 ``` 设置完之后记得测试登录 ## 3. 搭建主从备份 我们根据上面的拓扑建立主从关系,11.12.14.30采用半同步,11.12.14.39采用异步 采用基于GTID的复制,否则建议关闭GTID功能 这里就不多做介绍了,具体见上一个专题 注意在做主从同步的时候建议清理下从库相关信息 - reset master ; - reset slave all; ## 4. 时间同步 请确认四台服务器的时间是同步的,可使用ntp进行同步 ## 5.创建监控账户 接下来我们创建用于MHA监控的数据库账户 **master数据库** ``` grant all privileges on *.* to 'monitor'@'11.12.14.%' identified by '123456'; grant all privileges on *.* to 'monitor'@'127.0.0.1' identified by '123456'; flush privileges; ``` ## 6. 关闭防火墙 如果防火墙开始,需要开通服务器间3306端口的通信 ## 7.关闭relay日志自动清理 由于默认情况下从库的relay logs会在SQL线程执行完毕后被自动删除,但是对于MHA场景下,对于某些滞后从库的恢复依赖于其他从库的relay log,因此采取禁用自动删除功能以及定期清理的办法 使用purge_relay_logs脚本这个后面说明 **主从库3台** ``` relay_log_purge=0 ``` ## 8. 从库开启只读 从库需要设置只读模式 **2台从库** ``` read_only=1 ``` ## 9. 二进制日志过滤参数一致 请保证一些二进制日志的过滤参数是一致的,如 - replicate-wild% - binlog-do-db ## 10. master节点绑定VIP 刚开始需要手动将VIP绑定至master节点 ``` /sbin/ifconfig eth0:2 11.12.14.41 netmask 255.255.255.0 up ``` [image:681 size:orig] ## 11. 准备自定义脚本 这里我们通过网盘下载,放到/etc/mha/script下面并赋予可执行权限 链接: https://pan.baidu.com/s/18H12bTIYHi2H0dXs2DI7NA 提取码: mwkq [image:682 size:orig] 接下来我们修改相关的文件 **master_ip_failover** 该文件只需要修改 my $vip = '11.12.14.41' **master_ip_online_change** 该文件也是需要修改 my $vip = '11.12.14.41' **send_report** 该文件需要修改邮件配置,这个后面做介绍 ## 11. 参考资料 [https://www.percona.com/blog/2016/09/02/mha-quickstart-guide/](https://www.percona.com/blog/2016/09/02/mha-quickstart-guide/) [http://www.ttlsa.com/mysql/step-one-by-one-deploy-mysql-mha-cluster/](http://www.ttlsa.com/mysql/step-one-by-one-deploy-mysql-mha-cluster/) [https://www.cnblogs.com/ivictor/p/5686275.html](https://www.cnblogs.com/ivictor/p/5686275.html) [https://andblog.cn/?p=974](https://andblog.cn/?p=974)