mysql MMM高可用方案

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

mysql  MMM高可用方案

 MMM简介:

MMMMaster-Master Replication Manager for MySQLmysql主主复制管理器)关于mysql主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),这个套件也能对居于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟ip,除此之外,它还有实现数据备份、节点之间重新同步功能的脚本。

MySQL本身没有提供replication failover的解决方案,通过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。

环境配置

MMM_monitor:172.19.0.122

MySQL_master1:172.19.0.121 (db1)

MySQL_master2:172.19.0.122(db2)

MySQL_slave1:172.19.123(db3)

VIP_Write:172.19.0.126

vip_Read1:172.19.0.127, 172.19.0.128

 

三台服务安装好mysql,把db1db2做成主主同步,db3为从,是同步db1的。后面搭建好mmm后,当DB1的脱机后,db3会自动change同步db2

1.设置hosts解析

三台服务的配置如下

[root@db1 ~]# cat /etc/hosts

172.19.0.121 db1

172.19.0.122 db2

172.19.0.123 db3

 

创建三个账号。

(复制账号)

GRANT REPLICATION slave,REPLICATION CLIENT ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl';

(代理账号)

GRANT PROCESS,SUPER,REPLICATION CLIENT ON *.* TO 'mmm_agent'@'%' IDENTIFIED BY '123456';

(监听账号)

GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'%' IDENTIFIED BY '123456';

 

3.安装mysql-mmm

在三台服务上分别进行安装,安装命令如下:

#wget http://download.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

#rpm -ivh epel-release-5-4.noarch.rpm

#yum -y install mysql-mmm*

 

4.配置MMM监控、代理服务

在三台服务器修改mmm_common.conf配置文件

[root@db1 ~]# cd /etc/mysql-mmm/

[root@db1 mysql-mmm]# vi 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    repl

    agent_user              mmm_agent

    agent_password          123456

</host>

 

<host db1>

    ip      172.19.0.121

    mode    master

    peer    db2

</host>

 

<host db2>

    ip      172.19.0.122

    mode    master

    peer    db1

</host>

 

<host db3>

    ip      172.19.0.123

    mode    slave

</host>

 

<role writer>

    hosts   db1, db2

    ips     172.19.0.126

    mode    exclusive

</role>

<role reader>

    hosts   db1, db2, db3

    ips     172.19.0.127,172.19.0.128

    mode    balanced

</role>

 

其次,修改三台服务器mmm_agent.conf配置文件

[root@db1 mysql-mmm]# cat mmm_agent.conf

include mmm_common.conf

 

# The 'this' variable refers to this server.  Proper operation requires

# that 'this' server (db1 by default), as well as all other servers, have the

# proper IP addresses set in mmm_common.conf.

this db1

 

[root@db2 mysql-mmm]# cat mmm_agent.conf

include mmm_common.conf

 

# The 'this' variable refers to this server.  Proper operation requires

# that 'this' server (db1 by default), as well as all other servers, have the

# proper IP addresses set in mmm_common.conf.

this db2

 

[root@db3 mysql-mmm]# cat mmm_agent.conf

include mmm_common.conf

 

# The 'this' variable refers to this server.  Proper operation requires

# that 'this' server (db1 by default), as well as all other servers, have the

# proper IP addresses set in mmm_common.conf.

this db3

 

最后修改172.19.0.122db2 mysql-mon服务配置mmm_mon.conf配置文件,把这台做为MMM_monitor

[root@db2 mysql-mmm]# cat mmm_mon.conf

include mmm_common.conf

 

# The 'this' variable refers to this server.  Proper operation requires

# that 'this' server (db1 by default), as well as all other servers, have the

# proper IP addresses set in mmm_common.conf.

this db1

[root@db1 mysql-mmm]# cat 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            172.19.0.121,172.19.0.122,172.19.0.123

    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    123456

</host>

 

debug 0

 

这样,配置MMM监控,代理服务的工作就完成了

5.启动相关服务

在三台服务器启动以下服务

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

 

db2中启动mysql-mon监控服务

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

 

 

查看MMM状态信息

[root@db2 mysql-mmm]# mmm_control show

  db1(172.19.0.121) master/ONLINE. Roles: writer(172.19.0.126)

  db2(172.19.0.122) master/ONLINE. Roles: reader(172.19.0.127)

  db3(172.19.0.123) slave/ONLINE. Roles: reader(172.19.0.128)

 

[root@db2  mysql-mmm]# mmm_control checks all

db2  ping         [last change: 2014/08/22 16:57:07]  OK

db2  mysql        [last change: 2014/08/22 16:57:07]  OK

db2  rep_threads  [last change: 2014/08/22 16:57:07]  OK

db2  rep_backlog  [last change: 2014/08/22 16:57:07]  OK: Backlog is null

db3  ping         [last change: 2014/08/22 16:57:07]  OK

db3  mysql        [last change: 2014/08/22 17:11:48]  OK

db3  rep_threads  [last change: 2014/08/22 16:57:07]  OK

db3  rep_backlog  [last change: 2014/08/22 16:57:07]  OK: Backlog is null

db1  ping         [last change: 2014/08/22 16:57:07]  OK

db1  mysql        [last change: 2014/08/22 16:57:07]  OK

db1  rep_threads  [last change: 2014/08/22 16:57:07]  OK

db1  rep_backlog  [last change: 2014/08/22 16:57:07]  OK: Backlog is null

 

 

以上说明成功,为了数据一致性,我们采用半同步方案

 


本文转自 jxzhfei  51CTO博客,原文链接:http://blog.51cto.com/jxzhfei/1543409


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
存储 SQL 关系型数据库
Mysql高可用架构方案
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
163 3
Mysql高可用架构方案
|
1天前
|
存储 缓存 关系型数据库
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
MySQL的存储引擎是其核心组件之一,负责数据的存储、索引和检索。不同的存储引擎具有不同的功能和特性,可以根据业务需求 选择合适的引擎。本文详细介绍了MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案。
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
|
10天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
1月前
|
关系型数据库 MySQL
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
73 5
|
1月前
|
关系型数据库 MySQL
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
43 1
|
3月前
|
存储 SQL 关系型数据库
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
MySQL调优主要分为三个步骤:监控报警、排查慢SQL、MySQL调优。 排查慢SQL:开启慢查询日志 、找出最慢的几条SQL、分析查询计划 。 MySQL调优: 基础优化:缓存优化、硬件优化、参数优化、定期清理垃圾、使用合适的存储引擎、读写分离、分库分表; 表设计优化:数据类型优化、冷热数据分表等。 索引优化:考虑索引失效的11个场景、遵循索引设计原则、连接查询优化、排序优化、深分页查询优化、覆盖索引、索引下推、用普通索引等。 SQL优化。
643 15
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
|
3月前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
528 15
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
2月前
|
SQL 关系型数据库 MySQL
mysql集群方案
mysql集群方案
51 0
|
4月前
|
SQL 关系型数据库 MySQL
orchestrator搭建mysql高可用
orchestrator搭建mysql高可用
56 0
|
4月前
|
缓存 关系型数据库 MySQL
如何实现mysql高可用集群
如何实现mysql高可用集群
58 0

推荐镜像

更多