热门标签 | 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的针对性也很强。
           肯定还有很多其他的功能没有发掘出来,。。。。期待。。。。


推荐阅读
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • Spring Cloud因其强大的功能和灵活性,被誉为开发分布式系统的‘一站式’解决方案。它不仅简化了分布式系统中的常见模式实现,还被广泛应用于企业级生产环境中。本书内容详实,覆盖了从微服务基础到Spring Cloud的高级应用,适合各层次的开发者。 ... [详细]
  • 利用 Jest 和 Supertest 实现接口测试的全面指南
    本文深入探讨了如何使用 Jest 和 Supertest 进行接口测试,通过实际案例详细解析了测试环境的搭建、测试用例的编写以及异步测试的处理方法。 ... [详细]
  • 58同城的Elasticsearch应用与平台构建实践
    本文由58同城高级架构师于伯伟分享,由陈树昌编辑整理,内容源自DataFunTalk。文章探讨了Elasticsearch作为分布式搜索和分析引擎的应用,特别是在58同城的实施案例,包括集群优化、典型应用实例及自动化平台建设等方面。 ... [详细]
  • ODBC介绍:开放式数据库连接详解
    本文详细介绍了ODBC(开放式数据库连接),这是一种允许应用程序访问多种数据库系统的标准API。自1992年由微软与Simba合作推出以来,ODBC已成为跨平台数据访问的重要标准。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 如何在PHPCMS V9中实现多站点功能并配置独立域名与动态URL
    本文介绍如何在PHPCMS V9中创建和管理多个站点,包括配置独立域名、设置动态URL,并确保各子站能够正常运行。我们将详细讲解从新建站点到最终配置路由的每一步骤。 ... [详细]
  • 如何在PostgreSQL中查看数据表
    本文将指导您使用pgAdmin工具连接到PostgreSQL数据库,并展示如何浏览和查找其中的数据表。通过简单的步骤,您可以轻松访问所需的表结构和数据。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 5G至4G空闲态移动TAU流程解析
    本文详细解析了用户从5G网络移动到4G网络时,在空闲态下触发的跟踪区更新(TAU)流程。通过N26接口实现无缝迁移,确保用户体验不受影响。 ... [详细]
  • 字节跳动夏季招聘面试经验分享
    本文详细记录了字节跳动夏季招聘的面试经历,涵盖了一、二、三轮面试的技术问题及项目讨论,旨在为准备类似面试的求职者提供参考。 ... [详细]
  • 本文将介绍如何利用Python爬虫技术抓取国内主流在线学习平台的数据,并以51CTO学院为例,进行详细的技术解析和实践操作。 ... [详细]
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社区 版权所有