MySQL 高可用集群架构 MHA 详解(2)

相较于其它HA软件,MHA的目的在于维持MySQL ReplicationMaster库的高可用性,其最大特点是可以修复多个Slave之间的差异日志,最终使所有Slave保持数据一致,然后从中选择一个充当新的Master,并将其它Slave指向它。

-从宕机崩溃的master保存二进制日志事件(binlogevents)

-识别含有最新更新的slave

-应用差异的中继日志(relay log)到其它slave

-应用从master保存的二进制日志事件(binlogevents)

-提升一个slave为新master

-使其它的slave连接新的master进行复制。

 

目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库,因为至少需要三台服务器。

部署环境如下:

角色   Ip   主机名   os  
master   192.168.137.134   master   CentOS 6.5 x86_64  
Candidate   192.168.137.130   Candidate      
slave+manage   192.168.137.146   slave      

其中master对外提供写服务,Candidate为备选master,管理节点放在纯slave机器上。master一旦宕机,Candidate提升为主库

一、基础环境准备

1、在3台机器上配置epel源

wget -O /etc/yum.repos.d/CentOS-Base.repo

rpm -ivh Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

2、建立ssh无交互登录环境

[root@master ~]#ssh-keygen -t rsa -P ''        

chmod 600 .ssh/*

cat .ssh/id_rsa.pub >.ssh/authorized_keys

scp -p  .ssh/id_rsa .ssh/authorized_keys 192.168.137.130:/root/.ssh

scp -p  .ssh/id_rsa .ssh/authorized_keys 192.168.137.146:/root/.ssh

二、配置mysql半同步复制

注意:mysql主从复制操作此处不做演示

master授权:

grant replication slave,replication client on *.* to 'repl'@'192.168.137.%' identified by '123456';

grant all on *.* to 'mhauser'@'192.168.137.%' identified by '123456';

Candidate授权:

grant replication slave,replication client on *.* to 'repl'@'192.168.137.%' identified by '123456';

grant all on *.* to 'mhauser'@'192.168.137.%' identified by '123456';

slave授权

grant all on *.* to 'mhauser'@'192.168.137.%' identified by '123456';

如果用mysql默认的异步模式,当主库硬件损坏宕机造成的数据丢失,因此在配置MHA的同时建议配置成MySQL的半同步复制。

注:mysql半同步插件是由谷歌提供,具体位置/usr/local/mysql/lib/plugin/下,一个是master用的semisync_master.so,一个是slave用的semisync_slave.so,

mysql> show variables like '%plugin_dir%';

+---------------+------------------------------+

| Variable_name | Value                        |

+---------------+------------------------------+

| plugin_dir    | /usr/local/mysql/lib/plugin/ |

+---------------+------------------------------+

1、分别在主从节点上安装相关的插件(master,Candidate,slave)

在MySQL上安装插件需要数据库支持动态载入。检查是否支持,用如下检测:

mysql> show variables like '%have_dynamic_loading%';

+----------------------+-------+

| Variable_name        | Value |

+----------------------+-------+

| have_dynamic_loading | YES  

所有mysql数据库服务器,安装半同步插件(semisync_master.so,semisync_slave.so)

mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';

mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';

检查Plugin是否已正确安装:
mysql> show plugins;

mysql> select * from information_schema.plugins;

查看半同步相关信息

mysql> show variables like '%rpl_semi_sync%';

rpl_semi_sync_master_enabled       | OFF   |

| rpl_semi_sync_master_timeout       | 10000 |

| rpl_semi_sync_master_trace_level   | 32    |

| rpl_semi_sync_master_wait_no_slave | ON    |

| rpl_semi_sync_slave_enabled        | OFF   |

| rpl_semi_sync_slave_trace_level    | 32 

上图可以看到半同复制插件已经安装,只是还没有启用,所以是OFF

2、修改my.cnf文件,配置主从同步:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/e77e4e4e63e9f717e19b57a0f5bc94bc.html