MHA(master high availability)数据库高可用集群

主从集群中主库是来写数据的,从库读取数据,当主库宕机从库不能使用没有写入数据的地方,就会造成整个架构不能正常使用。
MHA: 是一套优秀的作为MySQL高可用环境下故障切换和只从提升的软件,MySQL故障切换的过程中MHA能做到30s之内自动完成数据库的切换操作,并在进行故障排除切换过程中MHA能在最大过程度保证数据一致性,以达到真正意义上的高可用。
MHA特点:

  • 故障转移
  • 尽可能保证数据的一致性

MHA工作原理:
当监控到主库宕机,会尝试获取宕机主库的二进制文件,获取到之后找到最新同同步的从库,将该文件的中继日志传递给其他从库,来同步数据,保证从库之间的数据一致,从从库当中选出一台作为新主库,并同步bin-log(二进制)二进制文件,其余的从库从这个新主库同步数据,并保证主从集群的正常运行。

192.168.10.3
从1 192.168.10.4
从2 192.168.10.5
MHA 192.168.10.6

修改从数据库的配置文件

#一主一从不需要添加,一主多从添加防止主数据库宕机后从删除二进制文件
vim /etc/my.cnf
#添加内容  
 12 relay_log_purge=0
 13 read_only=1
#重启mysql服务

三台主机授权

grant all on *.* to "mha"@"192.168.10.%" identified by "123.com";
grant replication slave on *.* to"slave"@"192.168.10.%" identified by "123.com";
flush privileges;
#从库查看主从是否能连接成功
show slave status\G	
#是否有两个Yes
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

四台主机做免密登录

#主
[root@CentOS3 ~]# ssh-keygen 
[root@CentOS3 ~]# ssh-copy-id [email protected]
[root@CentOS3 ~]# ssh-copy-id [email protected]
[root@CentOS3 ~]# ssh-copy-id [email protected]
#从1
[root@CentOS4 ~]# ssh-keygen 
[root@CentOS4 ~]# ssh-copy-id [email protected]
[root@CentOS4 ~]# ssh-copy-id [email protected]
[root@CentOS4 ~]# [root@CentOS4 ~]# ssh-copy-id [email protected]
#从2
[root@CentOS5 ~]# ssh-keygen 
[root@CentOS5 ~]# ssh-copy-id [email protected]
[root@CentOS5 ~]# ssh-copy-id [email protected]
[root@CentOS5 ~]# ssh-copy-id [email protected]
#MHA
[root@CentOS6 ~]# ssh-keygen 
[root@CentOS6 ~]# ssh-copy-id [email protected]
[root@CentOS6 ~]# ssh-copy-id [email protected]
[root@CentOS6 ~]# ssh-copy-id [email protected]

四台主机安装node节点

mv /etc/yum.repos.d/default/* /etc/yum.repos.d/
rpm -ivh epel-release-latest-7.noarch.rpm
yum -y install perl-DBD-mysql perl-DBI
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

MHA:

[root@CentOS6 ~]# yum -y install perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager
#如果没有自带的yum源则用下面这个方法
#############################################
[root@CentOS6 ~]# cd /etc/yum.repos.d/
[root@CentOS6 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@CentOS6 ~]# yum -y install perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager
#############################################
[root@CentOS6 ~]# rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm
#编写管理节点文件
[root@CentOS6 ~]# vim /etc/masterha_default.cnf
[server default]
user=mha	#数据库给manager管理节点的授权用户
password=123.com	#
repl_user=slave
repl_password=123.com
ssh_user=root
master_binlog_dir=/usr/local/mysql/data
remote_workdir=/data/login
ping_interval=2
shutdown_script=""
[root@CentOS6 ~]# mkdir /etc/mha
[root@CentOS6 ~]# vim /etc/mha/app1.cnf
[server default]
manager_workdir=/var/log/manager
manager_log=/var/log/manager/manager.log
[server1]
hostname=192.168.10.3
port=3306
ssh_port=22
[server2]
hostname=192.168.10.4
port=3306
ssh_port=22
candidate_master=1
[server3]
hostname=192.168.10.5
port=3306
ssh_port=22
#检测manager节点和后端节点的连接
[root@CentOS6 ~]# masterha_check_ssh  --global-conf=/etc/masterha_default.cnf --conf=/etc/mha/app1.cnf
[root@CentOS6 ~]# masterha_check_repl  --global-conf=/etc/masterha_default.cnf --conf=/etc/mha/app1.cnf
#启动服务
[root@CentOS6 ~]# masterha_manager  --global-conf=/etc/masterha_default.cnf --conf=/etc/mha/app1.cnf

验证:

#将mysql主服务器关掉,去从1上创建数据,在从2上查看数据是否同步成功
#主
[root@CentOS3 ~]# /etc/init.d/mysqld stop
#从1
[root@CentOS4 ~]# mysql -uroot -p123.com
mysql> create database si;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| lkx                |
| mysql              |
| performance_schema |
| si                 |
| test               |
+--------------------+
#从2
[root@CentOS4 ~]# mysql -uroot -p123.com
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| lkx                |
| mysql              |
| performance_schema |
| si                 |
| test               |
+--------------------+

你可能感兴趣的:(架构1)