来源:自学PHP网 时间:2015-04-16 10:50 作者: 阅读:次
[导读] 背景:之前实现的mysql同步复制功能(见笔者之前文章http: blog csdn net kingofworld article details 39210937)只是双机热备功能,还不能做到Mysql链接的自动切换。本配置实现真正的mysql集群,使得...
|
背景:之前实现的mysql同步复制功能(见笔者之前文章http://blog.csdn.net/kingofworld/article/details/39210937)只是双机热备功能,还不能做到Mysql链接的自动切换。 本配置实现真正的mysql集群,使得在某台机子的mysql应用停止时,能让应用程序自动切换到另外一台机子的mysql连接,实现应用的高稳定性,并且使得扩展Mysql服务成为可能。 本配置使用mysql-mmm(master-master Replication Manager for MySQL)组件实现集群功能。 本次演示的配置使用三台机器,架构如下:
Master1 和Master2两台机器实现双机热备,其中一台机器的mysql服务停止或机器宕机,应用程序都会将数据库连接自动切换到另外一台机子。另外用一台机子实时备份master1的数据。 1、安装mysql-mmm服务 在三台机器都安装 wget http://dl.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位:http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm Rhel6或centos6,32位:http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm Rhel6或centos6,64位:http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 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、配置同步复制 配置复制的策略如架构图所示。 配置方法在我上一篇文章有介绍过,这里不再重复,见笔者之前文章http://blog.csdn.net/kingofworld/article/details/39210937 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 style="font-size: 13.3333339691162px;">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)机子需要配置
include mmm_common.conf
<monitor>
ip 127.0.0.1
pid_path /var/run/mysql-mmm/mmm_mond.pid
bin_path /usr/libexec/mysql-mmm
status_path /var/lib/mysql-mmm/mmm_mond.status
ping_ips 200.200.168.24,200.200.168.25,200.200.168.23
auto_set_online 10
# The kill_host_bin does not exist by default, though the monitor will
# throw a warning about it missing. See the section 5.10 "Kill Host
# Functionality" in the PDF documentation.
#
# kill_host_bin /usr/libexec/mysql-mmm/monitor/kill_host
#
</monitor>
<host default>
monitor_user mmm_monitor
monitor_password password
</host>
debug 0
配置完成后运行 三台机子都需运行: /etc/init.d/mysql-mmm-agent start Monitor机子运行 /etc/init.d/mysql-mmm-monitor start 5、查看服务状态及测试 在monitor机子运行mmm_control show 可以看到以下信息:
表示写服务器(200.200.168.26)使用的是200.200.168.24 读服务器(200.200.168.27)使用的是200.200.168.25 查看各个服务的状态: mmm_control checks all
6、测试: 将master1的mysql服务停止,然后mmm_control show查看状态
可以看到读写服务器都转移到了master2,这时服务器master1的流程应用还能够正常使用,可以进行申请流程测试 这时查看mmm_control checks all ![]() 将master1 的mysql服务启动,再查看状态:
读写服务器又分开了 ![]() |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com