MySQL 运维 - MHA高可用集群部署
一、MHA概述
HHA
可以实现单点故障切换和主从复制[0到30秒内自动完成故障切换]当主服务器挂掉后备用的就会顶替,为抢救主服务器争取时间
故障自动切换的过程中,MHA
会试图从宕机的Master
上保存二进制日志最大程度的保证数据不丢失,并采用半同步复制,可以大大降低数据丢失的风险,如果只有一个slave
已经收到了最新的二进制日志,MHA
就可以将最新的二进制日志应用于其他所有的slave
服务器上,因此也可以保证所有节点的数据一致性
二、MHA的组成
MHA Node数据节点
运行在每台MySQL
服务器上
MHA Manager管理节点
可以单独部署在一台独立的机器上或一台slave
节点上并管理多个master-slave
集群
它会不定期对集群中的master
节点巡检,当发现master
出现故障,可以自动将最小数据的
slave
提升为新的master
,然后将所有其他的slave重写指向新的master
三、故障场景
虽然做了主从负载均衡但是无法实现高可用
四、开始部署
主机名 | 主机 | 操作系统 | IP 地址 | 主要软件 |
---|---|---|---|---|
CentOS 7-5 | MHAmanager | CentOS 7 | 192.168.0.50 | MHAnode组件、MHAmanager组件 |
CentOS 7-1 | MySQL1 | CentOS 7 | 192.168.0.10 | mysql-server、MHAnode组件 |
CentOS 7-2 | MySQL2 | CentOS 7 | 192.168.0.20 | mysql-server、MHAnode组件 |
CengOS 7-3 | MySQL3 | CentOS 7 | 192.168.0.30 | mysql-server、MHAnode组件 |
1.修改配置文件
修改三台MySQL
的主配置文件
Master主机
vim /etc/my.cnf
[mysqld]
server-id = 10
log_bin = master-bin
log-slave-updates = true
systemctl restart mysqld
ln -s /usr/local/mysql/bin/mysql /usr/sbin/
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/
#创建 mysql 命令与 mysql 日志文件的软链接,便于系统识别
Slave主机
server-id = 20
#server-id = 30 Slave2
log_bin = master-bin
relay-log = relay-log-bin
relay-log-index = slave-relay-bin.index
systemctl restart mysqld
ln -s /usr/local/mysql/bin/mysql /usr/sbin/
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/
2.配置一主两从
对所有的MySQL服务器进行授权
mysql -uroot -p
#允许192.168.0的网段都可以进行从服务器的复制操作
grant replication slave on *.* to 'myslave'@'192.168.0.%' identified by '123456';
#允许用户fox对192.168.0网段内所有数据库执行任何操作
grant all privileges on *.* to 'fox'@'192.168.0.%' identified by '123456';
grant all privileges on *.* to 'fox'@'mysql1' identified by '123456';
grant all privileges on *.* to 'fox'@'mysql2' identified by '123456';
grant all privileges on *.* to 'fox'@'mysql3' identified by '123456';
flush privileges;
2.1 查看主服务器状态
#二进制和偏移量一定要记住
show master status;
3.配置Slave主服务器信息
change master to master_host='192.168.0.10',master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=1743;
start slave;
show slave status\G
3.1 测试主从复制
Master
create database bbs;
Slaves
show databses;
4.安装MHA
所有服务器都安装MHA和EPEL
yum