mysql高可用中MMM高可用mysql方案是怎么样的

66次阅读
没有评论

共计 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 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-15发表,共计4239字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)