背景:之前实现的MySQL同步复制功能(见笔者之前文章 )只是双机热备功能,还不能做到Mysql链接的自动切换。
本配置实现真正的mysql集群,使得在某台机子的mysql应用停止时,能让应用程序自动切换到另外一台机子的mysql连接,实现应用的高稳定性,并且使得扩展Mysql服务成为可能。
本配置使用mysql-mmm(master-master Replication Manager for MySQL)组件实现集群功能。
本次演示的配置使用三台机器,架构如下:
Master1 和Master2两台机器实现双机热备,其中一台机器的mysql服务停止或机器宕机,应用程序都会将数据库连接自动切换到另外一台机子。另外用一台机子实时备份master1的数据。
--------------------------------------分割线 --------------------------------------
mysql proxy、MySQL-MMM实现读写分离高可用性
将MySQL-MMM Master从REPLICATION_FAIL状态恢复
CentOS下利用MySQL-MMM实现MySQL高可用
--------------------------------------分割线 --------------------------------------
1、安装mysql-mmm服务
在三台机器都安装
wget Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
yum -y install mysql-mmm*
完成后查看 rpm -qa|grep mysql-mmm
有以下组件表示安装成功
Rhel5或centos5,32位:
Rhel6或centos6,32位:
Rhel6或centos6,64位:
1、添加mysql的用户
在三台机器都添加mysql用户,分别用于复制、
进入mysql服务mysql -u root -p
use mysql;
grant REPLICATION slave,REPLICATION CLIENT on *.* to 'repl'@'%' identified by 'password'; //建立复制用户
grant PROCESS,SUPER,REPLICATION CLIENT on *.* to 'mmm_agent'@'%' identified by 'password'; //建立agent用户
grant REPLICATION CLIENT on *.* to 'mmm_monitor'@'%' identified by 'password'; //建立用户
FLUSH PRIVILEGES;
2、配置同步复制
配置复制的策略如架构图所示。
配置方法在我上一篇文章有介绍过,这里不再重复,见笔者之前文章
3、修改hosts
分别修改三台机器的hosts文件
vi /etc/hosts
添加
200.200.168.24 M1
200.200.168.25 M2
200.200.168.23 slave1
4、配置mysql-mmm
修改 /etc/mysql-mmm/mmm_common.conf 各台机子的配置都一样
active_master_role writer
<host default>
cluster_interface eth0
pid_path /var/run/mysql-mmm/mmm_agentd.pid
bin_path /usr/libexec/mysql-mmm/
replication_user repl
replication_password password
agent_user mmm_agent
agent_password <span>password</span>
</host>
<host M1>
ip 200.200.168.24
mode master
peer M2
</host>
<host M2>
ip 200.200.168.25
mode master
peer M1
</host>
<host slave1>
ip 200.200.168.23
mode slave
</host>
<role writer>
hosts M1,M2
ips 200.200.168.26
mode exclusive
</role>
<role reader>
hosts M1,M2,slave1
ips 200.200.168.27
mode balanced
</role>
注意:200.200.168.26和200.200.168.27是两个虚拟的IP地址,供应用程序调用,只需用两个没人占用的IP就可以,分别用来提供写和读服务,为以后实现数据库的读写分离(但实现读写分离需要修改应用程序,mysql并不能自动识别并切换)。
修改/etc/mysql-mmm/mmm_agent.conf
三台机器分别设置为this M1、this M2、this slave1
修改/etc/mysql-mmm/mmm_mon.conf
只是monitor(200.200.168.24)机子需要配置