共计 4239 个字符,预计需要花费 11 分钟才能阅读完成。
这期内容当中丸趣 TV 小编将会给大家带来有关 mysql 高可用中 MMM 高可用 mysql 方案是怎么样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
MMM 高可用 mysql 方案
方案简介
MMM 即 Master-Master Replication Manager for MySQL(mysql 主主复制管理器)关于 mysql 主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),这个套件也能对居于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟 ip,除此之外,它还有实现数据备份、节点之间重新同步功能的脚本。MySQL 本身没有提供 replication failover 的解决方案,通过 MMM 方案能实现服务器的故障转移,从而实现 mysql 的高可用。MMM 不仅能提供浮动 IP 的功能,更可贵的是如果当前的主服务器挂掉后,会将你后端的从服务器自动转向新的主服务器进行同步复制,不用手工更改同步配置。这个方案是目前比较成熟的解决方案。
方案优缺点
优点:安全性、稳定性高,可扩展性好,高可用,当主服务器挂掉以后,另一个主立即接管,其他的从服务器能自动切换,不用人工干预。
缺点:至少三个节点,对主机的数量有要求,需要实现读写分离,对程序来说是个挑战。
方案架构图
适用场景
MMM 的适用场景为数据库访问量大,业务增长快,并且能实现读写分离的场景。
方案实战
实战环境介绍
实战环境服务器列表:
ip 地址
Serverid
Mysql
Monitor
10.1.1.111
Centos 5.5 64bit
Master1
10.1.1.113
Centos 5.5 64bit
5.1.63
Master2
10.1.1.75
Centos 5.5 64bit
5.1.63
Slave1
10.1.1.108
Centos 5.5 64bit
5.1.63
实战环境虚拟 IP 列表:
Role
description
10.1.1.176
Read
应用配置的读取 IP,也可以在前端加 lvs 等,做负载均衡。三台数据库每台一个浮动 VIP
10.1.1.177
Read
10.1.1.178
Read
10.1.1.179
Write
应用配置的写入的 VIP,单点写入。
MMM 的安装
在安装 mmm 之前要安装 epel 包,因为 Centos 的默认源中没有 mmm 的安装包,Epel 是企业版 Linux 附加软件包 (Extra Packages for Enterprise Linux) 的缩写,是一个由特别兴趣小组创建、维护并管理的,针对红帽企业版 Linux(RHEL)及其衍生发行版 (比如 CentOS、Scientific Linux) 的一个高质量附加软件包项目。
安装 epel:
wget ftp://ftp.sunet.se/pub/Linux/distributions/yellowdog/yum/6.2/extras/RPMS/epel-release-5-3.noarch.rpm
rpm -Uvh epel-release-5-3.noarch.rpm
安装 monitor 的安装:
yum -y install mysql-mmm*
各个 DB 上只需要安装 mysql-mmm-agent
yum -y install mysql-mmm-agent
MMM 的配置
配置之前的准备
前提是要配置好 master1 和 master2 的主主同步,master1 和 slave1 的主从同步,限于篇幅这里我就不做介绍了。
在配置 mmm 之前首先要在 mysql 中创建除复制帐号之外的另外两个帐号,首先来介绍 monitor user 帐号,这个帐号是 monitor 服务器用来对 mysql 服务器做健康检查的,其次就是 agent user,这个帐号是 mmm agent(mmm 代理)用来变成只读模式和同步 master 等,下面是创建这两个帐号的语句:
GRANT REPLICATION CLIENT ON *.* TO mmm_monitor @ 10.1.1.% IDENTIFIED BY monitor_password
GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO mmm_agent @ 10.1.1.% IDENTIFIED BY agent_password
flush privileges;
这两个语句在每个 mysql 中都要执行一下。
Monitor 服务器的配置
的配置文件在 /etc/mysql-mmm 目录下,monitor 需要配置的文件有 mmm_common.conf、mmm_mon.conf 两个文件。mmm_common.conf 文件在 mmm 的各个节点都是一样的,因此配置好以后 copy 到各个 DB 节点即可。
我 mmm_common.conf 的配置如下:
vim /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 replication
replication_password 123456
agent_user mmm_agent
agent_password agent_password
/host
host db1
ip 10.1.1.113 #这个 IP 尤其注意是 db1 的 IP
mode master
peer db2
/host
host db2
ip 10.1.1.75 #这个 IP 尤其注意是 db2 的 IP
mode master
peer db1
/host
host db3
ip 10.1.1.108
mode slave
/host
role writer
hosts db1, db2
ips 10.1.1.179
mode exclusive
/role
role reader
hosts db1, db2, db3
ips 10.1.1.176, 10.1.1.177, 10.1.1.178
mode balanced
/role
我的 mmm_mon.conf 配置如下:
vim /etc/mysql-mmm/mmm_mon.conf
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 10.1.1.1, 10.1.1.113, 10.1.1.75, 10.1.1.108
# ping_ips 监控了网关 IP 和其他的 DB 节点 IP
auto_set_online 60
/monitor
host default
monitor_user mmm_monitor
monitor_password monitor_password
/host
debug 0
各个 DB 服务器的配置
各个 DB 服务器要配置的东西比较不多,主要有 mmm_common.conf、mmm_agent.conf 和 /etc/default/mysql-mmm-agent 文件。
db1 的配置
文件的配置和前面 monitor 的一样,直接 copy 过来即可使用
的配置:
vim /etc/mysql-mmm/mmm_agent.conf
include mmm_common.conf
this db1
的配置:
vim /etc/default/mysql-mmm-agent
db2 的配置
文件的配置和前面 monitor 的一样,直接 copy 过来即可使用
的配置:
vim /etc/mysql-mmm/mmm_agent.conf
include mmm_common.conf
this db2
的配置:
vim /etc/default/mysql-mmm-agent
db3 的配置
文件的配置和前面 monitor 的一样,直接 copy 过来即可使用
的配置:
vim /etc/mysql-mmm/mmm_agent.conf
include mmm_common.conf
this db3
的配置:
vim /etc/default/mysql-mmm-agent
MMM 的管理
MMM 的启动和停止
MMM 的启动
启动 mmm agent
/etc/init.d/mysql-mmm-agent start
将 agent 的启动命令写入到三个 DB 的 rc.local 文件中
启动 mmm monitor
/etc/init.d/mysql-mmm-monitor start
将 monitor 的启动命令写入到 monitor 服务器的 rc.local 文件中
MMM 的停止
停止 mmm agent
/etc/init.d/mysql-mmm-agent stop
停止 mmm monitor
/etc/init.d/mysql-mmm-monitor stop
MMM 的基本管理
查看集群的状态
mmm_control show
将 db1 设置成 online 状态
mmm_control set_online db1
更多管理命令请使用 mmm_control help 查看,或者参考:
http://blog.chinaunix.net/uid-20639775-id-154606.html
MMM 架构的测试
环境搭建好以后,就需要进行周密的测试,看是否实现了预期的功能:
停掉 master1 后在 monitor 端使用 mmm_control show 看是否能切换。看看 slave1 是否能正确切换同步。
启动 master1 后在 monitor 端使用 mmm_control show 看是否能切换。
停掉 master2 后看看能否正确切换。
MMM 架构的监控
为实现高可用,系统的各个层面都需要全面的监控起来,比如 agent 进程的监控,monitor 进程的监控,mysql 可用性的监控,数据库同步的监控等,推荐使用 nagios 对以上资源进行监控,第一时间发现问题,第一时间处理。
上述就是丸趣 TV 小编为大家分享的 mysql 高可用中 MMM 高可用 mysql 方案是怎么样的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注丸趣 TV 行业资讯频道。