`
jackyhongvip
  • 浏览: 159220 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MMM高可用mysql方案

 
阅读更多

1.1方案简介

MMMMaster-Master Replication Manager for MySQLmysql主主复制管理器)关于mysql主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),这个套件也能对居于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟ip,除此之外,它还有实现数据备份、节点之间重新同步功能的脚本。MySQL本身没有提供replication failover的解决方案,通过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。MMM不仅能提供浮动IP的功能,更可贵的是如果当前的主服务器挂掉后,会将你后端的从服务器自动转向新的主服务器进行同步复制,不用手工更改同步配置。这个方案是目前比较成熟的解决方案。

1.2方案优缺点

优点:安全性、稳定性高,可扩展性好,高可用,当主服务器挂掉以后,另一个主立即接管,其他的从服务器能自动切换,不用人工干预。

缺点:至少三个节点,对主机的数量有要求,需要实现读写分离,对程序来说是个挑战。

1.3方案架构图

1.4适用场景

MMM的适用场景为数据库访问量大,业务增长快,并且能实现读写分离的场景。

1.5方案实战

1.5.1实战环境介绍

实战环境服务器列表:

服务器

主机名

ip地址

Serverid

系统

Mysql

Monitor

Mon

10.1.1.111

--

Centos 5.5 64bit

--

Master1

db1

10.1.1.113

1

Centos 5.5 64bit

5.1.63

Master2

db2

10.1.1.75

2

Centos 5.5 64bit

5.1.63

Slave1

db3

10.1.1.108

3

Centos 5.5 64bit

5.1.63

实战环境虚拟IP列表:

VIP

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,单点写入。

 

1.5.2MMM的安装

在安装mmm之前要安装epel包,因为Centos的默认源中没有mmm的安装包,Epel是企业版Linux附加软件包(Extra Packages for Enterprise Linux)的缩写,是一个由特别兴趣小组创建、维护并管理的,针对红帽企业版Linux(RHEL)及其衍生发行版(比如CentOSScientific Linux)的一个高质量附加软件包项目。

安装epel

安装monitor的安装:

yum -y install mysql-mmm*

各个DB上只需要安装mysql-mmm-agent

yum -y install mysql-mmm-agent

1.5.3MMM的配置

1.5.3.1配置之前的准备

前提是要配置好master1master2的主主同步,master1slave1的主从同步,限于篇幅这里我就不做介绍了。

在配置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中都要执行一下。

1.5.3.2Monitor服务器的配置

MMM的配置文件在/etc/mysql-mmm目录下,monitor需要配置的文件有mmm_common.confmmm_mon.conf两个文件。mmm_common.conf文件在mmm的各个节点都是一样的,因此配置好以后copy到各个DB节点即可。

mmm_common.conf的配置如下:

vim /etc/mysql-mmm/mmm_common.conf

active_master_rolewriter

 

<host default>

cluster_interfaceeth0

pid_path/var/run/mysql-mmm/mmm_agentd.pid

bin_path/usr/libexec/mysql-mmm/

replication_userreplication

replication_password123456

agent_usermmm_agent

agent_passwordagent_password

</host>

 

<host db1>

ip10.1.1.113#这个IP尤其注意是db1IP

modemaster

peerdb2

</host>

 

<host db2>

ip10.1.1.75#这个IP尤其注意是db2IP

modemaster

peerdb1

</host>

 

<host db3>

ip10.1.1.108

modeslave

</host>

 

<role writer>

hostsdb1, db2

ips10.1.1.179

modeexclusive

</role>

 

<role reader>

hostsdb1, db2, db3

ips10.1.1.176, 10.1.1.177, 10.1.1.178

modebalanced

</role>

我的mmm_mon.conf配置如下:

vim /etc/mysql-mmm/mmm_mon.conf

include mmm_common.conf

 

<monitor>

ip127.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_ips10.1.1.1, 10.1.1.113, 10.1.1.75, 10.1.1.108

# ping_ips 监控了网关IP和其他的DB节点IP

auto_set_online60

</monitor>

 

<host default>

monitor_usermmm_monitor

monitor_passwordmonitor_password

</host>

 

debug 0

1.5.3.3各个DB服务器的配置

各个DB服务器要配置的东西比较不多,主要有mmm_common.confmmm_agent.conf/etc/default/mysql-mmm-agent文件。

Ødb1 的配置

mmm_common.conf文件的配置和前面monitor的一样,直接copy过来即可使用

mmm_agent.conf的配置:

vim /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf

this db1

mysql-mmm-agent的配置:

vim /etc/default/mysql-mmm-agent

ENABLED=1

Ødb2 的配置

mmm_common.conf文件的配置和前面monitor的一样,直接copy过来即可使用

mmm_agent.conf的配置:

vim /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf

this db2

mysql-mmm-agent的配置:

vim /etc/default/mysql-mmm-agent

ENABLED=1

 

Ødb3 的配置

mmm_common.conf文件的配置和前面monitor的一样,直接copy过来即可使用

mmm_agent.conf的配置:

vim /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf

this db3

mysql-mmm-agent的配置:

vim /etc/default/mysql-mmm-agent

ENABLED=1

1.5.4MMM的管理

1.5.4.1MMM的启动和停止

ØMMM的启动

启动mmm agent

/etc/init.d/mysql-mmm-agent start

agent的启动命令写入到三个DBrc.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

1.5.4.2MMM的基本管理

查看集群的状态

mmm_control show

db1设置成online状态

mmm_control set_online db1

更多管理命令请使用mmm_control help查看,或者参考:

http://blog.chinaunix.net/uid-20639775-id-154606.html

1.5.5MMM架构的测试

环境搭建好以后,就需要进行周密的测试,看是否实现了预期的功能:

Ø停掉master1后在monitor端使用mmm_control show看是否能切换。看看slave1是否能正确切换同步。

Ø启动master1后在monitor端使用mmm_control show看是否能切换。

Ø停掉master2后看看能否正确切换。

1.5.6MMM架构的监控

为实现高可用,系统的各个层面都需要全面的监控起来,比如agent进程的监控,monitor进程的监控,mysql可用性的监控,数据库同步的监控等,推荐使用nagios对以上资源进行监控,第一时间发现问题,第一时间处理。

分享到:
评论

相关推荐

    MySQL高可用方案大全

    Lvs+Keepalived+MySQL 单点写入主主同步高可用方案 Lvs+Keepalived+MySQL 单点写入读负载均衡主主同步高可用方案 Heartbeat高可用MySQL主主同步方案 Heartbeat+DRBD+MySQL高可用方案 MMM高可用MySQL方案

    Mysql数据库高可用性方案实践

    5. MMM高可用mysql方案: - MMM(Master-Master replication manager for MySQL)是一个为MySQL高可用而设计的工具。 - 它可以管理多台MySQL服务器的主主同步,并在故障时自动切换。 - MMM能够提供更加智能化的...

    mysql-mmm高可用

    MySQL-MM(Master-Master Replication Manager)是一种针对MySQL数据库实现主主复制的高可用解决方案,旨在提供读写分离和故障切换的能力。MySQL-MM是社区维护的开源项目,它通过一个中间件来管理多个MySQL主主复制...

    详解MySQL高可用MMM搭建方案及架构原理

    MySQL高可用MMM(Mysql-Multi-Master Replication Manager)是一种多主复制解决方案,它允许在多个MySQL主节点之间进行数据同步,以实现高可用性和负载均衡。然而,MMM并不适合那些对数据一致性有严格要求的业务场景...

    mysql-MMM实现mysql高可用

    MySQL-MM(Master-Master Replication Manager)是一种用于MySQL数据库的高可用性和负载均衡解决方案,它构建在MySQL主主复制的基础上,提供了更为高级的管理和监控功能。在这个系统中,两个MySQL服务器互相作为彼此的...

    MySQL-MMM高可用.docx

    MySQL-MMM高可用架构详解 MySQL-MMM是Master-Master replication manager for MySQL,主要...MySQL-MMM架构是实现高可用性和负载均衡的-effective解决方案。通过使用MMM架构,可以确保 MySQL 服务的连续性和可靠性。

    MySQL之MMM高可用架构搭建

    MMM,全称为MySQL-Multi-Master Replication,是一种支持多主复制的解决方案。在MMM架构中,每个节点都可以作为主节点,同时接收来自其他节点的数据更新,并将这些更新传播到其他节点,实现数据的实时同步。这种架构...

    Mysql-mmm双主高可用集群

    总的来说,MMM为MySQL数据库提供了一种相对简单的双主高可用解决方案,对于希望在保证可用性的同时,能够接受一定程度的数据一致性风险的场景,是一个可以考虑的选择。然而,随着技术的发展,一些新的高可用架构(如...

    16.MMM 高可用配置及故障切换.rar

    MMM(Master-Master Replication Manager)是用于管理MySQL主主复制的一种工具,它提供了一种高可用性的解决方案,能够实现数据库的无缝故障切换,确保数据服务不间断。本文将深入探讨MMM的配置方法及其在故障切换中...

    mysql5.7高可用MMM

    本篇文章将深入探讨MySQL 5.7的高可用性解决方案——MMM(Multi-Master Replication Manager for MySQL),这是一种用于管理MySQL多主复制的工具。 多主复制(Multi-Master Replication)是一种分布式数据库架构,...

    阻止你的MySQL集群罢工——MySQL高可用性方案探讨.pdf

    另外,MySQL Replication与其他集群软件结合使用,如MMM(Multi-Master Replication Manager for MySQL)或Heartbeat+DRBD+MySQL,可以提供更高的可用性级别。DRBD(Distributed Replicated Block Device)通过底层...

    mysql-mmm-2.2.1

    总的来说,MySQL-MMM为MySQL的高可用性和负载均衡提供了一种可行的方案,尤其适用于那些需要主-主复制、能够处理大量写操作的大型系统。它能够解决单点故障问题,并通过提供故障转移和负载均衡的功能,确保数据库...

    Mysql_mmm_rpm.rar

    MySQL-MMM,全称为“MySQL Multi-Master Replication”,是一个开源的、高可用性的解决方案,用于管理MySQL数据库的多主复制。它旨在提供一个灵活、可扩展的框架,以实现数据库集群的高可用性和容错性。在MySQL-MMM...

Global site tag (gtag.js) - Google Analytics