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


推荐阅读
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 我一直都有记录信息的习惯,不知是从什么时候开始,大约是在工作后不久。如今还真有点庆幸从那时开始记了点东西,当然是电子版的,写 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 本文介绍了使用数据库管理员用户执行onstat -l命令来监控GBase8s数据库的物理日志和逻辑日志的使用情况,并强调了对已使用的逻辑日志是否及时备份的重要性。同时提供了监控方法和注意事项。 ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
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社区 版权所有