目录
1,什么是MMM?
2,MMM的主要作用?
3,MMM工作场景
4,提供了哪些功能?
<1>MMM监控主从复制健康情况
<2>在主库出现宕机时进行故障转移并自动配置其他从对新主的复制
<3>提供了读,写虚拟ip,在主从服务器出现问题时可以自动迁移虚拟ip
5,架构图
6,MMM架构的优缺点
1,什么是MMM?
MMM是mysql多主复制管理器的简称(Multi-Master Replication Manager),是用于管理mysql主主架构的工具集
2,MMM的主要作用?
监控和管理Mysql的主主复制拓扑,并在当前的主服务器失效时,进行主和主备服务器之间的主从切换和故障转移等工作
3,MMM工作场景
主主复制分为两种:
主动主动模式的主主复制(两个主同时对外提供服务)
主动被动模式的主主复制(同一时间只有一个数据库对外提供服务,另一个主数据库处于备用状态)
MMM是工作在第二种复制模式的拓扑中的,也就是说MMM中同一时间只有一台著数据库对外提供服务,另一台主数据库只能设置为查询,并且为read-only模式
4,提供了哪些功能?
<1>MMM监控主从复制健康情况
<2>在主库出现宕机时进行故障转移并自动配置其他从对新主的复制
面临的问题:
如何找到从库对应的新的主库日志点的日志同步点
如果存在多个从库出现数据不一致的情况如何处理
<3>提供了读,写虚拟ip,在主从服务器出现问题时可以自动迁移虚拟ip
5,架构图
在进行mysql的安装时,我们要在MMM集群中每一台服务器上都安装一个监控代理的软件,MMM监控服务器通过和各个服务器上的代理软件进行交互,来完成集群中各个服务器上的监控和角色迁移的,为了能部署MMM集群,我们除了部署mysql主主复制之外,还需要额外的资源
资源名称 | 数量 | 说明 |
主DB服务器 | 2 | 用于主备模式的主主复制配置 这两个台服务器都有可能成为 主数据库来使用,软硬件配置 必须相同,包括cpu,内存,i o子系统,mysql版本等,否则故 障转移时,会出现性能下降的问题
|
从DB服务器 | 0-N | 可以分担主服务器的读负载,不建 议太多,主从切换时从服务器越多, 出现错误的概率越大 |
监控服务器 | 1 | 用于监控mysql复制集群 |
IP地址 | 2*(n+1) | n为mysql服务器的数量,每个数据库 服务器都会有俩个ip,一个是服务器本 身的物理ip,另一个时读需ip,还有一 个写ip,主服务器不能写时,会切换到 主备上 |
监控用户 | 1 | 用于监控数据库状态的Mysql用户 (replication client) |
代理用户 | 1 | 用于MMM代理的Mysql用户 (super,replication client,process) |
复制用户 | 1 | 用于配置mysql复制的mysql用户 (replication slave) |
| | |
| | |
6,MMM架构的优缺点
1,优点
<1>使用Perl语言开发且完全开源
<2>提供了读写VIP(虚拟ip),使服务器角色的变更对前端应用更加透明。在从服务器出现大量的主从延迟,主从链路中断时,可以把这台从服务器上的读的虚拟ip,漂移到集群中其他正常的服务器上
<3>MMM提供了从服务器的延迟控制。如,某一台从服务器复制延迟超过了某一个配置的值的话,就会把这台从服务器的ip迁移到没有延迟的从服务器上,从服务器宕机,或无法对外服务时也会发生,从而不用担心从服务器因延迟而产生的业务逻辑上的错误
<4>MMM提供了主数据库故障转移后从服务器对新主的重新同步功能。使得DBA不用去做数据库的重新同步工作,加快了故障转移的效率,节约了恢复时间
<5>很容易对发生故障的主数据库重新上线
<6>同一个MMM集群服务器可以同时对多个MMM集群进行监控,这在同时存在多个MMM集群的环境中可以节约大量的服务器成本
2,缺点
<1>发布时间较早,不支持myslq新的复制功能。必须是基于日志点的复制,不能支持gtid(gtid在数据安全,完整性方面都要优于基于日志点,特别是在主从切换的过程中,基于gtid复制可以保证日志不会重复在从服务器上被执行,从而不会造成数据不一致而停止的问题)
<2>对于mysql5.6后所提供的多线程复制技术也不支持。在集群的同步配置中,不能使用从服务器多线程复制的技术(主从不一致的原因就是在于主服务器上的sql是多线程执行的,而从服务器上是单线程的,在并发写压力比较大的情况下无法使用多线程复制,从而造成严重的主从延迟)
<3>没有读负载均衡的功能
<4>在进行主从切换时,容易造成数据丢失
<5>MMM监控服务存在单点故障