热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL---MMM搭建及测试

nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd

一)MMM -----Multi-Master Replicatioin Manager for MySQL
          下载地址http://mysql-mmm.org/downloads
           版本:mysql-mmm-2.2.1.tar.gz
           安装说明http://mysql-mmm.org/mmm2:guide
           安装说明很详细。

           环境: 虚拟机,3台服务器,mysql-5.0.77
           部署架构:
           hostname      IPAddress                  MMM                            Role          VIP(R)          
           sdw_1           192.168.204.128       mysql-mmm-agent        Master      192.168.204.202(Reader)
           sdw_2           192.168.204.129       mysql-mmm-agent        Master      192.168.204.203(Reader)
           master          192.168.204.134       mysql-mmm-monitor      None          None
 
           VIP:192.168.204.201 (Writer)
  
           说明:1)在sdw_1和sdw_2服务器上,分别部署mysql服务,并配置成MM结构,即互为主从。
                           注意配置文件设置auto-increment-increment 和 auto_increment_offset 参数
                      2)VIP(Reader) 和VIP (Writer)不需要提前配置,由MMM软件根据配置文件的策略自动设置


(二) 安装过程
       1.# tar zxf mysql-mmm-2.2.1.tar.gz
          # cd mysql-mmm-2.2.1
          # make install

      2.mmm软件是基于perl的。所以,需要安装许多perl的模块
         由于虚拟机环境无法连接到外网,所以这里只能手工安装。
         第一次,我根据pdf说明文件,http://mysql-mmm.org/_media/:mmm2:mysql-mmm-2.2.1.pdf
         根据需要的perl模块的名称,到http://www.cpan.org/ 搜索,然后安装,
         结果,依赖关系超复杂,好容易装完,启动 mysql-mmm-agent 和 mysql-mmm-monitor ,
         mmm软件日志,异常报错,无法正常启动,估计perl模块相关的程序运行不正常。
        
         无奈,根据说明文档http://mysql-mmm.org/mmm2:guide,严格按照版本号,查找rpm包进行安装。
         我下载的网址为:http://pkgs.repoforge.org/,具体过程不说了,就是下载,安装。

    3.配置mysql 互为主从及添加权限;
       mysql> show master status;
       mysql>CHANGE MASTER TO master_host='192.168.204.128',
                  master_port=3306, master_user='replication',
                  master_password='replication_password',
                  master_log_file='mysql-bin.000001', master_log_pos=711;
       mysql>GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'192.168.204.%'
                  IDENTIFIED BY 'monitor_password';
       mysql>GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO 'mmm_agent'@'192.168.204.%'  
                  IDENTIFIED BY 'agent_password';
       mysql>GRANT REPLICATION SLAVE  ON *.* TO 'replication'@'192.168.204.%'
                  IDENTIFIED BY 'replication_password';
   
        完成后,启动数据库,查看同步情况是否正常。

     4.修改mmm配置文件:
        mmm_common.conf: 在所有的服务器上,保持一致。
        # vi /etc/mysql-mmm/mmm_common.conf

        ******************************************************************************************************************
        active_master_role      writer
       
            cluster_interface       eth0
            pid_path                /var/run/mmm_agentd.pid
            bin_path                /usr/lib/mysql-mmm/
            replication_user        replication
            replication_password    replication_password
            agent_user              mmm_agent
            agent_password          agent_password
       

       
            ip                      192.168.204.128
            mode                    master
            peer                    sdw_2
      

      
            ip                      192.168.204.129
            mode                    master
            peer                    sdw_1
       

       
            hosts                   sdw_1, sdw_2
            ips                     192.168.204.201
            mode                    exclusive
       

       
            hosts                   sdw_1, sdw_2
            ips                     192.168.204.202, 192.168.204.203
            mode                    balanced
       

        ******************************************************************************************************************
      
       mmm_agent.conf: agent服务器,配置文件
       # vi /etc/mysql-mmm/mmm_agent.conf

       ******************************************************************************************************************
       include mmm_common.conf
       this sdw_2
       ******************************************************************************************************************
       # vi /etc/mysql-mmm/mmm_agent.conf
       ******************************************************************************************************************
       include mmm_common.conf
       this sdw_1
       ******************************************************************************************************************

       mmm_mon.conf:monitor服务器,配置文件
       # vi /etc/mysql-mmm/mmm_mon.conf

       ******************************************************************************************************************
       include mmm_common.conf
      
           ip                                      127.0.0.1
           pid_path                                /var/run/mmm_mond.pid
           bin_path                                /usr/lib/mysql-mmm/
           status_path                             /var/lib/misc/mmm_mond.status
           ping_ips                                192.168.204.128, 192.168.204.129
      

      
            monitor_user                    mmm_monitor
            monitor_password                monitor_password
      

       debug 0

       ******************************************************************************************************************

      5.启动服务:
         sdw_1:  # /etc/init.d/mysql-mmm-agent start           //在sdw_1上启动agent服务
         sdw_2:  # /etc/init.d/mysql-mmm-agent start           //在sdw_2上启动agent服务
         master: # /etc/init.d/mysql-mmm-monitor start         //在master服务器上启动monitor服务
         master: # mmm_control show                                 //查看服务器启动情况
         master: # mmm_control help                                  //查看 mmm_control 的帮助信息
         master: # mmm_control set_online sdw_1             //使sdw_1上线,此时会配置sdw_1的VIP
         master: # mmm_control set_online sdw_2    //使sdw_1上线,此时会配置sdw_2的VIP    
         master: # mmm_control show
         *********************************************************************************************************************************
         sdw_1(192.168.204.128) master/ONLINE. Roles: reader(192.168.204.202), writer(192.168.204.201)
         sdw_2(192.168.204.129) master/ONLINE. Roles: reader(192.168.204.203)
         *********************************************************************************************************************************

         查看agent服务器上的虚拟IP:
         sdw_1
         # ip -f inet addr

         *********************************************************************************************************************************
         1: lo: mtu 16436 qdisc noqueue
             inet 127.0.0.1/8 scope host lo
         2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
             inet 192.168.204.128/24 brd 192.168.204.255 scope global eth0
             inet 192.168.204.202/32 scope global eth0
             inet 192.168.204.201/32 scope global eth0
        *********************************************************************************************************************************

        sdw_2
         # ip -f inet addr

       *********************************************************************************************************************************
       1: lo: mtu 16436 qdisc noqueue
           inet 127.0.0.1/8 scope host lo
       2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
           inet 192.168.204.129/24 brd 192.168.204.255 scope global eth0
           inet 192.168.204.203/32 scope global eth0
      *********************************************************************************************************************************

      6.上拓扑架构图:
          Two Node:

#
          
         Two master+One/Many slave:
          #

           7.补充信息:
              mmm_mon在每台服务器上执行四种不同的检查,以确定相关服务是否OK:
              1)ping              host is pingable
              2)mysql            MySQL server on the host is alive
              3)rep_threads  replication threads are running
              4)rep_backlog  replication backlog is not too big

              Modes:
              1)Active Mode :
                      The monitor will remove roles from failed hosts and assign them to other hosts automatically.
              2)Manual Mode:
                     The monitor will only distribute balanced roles across the hosts,
                      but will not remove roles from failed hosts automatically.
                      You can remove roles from failed hosts manually with move_role.
              3)Wait mode :      
                      Like MANUAL mode, but mode will be changed into ACTIVE mode
                      when both master hosts are ONLINE or after wait_for_other_master seconds have elapsed.
              4)Passive mode: 
                     In passive mode the monitor doesn't change roles, update the status file nor send anything to agents.
                     In passive mode you can modify roles (unclean) with set_ip - the changes won't be applied
                     until the monitor is switched to ACTIVE or MANUAL mode with set_active or set_manual.
                     Passive mode will be entered if conflicting roles are detected during startup.
                     You should then analyze the situation, fix the role information (if needed) and switch into ACTIVE
                     or MANUAL mode. It also can be entered manually with set_passive.

(四)相关测试性试验:
           以下每次的测试均基于环境:
           sdw_1 : VIP(Reader)192.168.204.202    VIP(Write):192.168.204.201
           sdw_2:  VIP(Reader)192.168.204.203

           1.动作: sdw_2上, 停止mysql服务,  # mysqladmin -u xxx -pxxxx shutdown
              结果: sdw_2上的VIP(192.168.204.203)会自动迁移到 sdw_1上

           2.动作: sdw_1上,停止MySQL服务,  # mysqladmin -u xxx -pxxxx shutdown
              结果: sdw_1上,负责读的VIP(192.168.204.202) 以及负责写的VIP(192.168.204.201)
                         会自动迁移到 sdw_2上。
              动作: 此时,将sdw_1再重新启动 , # mysqld_safe &
              结果: 则负责读的VIP (192.168.204.202)会切换到sdw_1上,但是 负责写的VIP,仍在sdw_2上。

           3.动作:sdw_2上,手动停止同步服务, # slave stop;
              结果: sdw_2上的VIP(192.168.204.203)会自动迁移到 sdw_1上
              # mmm_control show
                sdw_1(192.168.204.128) master/ONLINE. Roles: reader(192.168.204.202), writer(192.168.204.201)
                sdw_2(192.168.204.129) master/REPLICATION_FAIL. Roles:

           4.动作: 停止master服务器上的monitor服务, # /etc/init.d/mysql-mmm-monitor stop
              结果: 对sdw_1 和sdw_2 的服务无影响
              动作: 再次启动monitor服务, # /etc/init.d/mysql-mmm-monitor stop
              结果: # mmm_control show
                         sdw_1(192.168.204.128) master/ONLINE. Roles: reader(192.168.204.202), writer(192.168.204.201)
                         sdw_2(192.168.204.129) master/ONLINE. Roles: reader(192.168.204.203)
                         对sdw_1 和 sdw_2 上的相关服务无影响。
                   
          5.动作: 停止sdw_1 上的slave服务, # slave stop;
             结果: 无任何变化
                         理论上也应该是对现有的环境无任何影响。mmm这样设计是正确的。

总结:MMM设计的很合理,应该说是管理大规模MySQL主从关系很好的一个工具,也是一个很好的HA方案
          不需要在系统层架构HA方案,例如:keepalive,以及RHEL的cluster等。
           对MySQL的针对性也很强。
           肯定还有很多其他的功能没有发掘出来,。。。。期待。。。。


推荐阅读
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 基于iSCSI的SQL Server 2012群集测试(一)SQL群集安装
    一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ... [详细]
  • 网络爬虫的规范与限制
    本文探讨了网络爬虫引发的问题及其解决方案,重点介绍了Robots协议的作用和使用方法,旨在为网络爬虫的合理使用提供指导。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • 系统数据实体验证异常:多个实体验证失败的错误处理与分析
    在使用MVC和EF框架进行数据保存时,遇到了 `System.Data.Entity.Validation.DbEntityValidationException` 错误,表明存在一个或多个实体验证失败的情况。本文详细分析了该错误的成因,并提出了有效的处理方法,包括检查实体属性的约束条件、调试日志的使用以及优化数据验证逻辑,以确保数据的一致性和完整性。 ... [详细]
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 本文详细介绍了一种利用 ESP8266 01S 模块构建 Web 服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了 Web 服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。 ... [详细]
  • 在当前的软件开发领域,Lua 作为一种轻量级脚本语言,在 .NET 生态系统中的应用逐渐受到关注。本文探讨了 Lua 在 .NET 环境下的集成方法及其面临的挑战,包括性能优化、互操作性和生态支持等方面。尽管存在一定的技术障碍,但通过不断的学习和实践,开发者能够克服这些困难,拓展 Lua 在 .NET 中的应用场景。 ... [详细]
author-avatar
腾龙娱乐开户
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有