一、环境准备
MHA架构最少需要三个MySQL节点,一个节点是Manager节点(一般会将Manager安装在单独的节点上),其余Node节点。
注意:如果三个MySQL实例在一个节点上,将无法完成MHA部署。
三个节点信息及角色:
主机名 | IP地址 | 主从角色 | MHA角色 | server_id | 读写 |
---|---|---|---|---|---|
master | 192.168.18.130 | 主库 | Manager/Node节点 | 1 | 可读可写 |
slave1 | 192.168.18.131 | 从库 | Node节点 | 2 | 只读 |
slave2 | 192.168.18.132 | 从库 | Node节点 | 3 | 只读 |
二、MHA部署过程
2.1、配置各节点互信
在各个节点上生成密钥对:
# ssh-keygen -t rsa
将生成的公钥分发到其他节点(包括节点本身
)上:
# ssh-copy-id root@192.168.18.130
# ssh-copy-id root@192.168.18.131
# ssh-copy-id root@192.168.18.132
2.2、构建GTID主从复制
构建GTID而非传统主从复制的原因:GTID主从复制环境中,主库发生的事务,都由唯一的GTID记录,方便故障恢复和数据补偿。
MySQL安装可以参考:CentOS7系统中MySQL5.6安装
主库
配置文件:
port=3306
bind_address=0.0.0.0
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
skip_name_resolve #跳过域名解析;
server_id=1 #主从复制结构中,每个MySQL的server_id必须不同;
log_bin=mysql-bin #MHA架构中所有节点都必须记录二进制日志;
binlog_format=row
max_binlog_size=256M
expire_logs_days=15
slow_query_log=1
slow_query_log_file=slow.log
long_query_time=1
log_queries_not_using_indexes
sync_binlog=1
gtid_mode=on #开启GTID;
enforce_gtid_consistency=true #强制GTID的一致性;
log_slave_updates=1 #slave更新记入二进制日志binlog;
relay_log_purge=0 #关闭自动清理中继日志;
从库
配置文件,除了唯一的server_id,其他与主库配置相同。另外,将从库设置为只读:
……
server_id=2
read_only=1 #将从库设置为只读
配置文件更改之后,启动/重启MySQL。
2.3、主库上创建用于复制的用户
在主库中创建用于主从复制的用户:
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.18.%' IDENTIFIED BY '123123';
2.4、开启从库复制
首先在从库上建立与主库的连接:
mysql> CHANGE MASTER TO
MASTER_H