Mysql实现高可用架构之MHA

MHA介绍:MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。MHA 的出现就是解决MySQL 单点的问题。MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。MHA能在故障切换的过程中最大程度上保证数据的一致性,以达到真正意义上的高可用。

MHA:maser HA,对mysql数据库主从集群中的主节点部署高可用,解决主库的单点故障

MHA 的组成

●MHA Node(数据节点)MHA Node 运行在每台 MySQL 服务器上。

●MHA Manager(管理节点)MHA Manager 可以单独部署在一台独立的机器上,管理多个 master-slave 集群;也可以部署在一台 slave 节点上。MHA Manager 会定时探测集群中的 master 节点。当 master 出现故障时,它可以自动将最新数据的 slave 提升为新的 master, 然后将所有其他的 slave 重新指向新的 master。整个故障转移过程对应用程序完全透明。

MHA 的特点

●自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据不丢失

●使用半同步复制,可以大大降低数据丢失的风险,如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性

●目前MHA支持一主多从架构,最少三台服务,即一主两从

MHA工作原理:
1.部署管理者节点监控数据库集群中节点的运行状态
2.如果主库故障,管理者节点会尽量获取主库的二进制日志(如果主库是物理故障,比如说服务器宕机,这种情况下管理者节点是获取不到二进制日志的),如果可以从坏主获取到二进制日志,那么管理者节点就会把日志暂时存储在自己的工作目录当中
3.管理者节点在从节点中找出中继日志最新的这台节点,把他的中继日志同步给其它从节点,保证从节点之间的数据一致(因为mysql数据库采用半同步方法,在主节点故障时,从节点还没有来得及同步新的数据)
4.管理者节点根据配置在从节点中选出新的主节点,并把从坏主获取到的二进制日志交给这个新的主节点
5.新主节点之前指向的主节点的信息会被清除,集群中其余的从节点会重新指向新的主节点,这个过程由MHA自动实现,不需要管理员手动干预

实验环境:互相通信,联网
一台主mysql:192.168.10.100
一台新主mysql:192.168.10.101
一台从mysql:192.168.10.102
一台manager:192.168.10.103

#主库配置文件
server-id=1
log-bin=mysql-bin
#重启服务
service mysqld restart
#授权
mysql> grant replication slave on *.* to "slave"@"192.168.10.%" identified by "123.com";
mysql> grant all on *.* to "mha"@"192.168.10.%" identified by "123.com";

#从库配置文件
server-id=2
log-bin=mysql-bin
relay-log=relay-log-bin
relay_log_purge=0
read_only=1
#重启服务
service mysqld restart
#指定主库
mysql> change master to master_host="192.168.10.100",master_user="slave",master_password="123.com",master_log_file="mysql-bin.000003",master_log_pos=556;
#授权
mysql> grant replication slave on *.* to "slave"@"192.168.10.%" identified by "123.com";
mysql> grant all on *.* to "mha"@"192.168.10.%" identified by "123.com";
.
#四台节点免密登录
ssh-keygen
ssh-copy-id -i root@192.168.10.100
ssh-copy-id -i root@192.168.10.101
ssh-copy-id -i root@192.168.10.102
ssh-copy-id -i root@192.168.10.103

##部署MHA
##安装epel源
[root@localhost 桌面]# rpm -ihv epel-release-latest-7.noarch.rpm
##安装node包
#安装依赖包
[root@localhost 桌面]# yum -y install perl-DBD-mysql  perl-DBI
#安装node
[root@localhost 桌面]# rpm -ihv mha4mysql-node-0.56-0.el6.noarch.rpm
##安装manager
#安装依赖包
[root@localhost 桌面]# yum -y install perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager
#安装manager
[root@localhost 桌面]# rpm -ihv mha4mysql-manager-0.56-0.el6.noarch.rpm 
##全局配置文件
/etc/masterha_default.cnf
[server default]
user=mha
password=123.com
ssh_user=root
repl_user=slave
repl_password=123.com
master_binlog_dir=/usr/local/mysql/data
remote_workdir=/data/master
ping_interval=2
shutdown_script=""

##管理者节点配置文件
/etc/mha/app1.cnf
[server default]
manager_workdir=/data/manager/
manager_log=/data/manager/manager.log

[server1]
hostname=192.168.10.100
port=3306
ssh_port=22

[server2]
hostname=192.168.10.101
port=3306
ssh_port=22
candidate_master=1

[server3]
hostname=192.168.10.102
port=3306
ssh_port=22

##检查节点间的ssh通信是否正常
[root@localhost 桌面]# masterha_check_ssh --global-conf=/etc/masterha_default.cnf --conf=/etc/mha/app1.cnf

##测试数据库节点间主从复制是否正常
[root@localhost 桌面]# masterha_check_repl --global-conf=/etc/masterha_default.cnf --conf=/etc/mha/app1.cnf

##开启MHA
[root@localhost 桌面]# masterha_manager --global-conf=/etc/masterha_default.cnf --conf=/etc/mha/app1.cnf

##将主mysql宕了验证故障转移是否成功

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你刘海飞了!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值