什么是mysql-mmm 高可用群集及怎么样搭建
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,本文主要给大家介绍什么是mysql-mmm 高可用群集及怎么样搭建,希望可以给大家补充和更新些知识,如有其它问题需要了解的可以持续在行业资讯里面关注我的更新文章的。搭建 mysql-mmm 高可用群集
千家信息网最后更新 2025年11月11日什么是mysql-mmm 高可用群集及怎么样搭建
本文主要给大家介绍什么是mysql-mmm 高可用群集及怎么样搭建,希望可以给大家补充和更新些知识,如有其它问题需要了解的可以持续在行业资讯里面关注我的更新文章的。
搭建 mysql-mmm 高可用群集
MMM 简介 :
MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语言开发,主要用来监控和管理MySQL Master-Master(双主)复制,虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选主上提供部分读服务,以加速在主主切换时刻备选主的预热,可以说MMM这套脚本程序一方面实现了故障切换的功能,另一方面其内部附加的工具脚本也可以实现多个slave的read负载均衡。
MMM提供了自动和手动两种方式移除一组云服务器中复制延迟较高的服务器的虚拟ip,同时它还可以备份数据,实现两节点之间的数据同步等。由于MMM无法完全的保证数据一致性,所以MMM适用于对数据的一致性要求不是很高,但是又想最大程度的保证业务可用性的场景。对于那些对数据的一致性要求很高的业务,非常不建议采用MMM这种高可用架构。
优点:
1 稳定和成熟的开源产品,经过了时间的考验 核心技术是mysql自己的技术,只是使用脚本程序来控制,所以在原理上比较容易理解,而且管理能够更智能化。
2 安装简单,配置简单,使用简单
3 功能强大 (HA,failover,tools套件,cluster模式可以一个monitor管理多个mmm组)
缺点:
1 由于架构里只有一个写入点,所以扩展性是有限的,但是对一般中型企业够用了。
解决方案:对于大应用可以采取垂直拆分到多个mmm架构的方式,使用mmm cluster来管理。
2 对于读写分离和读负载均衡还是要程序来开发或者使用其他工具完成。
MMM 高可用架构 :
mmm_mond:监控进程,负责所有的监控工作,决定和处理所有节点角色活动。此脚本需要在监管机上运行。
mmm_agentd:运行在每个mysql服务器上的代理进程,完成监控的探针工作和执行简单的远端服务设置。此脚本需要在被监管机上运行。
mmm_control:一个简单的脚本,提供管理mmm_mond进程的命令。
本案实例 :
| 主机名 | 系统 | 主要软件 | IP | 虚拟IP |
|---|---|---|---|---|
| mysql-master1 | CentOS 7.3 x86_64 | mmm | 192.168.217.129 | 192.168.217.100 |
| mysql-master2 | CentOS 7.3 x86_64 | mmm | 192.168.217.130 | 192.168.217.100 |
| mysql-slave1 | CentOS 7.3 x86_64 | mmm | 192.168.217.131 | 192.168.217.200 |
| mysql-slave2 | CentOS 7.3 x86_64 | mmm | 192.168.217.132 | 192.168.217.210 |
| monitor | CentOS 7.3 x86_64 | mmm | 192.168.217.133 |
安装 MMM 在所有服务器上安装 :
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #配置ALI云源,然后安装epel-release源。yum clean all && yum makecache #删除缓存 下载到本地电脑缓存yum -y install epel-release #安装epel 源 用于安装 mmmyum -y install mysql-mmm* #安装 mmm 服务 在所有服务器上安装配置 MySQL 服务器 :
配置所有的 mysql ,server-id 不同之外其他都相同 :
vim /etc/my.cnf[mysqld]user = mysql #管理用户 basedir = /usr/local/mysql #工作目录datadir = /usr/local/mysql/data #数据库文件port = 3306character_set_server=utf8pid-file = /usr/local/mysql/mysqld.pid #pid 进程文件socket = /usr/local/mysql/mysql.sock #链接数据库server-id = 1 binlog-ignore-db=mysql,information_schema #不需要同步的数据库名称log_slave_updates=true #从服务器更新二进制日志sync_binlog=1 #同步二进制日志auto_increment_increment=2 #字段一次递增值auto_increment_offset=1 #自增字段的起始值log-error=/usr/local/mysql/data/mysql_error.log #错误日志general_log=ON #开启通用日志general_log_file=/usr/local/mysql/data/mysql_general.loglog_bin=mysql-bin #二进制日志slow_query_log=ON #开启慢查询日志 slow_query_log_file=mysql_slow_query.log long_query_time=1把配置文件复制到其它3台数据库服务器上并启动服务器
scp /etc/my.cnf root@192.168.217.130:/etc/ #对方有权限的用户和IP地址 输入yes 、密码进行复制 systemctl restart mysqld.service #修改所有数据库的 server-id 重启服务配置主主复制 :
mysql -u root -p #进入数据库在m1上为m2授予从的权限,在m2上也要为m1授予从的权限mysql>grant replication slave on *.* to 'replication'@'192.168.217.%' identified by '123456'; mysql>show master status; #记录日志文件名称和 位置值,在两台主上查看。mysql>change master to master_host='192.168.217.129',master_user='replication',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=1104;注意 指向的IP地址、日志名称、偏移量 ,不要搞错mysql>start slave; #开启同步mysql>show slave status\G; #查看链接状态 Slave_IO_Running: Yes Slave_SQL_Running: Yes以上两台主都执行,从不需要 。可以在主服务器上创建数据库 、在另一台主服务器查看、删除,做测试。配置两台从服务器 :
指向随便一台主服务器即可 mysql>change master to master_host='192.168.217.129',master_user='replication',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=1104;注意 指向的IP地址、日志名称、偏移量 ,不要搞错start slave;show slave status\G; Slave_IO_Running: Yes Slave_SQL_Running: Yes测试主从、主主、同步 情况
所有主机上都要配置 MMM
配置 mysql-master1 :
cd /etc/mysql-mmm/vim mmm_common.conf ……cluster_interface ens32 #网卡名称……replication_user replication #主从授权用户replication_password 123456agent_user mmm_agent #代理用户agent_password 123456.... ip 192.168.217.129 #主服务器mode master peer db2 ....ip 192.168.217.130 #主服务器mode masterpeer db1 ....ip 192.168.217.131 #从服务器mode slave ....ip 192.168.217.132 #从服务器mode slave ....hosts db1, db2ips 192.168.217.100 #主服务器虚拟IP地址mode exclusive ....hosts db3, db4ips 192.168.217.200, 192.168.217.210 #从服务器虚拟IP地址mode balanced scp mmm_common.conf root@192.168.217.130:/etc/mysql-mmm/scp mmm_common.conf root@192.168.217.131:/etc/mysql-mmm/scp mmm_common.conf root@192.168.217.132:/etc/mysql-mmm/scp mmm_common.conf root@192.168.217.133:/etc/mysql-mmm/
配置 monitor 服务器上 :
cd /etc/mysql-mmm/vim mmm_mon.conf…… ping_ips 192.168.217.129,192.168.217.130,192.168217.131,192.168.217.132 #数据库服务器地址 auto_set_online 10 #设置自动在线时间…… monitor_user mmm_monitor #监控用户 monitor_password 123456 在所有数据库授权和修改 :
在所有数据库上为mmm_agent授权mysql>grant super, replication client, process on *.* to 'mmm_agent'@'192.168.217.%' identified by '123456';在所有数据库上为mmm_moniter授权mysql>grant replication client on *.* to 'mmm_monitor'@'192.168.217.%' identified by '123456';flush privileges; #刷新修改所有数据库的mmm_agent.conf文件vim /etc/mysql-mmm/mmm_agent.confthis db1 #/根据规mmm_common.conf 配置中 对应的IP地址 修改在所有数据库服务器上启动代理服务systemctl start mysql-mmm-agent.service #开启代理服务systemctl enable mysql-mmm-agent.service #开机自启动 配置 monitor 服务器上 :
systemctl start mysql-mmm-monitor.service #启动监控服务mmm_control show #查看各节点的情况 db1(192.168.217.129) master/ONLINE. Roles: writer(192.168.217.100) db2(192.168.217.130) master/ONLINE. Roles: db3(192.168.217.131) slave/ONLINE. Roles: reader(192.168.217.200) db4(192.168.217.132) slave/ONLINE. Roles: reader(192.168.217.210)mmm_control checks all #各种OK 说明运转正常mmm_control move_role writer db2 #手动指定活跃服务器 注意:不会抢占mmm_control show #查看各节点的情况 db1(192.168.217.129) master/ONLINE. Roles: db2(192.168.217.130) master/ONLINE. Roles: writer(192.168.217.100) db3(192.168.217.131) slave/ONLINE. Roles: reader(192.168.217.200) db4(192.168.217.132) slave/ONLINE. Roles: reader(192.168.217.210)测试 :关闭 mysql-master1 服务 ,查看 mysql-master2 会不会抢占 。注意:等待一段时间查看 。
关闭 mysql-slave1 服务 ,mysql-slave1 虚拟IP会自动漂移到mysql-slave2上 ,mysql-slave2上会有两个地址 。
看了以上关于什么是mysql-mmm 高可用群集及怎么样搭建,希望能给大家在实际运用中带来一定的帮助。本文由于篇幅有限,难免会有不足和需要补充的地方,如有需要更加专业的解答,可在官网联系我们的24小时售前售后,随时帮您解答问题的。
服务
服务器
数据
数据库
配置
日志
地址
脚本
管理
监控
文件
用户
同步
名称
架构
程序
进程
代理
一致
一致性
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全查抖音
mc服务器命令
网络安全是指对
黑龙江信行天下网络技术服务
网上订餐系统数据库设计
甘肃软件开发报价
计算机网络技术什么人学不了
如何查询云服务器
服务器g850cpu可以家用吗
服务器jvm默认最大内存
软件开发票类别
阿里数据库的书
中专的计算机网络技术对口
密云区软件开发售后保障
广州花开网络技术
正阳软件开发商
计算机网络技术英语翻译
华为招计算机网络技术人员吗
查服务器端口号
麦迅科技互联网有限公司
软件开发业务业绩
宝山区项目软件开发定制大概费用
大连智云自动化软件开发
大连赴日软件开发企业
双击已创建access数据库
服务器台账
阿里数据库的书
互联网科技公司主要做什么
odbc数据库怎么回事
蒙古语文数据库