您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > mysql-mmm架构详解
MySQL-mmm架构详解一、MMM架构介绍1.1MySQL-MMM概述MMM即Master-MasterReplicationManagerforMySQL(mysql主主复制管理器)关于mysql主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),这个套件也能对居于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟ip,除此之外,它还有实现数据备份、节点之间重新同步功能的脚本。MySQL本身没有提供replicationfailover的解决方案,通过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。MMM不仅能提供浮动IP的功能,更可贵的是如果当前的主服务器挂掉后,会将你后端的从服务器自动转向新的主服务器进行同步复制,不用手工更改同步配置。这个方案是目前比较成熟的解决方案。1.2MySQL-MMM优缺点优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性。缺点:Monitor节点是单点,可以结合Keepalived实现高可用。1.3MySQL-MMM工作原理MMM(Master-MasterreplicationmanagerforMysql,Mysql主主复制管理器)是一套灵活的脚本程序,基于perl实现,用来对mysqlreplication进行监控和故障迁移,并能管理mysqlMaster-Master复制的配置(同一时间只有一个节点是可写的)。mmm_mond:监控进程,负责所有的监控工作,决定和处理所有节点角色活动。此脚本需要在监管机上运行。mmm_agentd:运行在每个mysql服务器上的代理进程,完成监控的探针工作和执行简单的远端服务设置。此脚本需要在被监管机上运行。mmm_control:一个简单的脚本,提供管理mmm_mond进程的命令。mysql-mmm的监管端会提供多个虚拟IP(VIP),包括一个可写VIP,多个可读VIP,通过监管的管理,这些IP会绑定在可用mysql之上,当某一台mysql宕机时,监管会将VIP迁移至其他mysql。在整个监管过程中,需要在mysql中添加相关授权用户,以便让mysql可以支持监理机的维护。授权的用户包括一个mmm_monitor用户和一个mmm_agent用户,如果想使用mmm的备份工具则还要添加一个mmm_tools用户。1.4需求描述1.4.1系统环境操作系统:CentOS6.4_X64数据库:MySQL5.5MMM:MySQL-MMM2.2.11.4.2IP分配数据库分配:functioniphostnameserveridmaster1192.168.0.65M11master2192.168.0.66M22slave1192.168.0.67Slave13monitoringhost192.168.0.68monitor4虚拟IP地址(VIP):iprole192.168.0.70writer192.168.0.71reader192.168.0.72reader192.168.0.73reader1.4.3数据库用户权限数据库同步需要的用户:functiondescriptionprivilegesmonitorusermmm监控用于对mysql服务器进程健康检查REPLICATIONCLIENTagentusermmm代理用来更改只读模式,复制的主服务器等SUPER,REPLICATIONCLIENT,PROCESSreplicationuser用于复制REPLICATIONSLAVE1.5MySQL-MMM架构图二、MySQLM-M-S同步复制2.1MySQL安装2.1.1检查系统是否安装过MYSQL#rpm-qa|grepmysql#如果有,使用以下命令先卸载#yumremovemysql*2.1.2下载MYSQL软件,编译安装,在四台机器上都需要做具体安装步骤见《mysql5.5安装》2.2DB配置2.2.1M1配置1)修改M1的my.cnf,确定有以下内容port=3306server-id=1log-bin=mysql-binlog-slave-updatessync_binlog=1auto_increment_increment=2auto_increment_offset=1skip-name-resolve2)创建mysql复制用户GRANTREPLICATIONSLAVEON*.*TO'slave'@'192.168.0.%'IDENTIFIEDBY'slave';flushprivileges;2.2.2M2配置1)修改M2的my.cnf,确定有以下内容port=3306server-id=2log-bin=mysql-binlog-slave-updatessync_binlog=1auto_increment_increment=2auto_increment_offset=2skip-name-resolve2)创建mysql复制用户GRANTREPLICATIONSLAVEON*.*TO'slave'@'192.168.0.%'IDENTIFIEDBY'slave';flushprivileges;2.2.3slave1配置修改slave1的my.cnf,确定有以下内容port=3306server-id=3log-bin=mysql-binlog-slave-updatesskip-name-resolve2.2.4monitor配置修改monitor的my.cnf,确定有以下内容Port=3306server-id=4log-bin=mysql-binlog-slave-updates2.3同步数据2.3.1锁表1)将M1数据库的表进行锁定,禁止服务器写入数据mysqlflushtableswithreadlock;2)确定同步复制POS起始位置mysqlshowmasterstatus\G***************************1.row***************************File:mysql-bin.000001Position:409Binlog_Do_DB:Binlog_Ignore_DB:1rowinset(0.00sec)2.3.2导库将M1的数据导出,并复制到M2和slave1,然后分别导入到M2和slave1数据库2.4配置复制关系2.4.1配置M2复制M1的数据M2配置:mysqlCHANGEMASTERTO-MASTER_HOST='192.168.0.65',-MASTER_USER='slave',-MASTER_PASSWORD='slave',-MASTER_PORT=3306,-MASTER_LOG_FILE='mysql-bin.000001',-MASTER_LOG_POS=409,-MASTER_CONNECT_RETRY=10;mysqlstartslave;QueryOK,0rowsaffected(0.00sec)mysqlshowslavestatus\G***************************1.row***************************Slave_IO_State:WaitingformastertosendeventMaster_Host:192.168.0.65Master_User:slaveMaster_Port:3306Connect_Retry:10Master_Log_File:mysql-bin.000001Read_Master_Log_Pos:409Relay_Log_File:mysql-relay-bin.000002Relay_Log_Pos:251Relay_Master_Log_File:mysql-bin.000001Slave_IO_Running:YesSlave_SQL_Running:Yes2.4.2配置M1复制M2的数据M2的POS起始位置mysqlshowmasterstatus\G***************************1.row***************************File:mysql-bin.000001Position:325Binlog_Do_DB:Binlog_Ignore_DB:M1配置:mysqlCHANGEMASTERTO-MASTER_HOST='192.168.0.66',-MASTER_USER='slave',-MASTER_PASSWORD='slave',-MASTER_PORT=3306,-MASTER_LOG_FILE='mysql-bin.000001',-MASTER_LOG_POS=325,-MASTER_CONNECT_RETRY=10;QueryOK,0rowsaffected(0.01sec)mysqlstartslave;QueryOK,0rowsaffected(0.00sec)mysqlshowslavestatus\G***************************1.row***************************Slave_IO_State:WaitingformastertosendeventMaster_Host:192.168.0.66Master_User:slaveMaster_Port:3306Connect_Retry:10Master_Log_File:mysql-bin.000001Read_Master_Log_Pos:325Relay_Log_File:zj14-relay-bin.000002Relay_Log_Pos:251Relay_Master_Log_File:mysql-bin.000001Slave_IO_Running:YesSlave_SQL_Running:Yes2.4.2配置slave1复制M1的数据mysqlCHANGEMASTERTO-MASTER_HOST='192.168.0.65',-MASTER_USER='slave',-MASTER_PASSWORD='slave',-MASTER_PORT=3306,-MASTER_LOG_FILE='mysql-bin.000001',-MASTER_LOG_POS=409,-MASTER_CONNECT_RETRY=10;mysqlstartslave;QueryOK,0rowsaffected(0.00sec)mysqlshowslavestatus\G***************************1.row***************************Slave_IO_State:WaitingformastertosendeventMaster_Host:192.168.0.65Master_User:slaveMaster_Port:3306Connect_Retry:10Master_Log_File:mysql-bin.000001Read_Master_Log_Pos:409Relay_Log_File:mysql-relay-bin.000002Relay_Log_Pos:251Relay_Master_Log_File:mysql-bin.000001Slave_IO_Running:YesSlave_SQL_Running:Yes2.5M-M-S测试在M1的test目录建立一张表M1:mysqlusetestDatabasechangedmysqlcreatetablet(idint(11)notnullauto_increment,namevarchar(30),primaryk
本文标题:mysql-mmm架构详解
链接地址:https://www.777doc.com/doc-3868618 .html