关闭 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
    分享

    微信扫一扫:分享

    Scan me!

    微信里点“发现”,扫一下

    二维码便可将本文分享至朋友圈。

      这篇文章出自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服务

    上一篇返回首页 下一篇

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

    别人在看

    抖音安全与信任开放日:揭秘推荐算法,告别单一标签依赖

    ultraedit编辑器打开文件时,总是提示是否转换为DOS格式,如何关闭?

    Cornell大神Kleinberg的经典教材《算法设计》是最好入门的算法教材

    从 Microsoft 下载中心安装 Windows 7 SP1 和 Windows Server 2008 R2 SP1 之前要执行的步骤

    Llama 2基于UCloud UK8S的创新应用

    火山引擎DataTester:如何使用A/B测试优化全域营销效果

    腾讯云、移动云继阿里云降价后宣布大幅度降价

    字节跳动数据平台论文被ICDE2023国际顶会收录,将通过火山引擎开放相关成果

    这个话题被围观超10000次,火山引擎VeDI如此解答

    误删库怎么办?火山引擎DataLeap“3招”守护数据安全

    IT头条

    平替CUDA!摩尔线程发布MUSA 4性能分析工具

    00:43

    三起案件揭开侵犯个人信息犯罪的黑灰产业链

    13:59

    百度三年开放2.1万实习岗,全力培育AI领域未来领袖

    00:36

    工信部:一季度,电信业务总量同比增长7.7%,业务收入累计完成4469亿元

    23:42

    Gartner:2024年全球半导体营收6559亿美元,AI助力英伟达首登榜首

    18:04

    技术热点

    iOS 8 中如何集成 Touch ID 功能

    windows7系统中鼠标滑轮键(中键)的快捷应用

    MySQL数据库的23个特别注意的安全事项

    Kruskal 最小生成树算法

    Ubuntu 14.10上安装新的字体图文教程

    Ubuntu14更新后无法进入系统卡在光标界面解怎么办?

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

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