千家信息网

MMM架构方案与实施

发表于:2024-10-08 作者:千家信息网编辑
千家信息网最后更新 2024年10月08日,MMM架构方案与实施MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器),是关于mysql主主复制配置的监控、故障转移和管理的一套
千家信息网最后更新 2024年10月08日MMM架构方案与实施

MMM架构方案与实施

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

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

MMM项目来自 Google:http://code.google.com/p/mysql-master-master

官方网站为:http://mysql-mmm.org

MMM主要功能由下面三个脚本提供

mmm_mond :负责所有的监控工作的监控守护进程,决定节点的移除等等

mmm_agentd :运行在mysql服务器上的代理守护进程,通过简单远程服务集提供给监控节点

mmm_control :通过命令行管理mmm_mond进程

关于此架构的优缺点:

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

缺点:至少三个节点,对主机的数量有要求,需要实现读写分离,可以在程序扩展上比较难实现。同时对主从(双主)同步延迟要求比较高!因此不适合数据安全非常严格的场合。

实用场所:高访问量,业务增长快,并且要求实现读写分离的场景。

环境部署:

master1 ip :192.168.1.10

master2 ip :192.168.1.20

slave1 ip :192.168.1.30

slave2 ip:192.168.1.40

monitor ip:192.168.1.50

所有主机都要安装MMM的依赖包这里就单以master1为例进行演示其他四台均是如此,无任何的修改变动。

#yum -y install perl-* libart_lgpl.x86_64 rrdtool.x86_64 rrdtool-perl.x86_64

安装perl库,使用centos7的互联网yum源安装

#cpan -i Algorithm::Diff Class::Singleton DBI DBD::mysql Log::Dispatch Log::Log4perl Mail::Send Net::Ping Proc::Daemon Time::HiResParams::Validate Net::ARP

为了防止后续环境中出现报错信息这里进行修改;给出解决方法:

解决方法:

# cpan Proc::Daemon
# cpan Log::Log4perl

在所有主机上配置/etc/hosts文件,添加如下内容:这里还是以master1为例;其他四台均是如此

在这里我们使用monitor对其他四台主机进行ping命令测试,查看是否可以互通:

master1、master2、slave1、slave2主机上安装mysql5.7和配置复制

master1和master2互为主从,slave1、slave2为master1的从

在每个mysql的配置文件/etc/my.cnf中加入以下内容, 注意server_id不能重复。

master1服务器:

master2服务器

slave1服务器

slave2服务器

在完成了对my.cnf的修改后,通过systemctl restart mysqld重新启动mysql服务

4台数据库主机若要开启防火墙,要么关闭防火墙或者创建访问规则:

firewall-cmd --permanent --add-port=3306/tcp

firewall-cmd --reload

在这里我们采用关闭防火墙;但如果应用在生产环境当中,此做法不可取,可使用上面的方式,开放3306端口

主从配置(master1和master2配置成主主,slave1和slave2配置成master1的从)

master1上授权:

mysql> grant replication slave on *.* to rep@'192.168.1.%' identified by '123456';

master2上授权:

mysql> grant replication slave on *.* to rep@'192.168.1.%' identified by '123456';

master2、slave1和slave2配置成master1的从库:

master1上执行show master status; 获取binlog文件和Position点

mysql> show master status;

master2、slave1和slave2执行

mysql> change master to master_host='192.168.1.10',master_port=3306,master_user='rep',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=451;

master2执行:

slave1执行:

slave2执行:

执行成功之后开始验证主从复制结果:

mysql> start slave;

mysql> show slave status\G;

首先对master2进行验证结果let's go

接下来是slave1验证:

最后是对slave2进行验证:

通过以上结果表明这四台数据库的主从复制已经搭建好了;但是我们需要的是master1和master2是主主复制,所以接下来还要对master1进行配置:

master1配置成master2的从库:

master2上执行show master status ;获取binlog文件和Position点

mysql> show master status;

master1上执行:

mysql> change master to master_host='192.168.1.20',master_port=3306,master_user='rep',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=154;

验证master1和master2的主主复制:

mysql> start slave ;

mysql> show slave status\G;

我们来捋一捋思路;这里master1和master2是主主复制

slave1和slave2与master1是主从复制的关系,接下来配置MMM的配置;

首先:在4台mysql节点上创建用户{master1、2和 slave1、2}

创建代理账号:

mysql> grant super,replication client,process on *.* to 'mmm_agent'@'192.168.1.%' identified by '123456';

创建监控账号:

mysql> grant replication client on *.* to 'mmm_monitor'@'192.168.1.%' identified by '123456';

这里还是以master1为例,由于他们已经是主从同步的关系了,所以其他三台主机也有这两个账号。

这里呢我们以其中的一台slave2为例查看下是否存在呢?

可以看到在master1上创建的两个账号,在slave2上面已经同步过来了。

mmm_monitor用户:mmm监控用于对mysql服务器进程健康检查

mmm_agent用户:mmm代理用来更改只读模式,复制的主服务器等

二:mysql-mmm的安装

monitor主机上安装监控程序:

tar -zxf mysql-mmm-2.2.1.tar.gz

cd mysql-mmm-2.2.1

make install

在数据库{master1,master2,slave1,slave2上安装代理}

tar -zxf mysql-mmm-2.2.1.tar.gz

cd mysql-mmm-2.2.1

make install

主:此软件必须在每台MySQL上面进行安装;这个不能同步。

master1服务器;

master2服务器:

slave1服务器:

slave2服务器:

接下来进入激动人心的时刻了,大家提起点精神,开始配置MMM的文件,五台文件要保持一致。{mmm_commin.conf}

所有的配置文件都放到了/etc/mysql-mmm/下面。管理服务器和数据库服务器上都要包含一个共同的文件mmm_common.conf,内容如下:

将以上的文件拷贝到其他四台服务器上确保这五台服务器的此文件内容相同。此外:

还有一个mmm_agent.conf需要修改,其内容是:

includemmm_common.conf

this master1

这里以master1为例其他三台修改为{master2、slave1、slave2}monitor除外

启动代理进程 其他三台也是monitor除外,这里以master1为例:

/etc/init.d/mysql-mmm-agent的脚本文件#!/bin/sh下面,加入如下内容

加入系统服务

启动服务会报错解决方法:

# cpan Proc::Daemon
# cpan Log::Log4perl

就可以解决

在此重启的结果

以上都是以master1为例,其他三台配置方式和master1方式相同, 但在mmm_agent.conf文件修改不同上面已经指出。

编辑 monitor主机上的/etc/mysql-mmm/mmm_mon.conf

includemmm_common.conf

启动监控进程

/etc/init.d/mysql-mmm-monitor的脚本文件#!/bin/sh下面,加入如下内容
source /root/.bash_profile

添加成系统服务并设置为自启动

#chkconfig --add mysql-mmm-monitor

#chkconfig mysql-mmm-monitor on

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

启动会报错。解决方法

安装下列perl的库

#cpan Proc::Daemon

#cpan Log::Log4perl

在此启动

接下来查看群集状态:

以及服务器上线的命令:

群集状态:

查看所有群集的状态:

接下来可以将主master1的服务器模拟宕机,查看vip是否会漂移到master2上面。这里不再重复。

这就是今天为大家带来的MMM架构,如果有什么疑问可以在评论中提问。


服务 服务器 配置 文件 主从 主机 监控 内容 接下来 数据 节点 进程 脚本 代理 验证 数据库 方法 结果 账号 三台 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发的行业代码是什么 sql怎样创建数据库 渐江飞猪网络技术有限公司 上海税收优惠 软件开发合同 查qq关联数据库 数据库错误1045 柳林网络安全宣传 校园网络安全小故事 下列属于期刊数据库简称的是 软件开发订制湖南岚鸿丿 计算机网络技术二级考试软件 拱墅区苹果软件开发 由于无法与此服务器建立安全连线 山东即得网络技术有限公司 你身边的网络安全专家上线 福州策马赫网络技术有限公司官网 国内网络安全大赛 数据库不可再分 互联网怎么连接自己的服务器 云服务器的管理与运维软件 软件开发培训该不该 苏州移动软件开发哪家好 在django中如何连接数据库 软件开发本月工作评价 网络技术上传和下载有什么区别 怀柔区软件开发要求 如何查看服务器版本 山东即得网络技术有限公司 海航邮箱收件服务器和域名 遂宁软件开发均价
0