mysql 5.7 MHA安装与配置
1. 概述
它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,MHA来保证数据库系统的高可用.在宕机的时间内(通常10—30秒内),完成故障切换,部署MHA,可避免主从一致性问题,节约购买新服务器的费用,不影响服务器性能,易安装,不改变现有部署。
还支持在线切换,从当前运行master切换到一个新的master上面,只需要很短的时间(0.5-2秒内),此时仅仅阻塞写操作,并不影响读操作,便于主机硬件维护。
工作原理
(1)从宕机崩溃的master保存二进制日志事件(binlog events);
(2)识别含有最新更新的slave;
(3)应用差异的中继日志(relay log)到其他的slave;
(4)应用从master保存的二进制日志事件(binlog events);
(5)提升一个slave为新的master;
(6)使其他的slave连接新的master进行复制;
2. 搭建环境
1. 架构说明:
IP |
主机名 |
数据库ID |
类型 |
192.168.2.51 |
mysql01 |
251 |
MySQL Master + mha-node |
192.168.2.52 |
mysql02 |
252 |
Mha-node+ Candidate Slave |
192.168.2.53 |
mysql03 |
223 |
Mha-node |
192.168.2.54 |
mysql-mha01 |
|
mha-manager |
OS:CentOS 6.9
Mysql:5.7.20
Mha:0.57
2:配置/etc/my.cnf相关参数,在3各节点中分别配置GTID
log-bin=binlog
binlog-format=ROW
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
重新初始化MySQL(非必须,这部是由于自动化脚本无法判定密码,要自动化必须剔除密码)
mysqld --initialize-insecure --user=mysql
service mysqld restart
设置root密码,创建复制用户:
mysql> use mysql;
mysql> GRANT ALL PRIVILEGES ON *.* TO [email protected]"%" IDENTIFIED BY "123456";
mysql> GRANT GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' identified by '123456';
mysql> grant all privileges on *.* to 'mha'@'%' identified by '123456';
mysql> flush privileges;
在主导出mysqldump -uroot -p --all-databases --triggers --routines --events > /root/all.sql
在备库导入
3:在mysql2、mysql3配置Gtid复制
CHANGE MASTER TO
MASTER_HOST = '192.168.2.51',
MASTER_PORT = 3306,
MASTER_USER = 'repl',
MASTER_PASSWORD = '123456',
MASTER_AUTO_POSITION = 1;