关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » MySQL »Microsoft Azure部署MYSQL-MMM过程详解(1)

    Microsoft Azure部署MYSQL-MMM过程详解(1)

    2015-03-29 00:00:00 出处:ITJS
    分享

      这篇文章出自51CTO博客之星李珣博主,有任何问题请进入博主页面互动讨论!

    博文地址:http://lixun.blog.51cto.com/4198640/1629177

    MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器)关于mysql主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写 入),这个套件也能对居于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟ip,除此之外,它还有实 现数据备份、节点之间重新同步功能的脚本。

    MySQL本身没有提供replication failover的解决方案,通过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。

    MMM项目来自 Google:http://code.google.com/p/mysql-master-master

    官方网站为:http://mysql-mmm.org

    MMM主要功能由下面三个脚本提供

    l mmm_mond 负责所有的监控工作的监控守护进程,决定节点的移除等等 l mmm_agentd 运行在mysql服务器上的代理守护进程,通过简单远程服务集提供给监控节点 l mmm_control 通过命令行管理mmm_mond进程

    在两个节点的master-master环境下,MMM使用5个IP。每个单独的节点使用一个固定IP,这个固定IP永远不会变化。

    2个reader Ips(read-only)和一个writer IP(updates),后面三个IP(2个reader IP和一个Writer IP)在两个节点之间迁移,如何迁移取决于节点的可用性。

    正 常情况下(没有复制失败,没有复制延迟等)活动的master有两个虚拟ip(reader和writer),备用的master有一个虚拟 ip(reader),如果活动的master失败了,那么所有的reader和writer虚拟IP都会被分配给备用的master。

    具体的配置信息如下所示:

    角色 ip地址 主机名字 server-id   monitoring      10.0.0.6            monitor        -   master1         10.0.0.4            db1                1   master2         10.0.0.5            db2                 2   slave1          10.0.0.7            db3                 3 

    业务中的服务ip信息如下所示:

    ip地址                 角色                描述   10.0.0.80           write                应用程序连接该ip对主库进行写请求   10.0.0.90           read                  应用程序连接该ip进行读请求   10.0.0.100          read                   应用程序连接该ip进行读请求 

    部署架构如下图:

    Microsoft Azure部署MYSQL-MMM(1)安装MYSQL

    具体的部署步骤如下:

    (1)主机配置

    在Azure中创建一个虚拟网络,然后在库中创建虚拟机,选择基于CENTOS Openlogic 6.5

    PS:由于MMM的监控机制需要检查PING,请确保所有虚拟机在一个VNET下。

    Microsoft Azure部署MYSQL-MMM(1)安装MYSQL

    同时完成四台虚拟机的创建,分别是master1、master2、slave、monitor,如下图:

    Microsoft Azure部署MYSQL-MMM(1)安装MYSQL

    使用那个Xshell连接到VM

    Microsoft Azure部署MYSQL-MMM(1)安装MYSQL

    首先获取root权限并修改root密码,如下操作

    Sudo su -

    输入密码

    Passwd root

    Microsoft Azure部署MYSQL-MMM(1)安装MYSQL

    在每一台服务器上用yum命令安装MYSQL服务

    # yum install mysql-server 

    Microsoft Azure部署MYSQL-MMM(1)安装MYSQL

    安装完成后重启MYSQL服务

    # service mysqld restart 

    Microsoft Azure部署MYSQL-MMM(1)安装MYSQL

    连接到mysql,修改mysql root密码,如下操作:

    # mysql -uroot  use mysql  update user set password=password('p@ssw0rd') where user='root';  flush privileges; 

    Microsoft Azure部署MYSQL-MMM(1)安装MYSQL

    select user,host,password from mysql.user

    Microsoft Azure部署MYSQL-MMM(1)安装MYSQL

    (2)配置Master-Master复制

    在db1(master1)、db2(master2)、db3(slave)上编译my.conf

    #vi /etc/my.cnf  [mysqld]  datadir=/var/lib/mysql  socket=/var/lib/mysql/mysql.sock  user=mysql  #下面为新添加的内容  default-storage-engine = innodb  replicate-ignore-db = mysql  binlog-ignore-db = mysql  server-id = 1 #每台服务器不能相同  log-bin = /var/log/mysql/mysql-bin.log  log_bin_index = /var/log/mysql/mysql-bin.log.index  relay_log = /var/log/mysql/mysql-bin.relay  relay_log_index = /var/log/mysql/mysql-bin.relay.index  expire_logs_days = 10  max_binlog_size = 100M  log_slave_updates = 1 

     Microsoft Azure部署MYSQL-MMM

    注意:

    1)server-id在每台服务器上的值都是不一样,在这里依次为1、2、3、4。

    2) 因为在这里把log文件配置到了/var/log/mysql下,而mysql默认的目录是在/var/lib/mysql,所以首先要新建mysql文 件夹,Mkdir /var/log/mysql,然后用chown -R mysql.mysql /var/log/mysql mysql命令将mysql的所有者修改为用户mysql。其次要保证,mysql文件夹的权限755(即-rwxr-xr-x)。

    如果没 有修改权限和所有者,重启服务时就会在错误日志中出现找不到mysql-bin.log或者mysql-bin.log.index的错误(/usr /libexec/mysqld: File '/var/log/mysql/mysql-bin.log.index' not found (Errcode: 13))。

    完成编译后重启MYSQL服务

     Microsoft Azure部署MYSQL-MMM

    检查复制状态,如下图:

    show master status;

     Microsoft Azure部署MYSQL-MMM

    检查日志是否生成道新目录,如下

    # ls /var/log/mysql

     Microsoft Azure部署MYSQL-MMM

    使用mysql-mmm时一共需要三个用户: replication、mmm_agent和mmm_monitor(管理服务器上用来监控cluster状态的用户,所以可以限定只能从管理服务器登录)。使用下面三条命令新建这三个用户并分配相应的权限

    GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'10.0.0.%' IDENTIFIED BY 'monitor';

    GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO 'mmm_agent'@'10.0.0.%' IDENTIFIED BY 'agent';

    GRANT REPLICATION SLAVE ON *.* TO 'replication'@'10.0.0.%' IDENTIFIED BY 'replication';

    接下来再db1和db2分别执行下面命令修改复制账户和密码。并启动SLAVE进程。

    change master to master_host='10.0.0.4', master_port=3306, master_user='replication', master_password='replication';start slave;

    change master to master_host='10.0.0.5', master_port=3306, master_user='replication', master_password='replication';start slave;

     Microsoft Azure部署MYSQL-MMM

    检查复制状态,如下图:

    show slave statusG

     Microsoft Azure部署MYSQL-MMM

    (3)安装配置MYSQL-MMM

    在db1、db2、db3安装MMM所需要的Perl模块(所有服务器)执行该脚本,然后 yum -y install mysql-mmm-agent来安装MMM :

    # rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm  # yum -y install mysql-mmm-agent 

     Microsoft Azure部署MYSQL-MMM

    在Monitor节点安装mysql-mmm-monitor

    # yum -y install mysql-mmm-monitor*  # yum -y install perl-Time-HiRes* 

    编译DB1上的mmm_common.conf配置agent:

    # sudo vim /etc/mysql-mmm/mmm_common.conf  active_master_role writer  cluster_interface eth0  pid_path /var/run/mysql-mmm/mmm_agentd.pid  bin_path /usr/libexec/mysql-mmm/  replication_user replication  replication_password replication  agent_user mmm_agent  agent_password agent  ip 10.0.0.4  mode master  peer db2  ip 10.0.0.5  mode master  peer db1  ip 10.0.0.7  mode slave  hosts db1, db2  ips 10.0.0.100  mode exclusive  hosts db2, db3  ips 10.0.0.80, 10.0.0.90  mode balanced 

    其中 replication_user 用于检查复制的用户, agent_user 为agent的用户, mode 标明是否为主或者备选主,或者从库。 Mode exclusive 主为独占模式,同一时刻只能有一个主, 中hosts表示目前的主库和备选主的真实主机ip或者主机名, ips 为对外提供的虚拟机ip地址, 中hosts代表从库真实的ip和主机名, ips 代表从库的虚拟ip地址。

    完成编译后通过scp复制到db2、db3、monitor节点:

    # scp /etc/mysql-mmm/mmm_common.conf 10.0.0.5:/etc/mysql-mmm/  # scp /etc/mysql-mmm/mmm_common.conf 10.0.0.7:/etc/mysql-mmm/  # scp /etc/mysql-mmm/mmm_common.conf 10.0.0.6:/etc/mysql-mmm/ 

    Microsoft Azure部署MYSQL-MMM

    分别在db1,db2,db3三台主机的/etc/mysql-mmm配置mmm_agent.conf文件,分别用不同的字符标识,注意这三台机器的this db1这块要想,比如本环境中,db1要配置this db1,db2要配置为this db2,而db3要配置为this db3。

    # sudo vim /etc/mysql-mmm/mmm_agent.conf 

     Microsoft Azure部署MYSQL-MMM

    在monitor节点编译monitor配置文件,添加ping_ips中的内容

    # sudo vim /etc/mysql-mmm/mmm_mon.conf 

    Microsoft Azure部署MYSQL-MMM

    在db1、db2、db3启动agent服务

    # service mysql-mmm-agent start 

    Microsoft Azure部署MYSQL-MMM

    在monitor启动monitor服务

      这篇文章出自51CTO博客之星李珣博主,有任何问题请进入博主页面互动讨论!

    博文地址:http://lixun.blog.51cto.com/4198640/1629177

    MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器)关于mysql主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写 入),这个套件也能对居于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟ip,除此之外,它还有实 现数据备份、节点之间重新同步功能的脚本。

    MySQL本身没有提供replication failover的解决方案,通过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。

    MMM项目来自 Google:http://code.google.com/p/mysql-master-master

    官方网站为:http://mysql-mmm.org

    MMM主要功能由下面三个脚本提供

    l mmm_mond 负责所有的监控工作的监控守护进程,决定节点的移除等等 l mmm_agentd 运行在mysql服务器上的代理守护进程,通过简单远程服务集提供给监控节点 l mmm_control 通过命令行管理mmm_mond进程

    在两个节点的master-master环境下,MMM使用5个IP。每个单独的节点使用一个固定IP,这个固定IP永远不会变化。

    2个reader Ips(read-only)和一个writer IP(updates),后面三个IP(2个reader IP和一个Writer IP)在两个节点之间迁移,如何迁移取决于节点的可用性。

    正 常情况下(没有复制失败,没有复制延迟等)活动的master有两个虚拟ip(reader和writer),备用的master有一个虚拟 ip(reader),如果活动的master失败了,那么所有的reader和writer虚拟IP都会被分配给备用的master。

    具体的配置信息如下所示:

    角色 ip地址 主机名字 server-id   monitoring      10.0.0.6            monitor        -   master1         10.0.0.4            db1                1   master2         10.0.0.5            db2                 2   slave1          10.0.0.7            db3                 3 

    业务中的服务ip信息如下所示:

    ip地址                 角色                描述   10.0.0.80           write                应用程序连接该ip对主库进行写请求   10.0.0.90           read                  应用程序连接该ip进行读请求   10.0.0.100          read                   应用程序连接该ip进行读请求 

    部署架构如下图:

    Microsoft Azure部署MYSQL-MMM(1)安装MYSQL

    MySQL-MMM优缺点

    优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性。

    缺点:Monitor节点是单点,可以结合Keepalived实现高可用。

    具体的部署步骤如下:

    (1)主机配置

    在Azure中创建一个虚拟网络,然后在库中创建虚拟机,选择基于CENTOS Openlogic 6.5

    PS:由于MMM的监控机制需要检查PING,请确保所有虚拟机在一个VNET下。

    Microsoft Azure部署MYSQL-MMM(1)安装MYSQL

    同时完成四台虚拟机的创建,分别是master1、master2、slave、monitor,如下图:

    Microsoft Azure部署MYSQL-MMM(1)安装MYSQL

    使用那个Xshell连接到VM

    Microsoft Azure部署MYSQL-MMM(1)安装MYSQL

    首先获取root权限并修改root密码,如下操作

    Sudo su -

    输入密码

    Passwd root

    Microsoft Azure部署MYSQL-MMM(1)安装MYSQL

    在每一台服务器上用yum命令安装MYSQL服务

    # yum install mysql-server 

    Microsoft Azure部署MYSQL-MMM(1)安装MYSQL

    安装完成后重启MYSQL服务

    # service mysqld restart 

    Microsoft Azure部署MYSQL-MMM(1)安装MYSQL

    连接到mysql,修改mysql root密码,如下操作:

    # mysql -uroot  use mysql  update user set password=password('p@ssw0rd') where user='root';  flush privileges; 

    Microsoft Azure部署MYSQL-MMM(1)安装MYSQL

    select user,host,password from mysql.user

    Microsoft Azure部署MYSQL-MMM(1)安装MYSQL

    (2)配置Master-Master复制

    在db1(master1)、db2(master2)、db3(slave)上编译my.conf

    #vi /etc/my.cnf  [mysqld]  datadir=/var/lib/mysql  socket=/var/lib/mysql/mysql.sock  user=mysql  #下面为新添加的内容  default-storage-engine = innodb  replicate-ignore-db = mysql  binlog-ignore-db = mysql  server-id = 1 #每台服务器不能相同  log-bin = /var/log/mysql/mysql-bin.log  log_bin_index = /var/log/mysql/mysql-bin.log.index  relay_log = /var/log/mysql/mysql-bin.relay  relay_log_index = /var/log/mysql/mysql-bin.relay.index  expire_logs_days = 10  max_binlog_size = 100M  log_slave_updates = 1 

     Microsoft Azure部署MYSQL-MMM

    注意:

    1)server-id在每台服务器上的值都是不一样,在这里依次为1、2、3、4。

    2) 因为在这里把log文件配置到了/var/log/mysql下,而mysql默认的目录是在/var/lib/mysql,所以首先要新建mysql文 件夹,Mkdir /var/log/mysql,然后用chown -R mysql.mysql /var/log/mysql mysql命令将mysql的所有者修改为用户mysql。其次要保证,mysql文件夹的权限755(即-rwxr-xr-x)。

    如果没 有修改权限和所有者,重启服务时就会在错误日志中出现找不到mysql-bin.log或者mysql-bin.log.index的错误(/usr /libexec/mysqld: File '/var/log/mysql/mysql-bin.log.index' not found (Errcode: 13))。

    完成编译后重启MYSQL服务

     Microsoft Azure部署MYSQL-MMM

    检查复制状态,如下图:

    show master status;

     Microsoft Azure部署MYSQL-MMM

    检查日志是否生成道新目录,如下

    # ls /var/log/mysql

     Microsoft Azure部署MYSQL-MMM

    使用mysql-mmm时一共需要三个用户: replication、mmm_agent和mmm_monitor(管理服务器上用来监控cluster状态的用户,所以可以限定只能从管理服务器登录)。使用下面三条命令新建这三个用户并分配相应的权限

    GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'10.0.0.%' IDENTIFIED BY 'monitor';

    GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO 'mmm_agent'@'10.0.0.%' IDENTIFIED BY 'agent';

    GRANT REPLICATION SLAVE ON *.* TO 'replication'@'10.0.0.%' IDENTIFIED BY 'replication';

    接下来再db1和db2分别执行下面命令修改复制账户和密码。并启动SLAVE进程。

    change master to master_host='10.0.0.4', master_port=3306, master_user='replication', master_password='replication';start slave;

    change master to master_host='10.0.0.5', master_port=3306, master_user='replication', master_password='replication';start slave;

     Microsoft Azure部署MYSQL-MMM

    检查复制状态,如下图:

    show slave statusG

     Microsoft Azure部署MYSQL-MMM

    (3)安装配置MYSQL-MMM

    在db1、db2、db3安装MMM所需要的Perl模块(所有服务器)执行该脚本,然后 yum -y install mysql-mmm-agent来安装MMM :

    # rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm  # yum -y install mysql-mmm-agent 

     Microsoft Azure部署MYSQL-MMM

    在Monitor节点安装mysql-mmm-monitor

    # yum -y install mysql-mmm-monitor*  # yum -y install perl-Time-HiRes* 

    编译DB1上的mmm_common.conf配置agent:

    # sudo vim /etc/mysql-mmm/mmm_common.conf  active_master_role writer  cluster_interface eth0  pid_path /var/run/mysql-mmm/mmm_agentd.pid  bin_path /usr/libexec/mysql-mmm/  replication_user replication  replication_password replication  agent_user mmm_agent  agent_password agent  ip 10.0.0.4  mode master  peer db2  ip 10.0.0.5  mode master  peer db1  ip 10.0.0.7  mode slave  hosts db1, db2  ips 10.0.0.100  mode exclusive  hosts db2, db3  ips 10.0.0.80, 10.0.0.90  mode balanced 

    其中 replication_user 用于检查复制的用户, agent_user 为agent的用户, mode 标明是否为主或者备选主,或者从库。 Mode exclusive 主为独占模式,同一时刻只能有一个主, 中hosts表示目前的主库和备选主的真实主机ip或者主机名, ips 为对外提供的虚拟机ip地址, 中hosts代表从库真实的ip和主机名, ips 代表从库的虚拟ip地址。

    完成编译后通过scp复制到db2、db3、monitor节点:

    # scp /etc/mysql-mmm/mmm_common.conf 10.0.0.5:/etc/mysql-mmm/  # scp /etc/mysql-mmm/mmm_common.conf 10.0.0.7:/etc/mysql-mmm/  # scp /etc/mysql-mmm/mmm_common.conf 10.0.0.6:/etc/mysql-mmm/ 

    Microsoft Azure部署MYSQL-MMM

    分别在db1,db2,db3三台主机的/etc/mysql-mmm配置mmm_agent.conf文件,分别用不同的字符标识,注意这三台机器的this db1这块要想,比如本环境中,db1要配置this db1,db2要配置为this db2,而db3要配置为this db3。

    # sudo vim /etc/mysql-mmm/mmm_agent.conf 

     Microsoft Azure部署MYSQL-MMM

    在monitor节点编译monitor配置文件,添加ping_ips中的内容

    # sudo vim /etc/mysql-mmm/mmm_mon.conf 

    Microsoft Azure部署MYSQL-MMM

    在db1、db2、db3启动agent服务

    # service mysql-mmm-agent start 

    Microsoft Azure部署MYSQL-MMM

    在monitor启动monitor服务

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    Destoon 模板存放规则及语法参考

    Destoon系统常量与变量

    Destoon系统目录文件结构说明

    Destoon 系统安装指南

    Destoon会员公司主页模板风格添加方法

    Destoon 二次开发入门

    Microsoft 将于 2026 年 10 月终止对 Windows 11 SE 的支持

    Windows 11 存储感知如何设置?了解Windows 11 存储感知开启的好处

    Windows 11 24H2 更新灾难:系统升级了,SSD固态盘不见了...

    小米路由器买哪款?Miwifi热门路由器型号对比分析

    IT头条

    Synology 对 Office 套件进行重大 AI 更新,增强私有云的生产力和安全性

    01:43

    StorONE 的高效平台将 Storage Guardian 数据中心占用空间减少 80%

    11:03

    年赚千亿的印度能源巨头Nayara 云服务瘫痪,被微软卡了一下脖子

    12:54

    国产6nm GPU新突破!砺算科技官宣:自研TrueGPU架构7月26日发布

    01:57

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    技术热点

    如何删除自带的不常用应用为windows 7减负

    MySQL中多表删除方法

    改进的二值图像像素标记算法及程序实现

    windows 7 32位系统下手动修改磁盘属性例如M盘修改为F盘

    windows 7中怎么样在家庭组互传文件

    Linux应用集成MySQL数据库访问技巧

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。