搭建 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 = 3306
character_set_server=utf8
pid-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.log
log_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: YesSlave_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: YesSlave_SQL_Running: Yes
测试主从、主主、同步 情况
所有主机上都要配置 MMM
配置 mysql-master1 :
cd /etc/mysql-mmm/ vim mmm_common.conf …… <host default> cluster_interface ens32 #网卡名称 ……replication_user replication #主从授权用户 replication_password 123456 agent_user mmm_agent #代理用户 agent_password 123456 .... <host db1> ip 192.168.217.129 #主服务器 mode master peer db2 </host> .... <host db2> ip 192.168.217.130 #主服务器 mode master peer db1 </host> .... <host db3> ip 192.168.217.131 #从服务器 mode slave </host> .... <host db4> ip 192.168.217.132 #从服务器 mode slave </host> .... <role writer> hosts db1, db2 ips 192.168.217.100 #主服务器虚拟IP地址 mode exclusive </role> .... <role reader> hosts db3, db4 ips 192.168.217.200, 192.168.217.210 #从服务器虚拟IP地址 mode balanced </role>
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 #设置自动在线时间
……<host default>monitor_user mmm_monitor #监控用户monitor_password 123456
</host>
在所有数据库授权和修改 :
在所有数据库上为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 配置中<host db1> 对应的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上会有两个地址 。
转载于:https://blog.51cto.com/13640803/2144621
搭建 mysql-mmm 高可用群集相关推荐
- Mysql的MMM高可用群集
文章目录 一.Mysql-MMM群集概述 (1)MMM概述 (2)MMM的优缺点 (3)MMM进程 `(脚本)` 的作用 (4)MMM的工作架构 二.搭建Mysql-MMM高可用群集 (1)实验环境 ...
- Mysql MMM 高可用
一.Mysql MMM 高可用概况: mmm_mond 负责所有的监控工作的监控守护进程,决定节点的移除等: mmm_agentd 运行在mysql服务器上的代理守护进程,通过简单远程服务集提供给 ...
- haproxy负载均衡_基于mycat+haproxy+keepalived搭建mysql数据库高可用负载均衡
概述 目前业界对数据库性能优化普遍采用集群方式,而oracle集群软硬件投入昂贵,mysql则比较推荐用mycat去搭建数据库集群,下面介绍一下怎么用mycat+haproxy+keepalived搭 ...
- heartbeat+drbd+mysql构建mysql高可用群集
heartbeat+drbd+mysql构建mysql高可用群集 1. 试验环境: 操作系统:Red Hat Enterprise Linux 5.4 所需的软件包: mysql-5.5.22.tar ...
- LVS+Keepalived 高可用群集的介绍和搭建步骤
文章目录 一.LVS+Keepalived 高可用群集 1.1 工作原理 1.2 Keepalived实现原理剖析 1.3 VRRP (虚拟路由冗余协议) 二.LVS+Keepalived 高可用群集 ...
- 详解 MySQL 高可用群集,MMM搭建高可用
目录: 1·MMM 简介 2·MMM 各个角色说明 3·案例环境介绍 4·案例实施 5·总结 一:MMM 简介: 1)MMM 是什么:说得简单点,就是 MySQL 主主复制的管理器.之前的一篇文章讲述 ...
- MySQL高可用群集------配置MMM高可用架构
MMM简介: MMM(Master-Master replication manager for Mysql,Mysql 主主复制管理器)是一套支持双主故障切换和双主日常管理的脚本程序.MMM使用Pe ...
- MySQL 数据库之 MMM 高可用架构构建
文章目录 一.MMM 概述 1. 什么是 MMM 2. 应用场景 3. MMM 特点 4. 关于 MMM 高可用架构的说明 5. 用户及授权 二.案例环境 1. 服务器配置 2. 服务器环境 3. 修 ...
- 实践 | Centos 7搭建LVS+Keepalived高可用Web服务群集群
LVS + Keepalived 高可用集群 Keepalived的设计目标是构建高可用的LVS负载均衡的集群,可以调用ipvsadm工具创建虚拟机,不仅仅用作双机热备,还可以使用keepalived ...
最新文章
- Android studio 文件包名连在一起的处理方法
- IBM重磅开源Power芯片指令集?国产芯迎来新机遇?
- ios微信登录不上服务器,iOS微信授权登录
- python网上编程课程-少儿编程 为你解读Python编程课程
- ul li列表元素浮动导致border没有底边解决办法
- VTK:图表之BreadthFirstDistance
- 老生常谈:装饰者模式
- 滑动窗口算法学习(一)
- 【计算机网络】链路与连通
- ./wls1036_linux32.bin: /lib/ld-linux.so.2: bad ELF interpreter
- ffmbc——广播电视以及专业用途量身定制的FFmpeg
- C++ TBB concurrent_unordered_map find() at() return static_cast<size_t>( t ) * internal::hash_multip
- Mac 修改移动硬盘图标,U盘图标
- 2048游戏(C语言)
- 【转载】Java并发编程:volatile关键字解析 by 海子
- 飞腾FT2000/4 CPU UEFI开发 固件配置
- 凤凰牌老熊对支付的系统讲解
- java根据url获取pdf流_从URL获取动态创建的PDF
- 信息系统安全导论第六章之软件安全
- FilterConfig接口及其使用方法详解
热门文章
- linux内核kfifo(一)
- leetcode算法题--寻找两个有序数组的中位数★★
- leetcode算法题--字符串相乘
- flutter text 左对齐_Flutter基础篇之九-Text文本展示
- leetcode @38报数-js
- maven 打jar包将配置文件,和lib包打在外面
- Web容器启动中执行某个Java类
- paip.文件目录操作uAPI php python java对照
- VMware发布vSphere Big Data Extensions
- 《Win32多线程程序设计》学习笔记 第17章 OLE ActiveX COM