澳门新浦京娱乐场网站-www.146.net-新浦京娱乐场官网
做最好的网站

MMM高可用方案,部署MySQL高可用集群

 

MySQL MMM高可用方案,mysqlmmm方案

一、MMM简介:

  一.简介

介绍

本篇小说首要介绍搭建MMM方案以致MMM框架结构的规律。这里不介绍大旨、主主的搭建方法,MMM方案不适用对数据大器晚成致性必要异常高的事体。

 

 

 架构

澳门新浦京娱乐场网站 1

澳门新浦京娱乐场网站 2

部署

1.修改hosts

在全体的服务器中施行相近的操作。

vim /etc/hosts

192.168.137.10 master
192.168.137.20 backup
192.168.137.30 slave
192.168.137.40 monitor

2.添加mysql用户

只供给在具有的数量库端推行就可以,监察和控制端没有需求。

GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'192.168.137.%' IDENTIFIED BY 'mmm_monitor'; 
GRANT SUPER,REPLICATION CLIENT, PROCESS ON *.* TO 'mmm_agent'@'192.168.137.%' IDENTIFIED BY  'mmm_agent';
flush privileges;

澳门新浦京娱乐场网站 3

 注意:repl客户在搭建基本服务的时候已经创制好了。

 3.安装监控软件

注意:监察和控制端全体安装,不过监察和控制端只需求利用mysql-mmm-monitor,mysql-mmm-agent无需运维。数据库端只需求安装mysql-mmm-agent

1.在督察服务器实践

wget http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm –ivh epel-release-6-8.noarch.rpm
yum –y  install mysql-mmm*

2.在数据库服务器上实行,每一种数据库服务器上都要实行

wget http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm –ivh epel-release-6-8.noarch.rpm
yum -y install mysql-mmm-agent

渠道表达:

澳门新浦京娱乐场网站 4

4.布置文件

db服务器配置文件:mmm_agent.conf,mmm_common.conf

监察和控制服务器的配备文件:mmm_mon.conf,mmm_common.conf(该公文全体服务器相通卡塔 尔(英语:State of Qatar)

配置db服务器

1.修改master服务器

vim /etc/mysql-mmm/mmm_common.conf

active_master_role      writer     ###积极的master角色的标示,所有的db服务器都需要开启read_only参数,对于writer服务器监控代理会自动将read_only属性关闭。

<host default>
    cluster_interface       eth0      #####群集的网络接口
    pid_path                /var/run/mysql-mmm/mmm_agentd.pid    ####pid路径
    bin_path                /usr/libexec/mysql-mmm/              #####可执行文件路径 
    replication_user        repl           #######复制用户
    replication_password    repl           #######复制用户密码
    agent_user              mmm_agent      #######代理用户,用于更改只读操作
    agent_password          mmm_agent      #######代理用户密码
</host>

<host master>            ##########master1的host名
    ip      192.168.137.10   #####master1的ip
    mode    master       ########角色属性,master代表是主
    peer    backup       ########与master1对等的服务器的host名,也就是master2的服务器host名
</host>

<host backup>     ####和master的概念一样
    ip      192.168.137.20
    mode    master
    peer    master
</host>

<host slave>      #####从库的host名,如果存在多个从库可以重复一样的配置
    ip      192.168.137.30   ####从的ip
    mode    slave    #####slave的角色属性代表当前host是从
</host>

<role writer>   ####writer角色配置
    hosts   master,backup   ####能进行写操作的服务器的host名,如果不想切换写操作这里可以只配置master,这样也可以避免因为网络延时而进行write的切换,但是一旦master出现故障那么当前的MMM就没有writer了只有对外的read操作。
    ips     192.168.137.100  #####对外提供的写操作的虚拟IP
    mode    exclusive    #####exclusive代表只允许存在一个主,也就是只能提供一个写的IP
</role>

<role reader>   #####read角色配置
    hosts   backup,slave  ######对外提供读操作的服务器的host名,当然这里也可以把master加进来
    ips     192.168.137.120,192.168.137.130,192.168.137.140  ###对外提供读操作的虚拟ip,这两个ip和host不是一一对应的,并且ips也hosts的数目也可以不相同,如果这样配置的话其中一个hosts会分配两个ip
    mode    balanced   ###balanced代表负载均衡
</role>

再者将那个文件拷贝到其余的服务器包蕴监察和控制服务器,配置不改变

scp  /etc/mysql-mmm/mmm_common.conf slave:/etc/mysql-mmm/
scp  /etc/mysql-mmm/mmm_common.conf backup:/etc/mysql-mmm/
scp  /etc/mysql-mmm/mmm_common.conf monitor:/etc/mysql-mmm/

 2.代理文件配置

vim /etc/mysql-mmm/mmm_agent.conf

 澳门新浦京娱乐场网站 5

瞩目:那个布局只安插db服务器,监察和控制服务器无需配置,this后边的host名改成当下服务器的host命令,master2和slave也改成相应的服务器的host名。

3.起始代理进程

 

chkconfig mysql-mmm-agent on

service mysql-mmm-agent start

每台db服务器上都亟需运维

配置监控服务器

vim /etc/mysql-mmm/mmm_mon.conf

 

include mmm_common.conf
<monitor>
    ip                  127.0.0.1
    pid_path            /var/run/mysql-mmm/mmm_mond.pid
    bin_path            /usr/libexec/mysql-mmm
    status_path         /var/lib/mysql-mmm/mmm_mond.status  #####群集的状态文件,也就是执行mmm_control show操作的显示来源。
    ping_ips            192.168.137.10,192.168.137.20,192.168.137.30  ######被监控的db服务器的ip地址
    auto_set_online     0   ####设置自动online的时间,默认是超过60s就将它设置为online,默认是60s,这里将其设为0就是立即online

    # The kill_host_bin does not exist by default, though the monitor will
    # throw a warning about it missing.  See the section 5.10 "Kill Host
    # Functionality" in the PDF documentation.
    #
    # kill_host_bin     /usr/libexec/mysql-mmm/monitor/kill_host
    #
</monitor>

<host default>
    monitor_user        mmm_monitor   ####监控db服务器的用户
    monitor_password    mmm_monitor   ####监控db服务器的密码
</host>

debug 0       #######debug 0正常模式,1为debug模式

留意:配置文件中的注释是为了有协理了然,在布局的时候最佳把注释去掉以防因为注释形成的心腹影响。

开发银行监察和控制进度

chkconfig mysql-mmm- monitor on
service mysql-mmm-monitor start

留意:无论是在db端照旧在监控端要是有对安顿文件进行退换操作都供给重启代理进度和监理进度。

 

操作解析

日记文件

日记文件频频是分析错误的重中之重,所以要善用运用日志文件举行难点深入分析。

db端:/var/log/mysql-mmm/mmm_agentd.log

监控端:/var/log/mysql-mmm/mmm_mond.log

指令文件

mmm_agentd :db代理进程的启动文件
mmm_mond :监控进程的启动文件   
mmm_backup :备份文件 
mmm_restore :还原文件
mmm_clone    
mmm_control:监控操作命令文件   

 

db服务器端唯有mmm_agentd程序,此外的都是在monitor服务器端。

mmm_control用法

mmm_control程序能够用来监察和控制集结状态、切换writer、设置onlineoffline操作等。

Valid commands are:
    help                              - show this message    ###帮助信息
    ping                              - ping monitor ###ping当前的群集是否正常
    show                              - show status  ####群集在线状态检查
    checks [<host>|all [<check>|all]] - show checks status #####执行监控检查操作
    set_online <host>                 - set host <host> online ####将host设置为online
    set_offline <host>                - set host <host> offline  ###将host设置为offline
    mode                              - print current mode.  ####打印输出当前的mode
    set_active                        - switch into active mode.
    set_manual                        - switch into manual mode.
    set_passive                       - switch into passive mode.
    move_role [--force] <role> <host> - move exclusive role <role> to host <host>  ####移除writer服务器为指定的host服务器
                                        (Only use --force if you know what you are doing!)
    set_ip <ip> <host>                - set role with ip <ip> to host <host>

1.检查有着的db服务器集合状态

[[email protected] mysql-mmm]# mmm_control checks all
master  ping         [last change: 2016/06/07 16:31:24]  OK
master  mysql        [last change: 2016/06/07 16:31:24]  OK
master  rep_threads  [last change: 2016/06/07 16:31:24]  OK
master  rep_backlog  [last change: 2016/06/07 16:31:24]  OK: Backlog is null
slave   ping         [last change: 2016/06/07 16:31:24]  OK
slave   mysql        [last change: 2016/06/07 16:31:24]  OK
slave   rep_threads  [last change: 2016/06/07 16:31:24]  OK
slave   rep_backlog  [last change: 2016/06/07 16:31:24]  OK: Backlog is null
backup  ping         [last change: 2016/06/07 16:31:24]  OK
backup  mysql        [last change: 2016/06/07 16:31:24]  OK
backup  rep_threads  [last change: 2016/06/07 16:31:24]  OK
backup  rep_backlog  [last change: 2016/06/07 16:31:24]  OK: Backlog is null

自作者商酌项包涵:ping、mysql是否正规运维、复制线程是或不是正常等

2.检查集合意况在线情形

[[email protected] mysql-mmm]# mmm_control show
  backup(192.168.137.20) master/ONLINE. Roles: reader(192.168.137.120)
  master(192.168.137.10) master/ONLINE. Roles: writer(192.168.137.100)
  slave(192.168.137.30) slave/ONLINE. Roles: reader(192.168.137.130)

3.对点名的host实践offline操作

[[email protected] mysql-mmm]# mmm_control set_offline backup
OK: State of 'backup' changed to ADMIN_OFFLINE. Now you can wait some time and check all roles!
[[email protected] mysql-mmm]# mmm_control show
  backup(192.168.137.20) master/ADMIN_OFFLINE. Roles: 
  master(192.168.137.10) master/ONLINE. Roles: writer(192.168.137.100)
  slave(192.168.137.30) slave/ONLINE. Roles: reader(192.168.137.120), reader(192.168.137.130)

4.对点名的host实践onine操作

[[email protected] mysql-mmm]# mmm_control set_online backup
OK: State of 'backup' changed to ONLINE. Now you can wait some time and check its new roles!
[[email protected] mysql-mmm]# mmm_control show
  backup(192.168.137.20) master/REPLICATION_FAIL. Roles: 
  master(192.168.137.10) master/ONLINE. Roles: writer(192.168.137.100)
  slave(192.168.137.30) slave/ONLINE. Roles: reader(192.168.137.120), reader(192.168.137.130)

[[email protected] mysql-mmm]# mmm_control show
  backup(192.168.137.20) master/ONLINE. Roles: reader(192.168.137.120)
  master(192.168.137.10) master/ONLINE. Roles: writer(192.168.137.100)
  slave(192.168.137.30) slave/ONLINE. Roles: reader(192.168.137.130)

5.执行write切换

1.翻看当前的slave对应的master

[[email protected] ~]# mysql -uroot -proot -e 'show slave status G;'
Warning: Using a password on the command line interface can be insecure.
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.137.10
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000073
          Read_Master_Log_Pos: 1461
               Relay_Log_File: mysql-relay-bin.000006
                Relay_Log_Pos: 283
        Relay_Master_Log_File: mysql-bin.000073
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

2.writer切换,要确保mmm_common.conf文件中的writer属性有配备相应的host,不然不能切换

[[email protected] mysql-mmm]# mmm_control move_role writer backup
OK: Role 'writer' has been moved from 'master' to 'backup'. Now you can wait some time and check new roles info!
[[email protected] mysql-mmm]# mmm_control show
  backup(192.168.137.20) master/ONLINE. Roles: reader(192.168.137.120), writer(192.168.137.100)
  master(192.168.137.10) master/ONLINE. Roles: 
  slave(192.168.137.30) slave/ONLINE. Roles: reader(192.168.137.130)

3.save从库自动切换成了新的master

[[email protected] ~]# mysql -uroot -proot -e 'show slave status G;'
Warning: Using a password on the command line interface can be insecure.
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.137.20
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000039
          Read_Master_Log_Pos: 120
               Relay_Log_File: mysql-relay-bin.000002
                Relay_Log_Pos: 283
        Relay_Master_Log_File: mysql-bin.000039
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

 

其余管理难点

 假设不想让writer从master切换成backup(包蕴基本的延时也会引致写VIP的切换卡塔 尔(英语:State of Qatar),那么可以在配置/etc/mysql-mmm/mmm_common.conf时,去掉<role write>中的backup

<role writer>   ####writer角色配置
    hosts   master   ###这里只配置一个Hosts
    ips     192.168.137.100  #####对外提供的写操作的虚拟IP
    mode    exclusive    #####exclusive代表只允许存在一个主,也就是只能提供一个写的IP
</role>

 那样的话当master现身故障了writer写操作不会切换来backup服务器,并且slave也不会针对新的master,那个时候当前的MMM以前对外提供写服务。

 

事先写的复制相关小说:

主从复制:

主主复制:

MMM即Multi-Master Replication Manager for MySQL:mysql多主复制微处理器,基于perl完结,关于mysql主主复制配置的监察、故障转移和保管的生机勃勃套可伸缩的脚本套件(在其余时候独有一个节点能够被写入卡塔尔国,MMM也能对从服务器进行读负载均衡,所以能够用它来在少年老成组用于复制的服务器运转虚构ip,除此而外,它还会有实现数据备份、节点之间重新联合功效的脚本。MySQL本人未有提供replication failover的缓和方案,通过MMM方案能促成服务器的故障转移,进而达成mysql的高可用。MMM不仅可以提供浮动IP的意义,假使当前的主服务器挂掉后,会将你后端的从服务器自动转载新的主服务器实行同步复制,不用手工业改善同步布置。这么些方案是现阶段相比较早熟的减轻方案。详细的情况请看官方网站:

    本文将介绍怎么着运用mysql-mmm搭建数据库的高可用架构.

总结

基本的延时会招致写VIP的切换,下生机勃勃篇作品会写关于半联机复制结合MMM方案,能够更有效的消除切换数据不黄金时代致性的难题,迎接关心。

1.对外提供读写的虚拟IP是由monitor程控。要是monitor未有运行那么db服务器不会被分配设想ip,可是倘诺已经分配好了设想ip当monitor程序关闭了本来分配的假造ip不会立即关闭外界程序还足以连接访问(只要不重启互联网卡塔尔国,那样的好处正是对于monitor的可信性需求就能够低一些,近日还不知道能维持多少长度的年华,然而借使当时在那之中的某叁个db服务器故障了就不能够管理切换,相当于原来的假造ip依然维持不改变,挂掉的那台DB的设想ip会变的不可访谈。

2.agent程序受monitor程序的调整管理write切换,从库切换等操作。假诺monitor进程关闭了那么agent进度就起不到什么样坚决守住,它自己不能够管理故障。

3.monitor主次负责督察db服务器的景况,包括Mysql数据库、服务器是或不是运维、复制线程是或不是符合规律、主从延时等;它还用于调节agent程序管理故障。

4.monitor会每间距几分钟监察和控制db服务器的场所,假设db服务器已经从故障产生了例行,那么monitor会自动在60s之后将其设置为online状态(暗中认可是60s足以设为此外的值),有监察和控制端的布局文件参数“auto_set_online”决定,集合服务器的情事有三种分别是:HAEnclaveD_OFFLINE→AWAITING_RECOVERY→online

5.默认monitor会控制mmm_agent会将writer db服务器read_only修改为OFF,其它的db服务器read_only纠正为ON,所感觉了严厉能够在有着的服务器的my.cnf文件中加入read_only=1由monitor调整来决定writer和read,root客户和复制顾客不受read_only参数的熏陶

6.monitor会调控slave指向master,要是当前master故障了MMM会调整slave指向新的master,由于MMM是非抢占机制所以新的master将直接担当写服务。

 

 

 

备注:

    作者:pursuer.chen

    博客:http://www.cnblogs.com/chenmh

本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。

《欢迎交流讨论》

MMM高可用方案,mysqlmmm方案 介绍 本篇小说首要介绍搭建MMM方案甚至MMM架构的法规。这里不介绍大旨、主主的搭建方法,MMM方案不适用对...

澳门新浦京娱乐场网站 6

  二.环境

优点:高可用性,增添性好,现身故障自动切换,对于主主同步,在同有毛病候只提供黄金年代台数据库写操作,保障的数据的生机勃勃致性。当主服务器挂掉以往,另八个主立刻接管,其余的从劳动器能自动切换,不用人工干预。

          

缺点:monitor节点是单点,可是那么些你也得以组成keepalived可能haertbeat做成高可用;起码多个节点,对主机的多稀有供给,必要贯彻读写分离,还索要在前面一个编写读写分离程序。在读写特别繁忙的工作体系下表现不是很牢固,可能会现出复制延时、切换失效等主题素材。MMM方案并不太适应于对数据安全性供给异常高,况兼读、写繁忙的遇到中。

服务器

主机名

Ip

Severed

Mysql版本

系统

Master1

master1

192.168.4.10

10

5.6.15

Centos6.9

Master2

master2

192.168.4.11

11

5.6.15

 

Slave1

slave1

192.168.4.12

12

5.6.15

 

Slave2

slave2

192.168.4.13

13

5.6.15

 

Monitor

monitor

192.168.4.100

 

Client

client

192.168.4.120

5.6.15

 

适用项景:

 

MMM的适用项景为数据库访谈量大,而且能达成读写抽离的风貌。
Mmm首要功用由下边八个剧本提供:
mmm_mond 担当全部的监督检查职业的监督检查守护进度,决定节点的移除(mmm_mond进度依期心跳检查测量检验,战败则将write ip浮动到别的意气风发台master)等等
mmm_agentd 运营在mysql服务器上的代办守护进度,通过轻便远程服务集提必要监察和控制节点
mmm_control 通过命令行管理mmm_mond进程
在总体软禁进度中,需求在mysql中加多相关授权顾客,授权的客商包含一个mmm_monitor客商和一个mmm_agent客户,假若想利用mmm的备份工具则还要加上二个mmm_tools用户。

         虚拟IP  

二、安顿进行

      

1、景况介绍

虚拟ip

功能

描述

192.168.4.200

Write

主用master写入虚拟Ip

192.168.4.201

read

读服务器虚拟Ip

192.168.4.202

Read

读服务器虚拟Ip

OS:centos7.2(陆12个人卡塔尔数据库系统:mysql5.7.13

 

关闭selinux

                案例图谱

布局ntp,同步时间

 

角色

IP

hostname

Server-id

Write vip

Read vip

Master1

192.168.31.83

master1

1

192.168.31.2


Master2(backup)

192.168.31.141

master2

2


192.168.31.3

Slave1

192.168.31.250

slave1

3


192.168.31.4

Slave2

192.168.31.225

slave2

4


192.168.31.5

monitor

192.168.31.106

monitor1


澳门新浦京娱乐场网站 7

2、在富有主机上配置/etc/hosts文件,加多如下内容:

 

192.168.31.83 master1
192.168.31.141 master2
192.168.31.250 slave1
192.168.31.225 slave2
192.168.31.106 monitor1

  三.mmm架构

在装有主机上设置perl、perl-develperl-CPAN libart_lgpl.x86_64 rrdtool.x86_64 rrdtool-perl.x86_64包
#yum -y install perl-* libart_lgpl.x86_64 rrdtool.x86_64 rrdtool-perl.x86_64

                服务器剧中人物

注:使用centos7在线yum源安装

类型

服务进程

主要用途

管理节点

mmm-monitor

负责所有的监控工作的监控守护进程,决定故障节点的移除或恢复。

数据库节点

mmm-agent

运行所在MySQL服务器殇的代理守护进程,提供简单远程服务集、提供给监控节点(可用来更改只读模式、复制的主服务器等 )

安装perl的相关库

 

#cpan -i Algorithm::Diff Class::Singleton DBI DBD::mysql Log::Dispatch Log::Log4perl Mail::Send Net::Ping Proc::Daemon Time::HiRes Params::Validate Net::ARP

    

3、在master1、master2、slave1、slave2主机上安装mysql5.7和配备复制

                   大旨软件包及应用

master1和master2互为主干,slave1、slave2为master1的从
在种种mysql的布置文件/etc/my.cnf中参加以下内容, 注意server_id无法重新。

软件包名

包作用

Net-ARP-1.0.8.tgz

分配虚拟ip

mysql-mmm-2.2.1.tar.gz

MySQL-MMM架构核心进程,安装完成后即可启动管理进程也可启动客户端进程。

master1主机:

 

log-bin = mysql-bin
binlog_format = mixed
server-id = 1
relay-log = relay-bin
relay-log-index = slave-relay-bin.index
log-slave-updates = 1
auto-increment-increment = 2
auto-increment-offset = 1
master2主机:
log-bin = mysql-bin
binlog_format = mixed
server-id = 2
relay-log = relay-bin
relay-log-index = slave-relay-bin.index
log-slave-updates = 1
auto-increment-increment = 2
auto-increment-offset = 2
slave1主机:
server-id = 3
relay-log = relay-bin
relay-log-index = slave-relay-bin.index
read_only  = 1
slave2主机:
server-id = 4
relay-log = relay-bin
relay-log-index = slave-relay-bin.index
read_only  = 1

  四.安排集群基本结构

在完结了对my.cnf的改换后,通过systemctl restart mysqld重新开动mysql服务

   大家将配备集群的行事分为两大块,第一块正是安插集群根基条件。使用4台君越HEL6服务器,如下图所示。当中192.168.4.10、192.168.4.11用作MySQL双主服务器,192.168.4.12、192.168.4.13作为主服务器的从服务器。

4台数据库主机若要开启防火墙,要么停业防火墙或许创立访问法规:

  安装服务器时提议管理防火墙及SELINUX.

firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
基本配置(master1和master2配置成主主,slave1和slave2配置成master1的从卡塔 尔(阿拉伯语:قطر‎:
在master1上授权:
mysql> grant replication slave on *.* to rep@'192.168.31.%' identified by '123456';
在master2上授权:
mysql> grant replication slave on *.* to rep@'192.168.31.%' identified by '123456';
把master2、slave1和slave2配置成master1的从库:
在master1上执行show master status; 获取binlog文件和Position点
mysql> show master status;
------------------ ---------- -------------- ------------------ --------------------------------------------------
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
------------------ ---------- -------------- ------------------ ---------------------------------------------------
| mysql-bin.000001 | 452 | | | |
------------------ ---------- -------------- ------------------ -----------------------------------------------------
在master2、slave1和slave2执行

澳门新浦京娱乐场网站 8

mysql> change master to master_host='192.168.31.83',master_port=3306,master_user='rep',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=452;
mysql>slave start;
验证主从复制:
master2主机:
mysql> show slave statusG;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.31.83
Master_User: rep
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 452
Relay_Log_File: relay-bin.000002
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
slave1主机:
mysql> show slave statusG;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.31.83
Master_User: rep
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 452
Relay_Log_File: relay-bin.000002
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
slave2主机:
mysql> show slave statusG;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_MMM高可用方案,部署MySQL高可用集群。Host: 192.168.31.83
Master_User: rep
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 452
Relay_Log_File: relay-bin.000002
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果Slave_IO_Running和Slave_SQL_Running都为yes,那么主从就曾经配置OK了
把master1配置成master2的从库:
在master2上执行show master status ;获取binlog文件和Position点
mysql> show master status;
------------------ ---------- -------------- ------------------ --------------------------------------------------
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
------------------ ---------- -------------- ------------------ ---------------------------------------------------
| mysql-bin.000001 | 452 | | | |
------------------ ---------- -------------- ------------------ ----------------------------------------------------
在master1上执行:
mysql> change master to master_host='192.168.31.141',master_port=3306,master_user='rep',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=452;
mysql> start slave;
验证主从复制:
master1主机:
mysql> show slave statusG;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.31.141
Master_User: rep
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 452
Relay_Log_File: relay-bin.000002
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果Slave_IO_Running和Slave_SQL_Running都为yes,那么主从就已经配置OK了
4、mysql-mmm配置:
在4台mysql节点上创建客户
始建代理账号:
mysql> grant super,replicationclient,process on *.* to 'mmm_agent'@'192.168.31.%' identified by '123456';
开创监察和控制账号:
mysql> grant replication client on *.* to 'mmm_monitor'@'192.168.31.%' identified by '123456';
注1:因为在此之前的主从复制,以致基本已经是ok的,所以自身在master1服务器施行就ok了。
自己切磋master2和slave1、slave2三台db上是否都存在监察和控制和代理账号
mysql> select user,host from mysql.user where user in ('mmm_monitor','mmm_agent');
------------- ----------------------------
| user | host |
------------- ----------------------------
| mmm_agent | 192.168.31.% |
| mmm_monitor | 192.168.31.% |
------------- ------------------------------

mysql> show grants for 'mmm_agent'@'192.168.31.%';
-----------------------------------------------------------------------------------------------------------------------------
| Grants for mmm_agent@192.168.31.% |
-----------------------------------------------------------------------------------------------------------------------------
| GRANT PROCESS, SUPER, REPLICATION CLIENT ON *.* TO 'mmm_agent'@'192.168.31.%' |
-----------------------------------------------------------------------------------------------------------------------------
mysql> show grants for 'mmm_monitor'@'192.168.31.%';
-----------------------------------------------------------------------------------------------------------------------------
| Grants for mmm_monitor@192.168.31.% |
-----------------------------------------------------------------------------------------------------------------------------
| GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'192.168.31.%' |
注2:
mmm_monitor客商:mmm监察和控制用于对mysql服务器进度健检
mmm_agent客商:mmm代理用来改进只读情势,复制的主服务器等
5、mysql-mmm安装
在monitor主机(192.168.31.106) 上安装监督程序
cd /tmp
wget
tar -zxf mysql-mmm-2.2.1.tar.gz
cd mysql-mmm-2.2.1
make install
在数据库服务器(master1、master2、slave1、slave2)上设置代理
cd /tmp
wget
tar -zxf mysql-mmm-2.2.1.tar.gz
cd mysql-mmm-2.2.1
make install

 

6、配置mmm

 

编写配置文件,五台主机必需意气风发律:
成功安装后,全数的布署文件都放到了/etc/mysql-mmm/上面。管理服务器和数据库服务器上都要包括一个协作的文件mmm_common.conf,内容如下:
active_master_rolewriter#主动的master剧中人物的标志,全数的db服务器要开启read_only参数,对于writer服务器监察和控制代理会自动将read_only属性关闭。
<host default>
cluster_interfaceeno16777736#群集的互联网接口
pid_path /var/run/mmm_agentd.pid#pid路径
bin_path /usr/lib/mysql-mmm/#可实行文件路线
replication_user rep#复制客商
replication_password 123456#复制客商密码
agent_usermmm_agent#代理客商
agent_password 123456#代理顾客密码
</host>
<host master1>#master1的host名
ip 192.168.31.83#master1的ip
mode master#剧中人物属性,master代表是主
peer master2#与master1对等的服务器的host名,也等于master2的服务器host名
</host>
<host master2>#和master的概念同样
ip 192.168.31.141
mode master
peer master1
</host>
<host slave1>#从库的host名,假诺存在多少个从库可以再次相同的布局
ip 192.168.31.250#从的ip
mode slave#slave的剧中人物属性代表当前host是从
</host>
<host slave2>#和slave的定义同样
ip 192.168.31.225
mode slave
</host>
<role writer>#writer剧中人物配置
hosts master1,master2#能扩充写操作的服务器的host名,假使不想切换写操作这里能够只布置master,那样也得以幸免因为互联网延时而开展write的切换,不过要是master现身故障那么当前的MMM就从未writer了只有对外的read操作。
ips 192.168.31.2#对外提供的写操作的诬捏IP
mode exclusive#exclusive代表只同意存在二个主,也正是一定要提供二个写的IP
</role>
<role reader>#read角色配置
hosts master2,slave1,slave2#对外提供读操作的服务器的host名,当然这里也足以把master加进来
ips 192.168.31.3, 192.168.31.4, 192.168.31.5#对外提供读操作的虚构ip,这四个ip和host不是逐大器晚成对应的,并且ips也hosts的数目也足以不豆蔻梢头致,假设那样安顿的话此中一个hosts会分配八个ip
mode balanced#balanced代表负载均衡
</role>
同有时间将这么些文件拷贝到此外的服务器,配置不改变
#for host in master1 master2 slave1 slave2 ; do scp /etc/mysql-mmm/mmm_common.conf $host:/etc/mysql-mmm/ ; done
代理文件配置
编写 4台mysql节点机上的/etc/mysql-mmm/mmm_agent.conf
在数据库服务器上,还大概有一个mmm_agent.conf需求改过,其剧情是:
includemmm_common.conf
this master1
注意:这一个布局只安插db服务器,监控服务器没有必要配置,this后边的host名改成当下服务器的主机名。
开发银行代理进度
在 /etc/init.d/mysql-mmm-agent的本子文件的#!/bin/sh下边,参预如下内容
source /root/.bash_profile
增加成系统服务并安装为自运行
#chkconfig --add mysql-mmm-agent
#chkconfigmysql-mmm-agent on
#/etc/init.d/mysql-mmm-agent start
注:添加source /root/.bash_profile指标是为着mysql-mmm-agent服务能启机自启。
机动运营和手动运转的唯后生可畏分歧,正是激活四个console 。那么证明在作为劳动运转的时候,恐怕是由于缺少蒙受变量
劳务运转失利,报错音讯如下:
Daemon bin: '/usr/sbin/mmm_agentd'
Daemon pid: '/var/run/mmm_agentd.pid'
Starting MMM Agent daemon... Can't locate Proc/Daemon.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/sbin/mmm_agentd line 7.
BEGIN failed--compilation aborted at /usr/sbin/mmm_agentd line 7.
failed

4.1 mysql服务器的装置

化解方法:

      

# cpanProc::Daemon
# cpan Log::Log4perl
# /etc/init.d/mysql-mmm-agent start
Daemon bin: '/usr/sbin/mmm_agentd'
Daemon pid: '/var/run/mmm_agentd.pid'
Starting MMM Agent daemon... Ok
# netstat -antp | grep mmm_agentd
tcp 0 0 192.168.31.83:9989 0.0.0.0:* LISTEN 9693/mmm_agentd
安插防火墙
firewall-cmd --permanent --add-port=9989/tcp
firewall-cmd --reload
编写制定 monitor主机上的/etc/mysql-mmm/mmm_mon.conf
includemmm_common.conf

上面小编会介绍MySQL的装置方式。本文将利用六17位的RAV4HEL 6操作系统,MySQL数据库的本子是5.6.15。

<monitor>
ip 127.0.0.1##为了安全性,设置只在本机监听,mmm_mond私下认可监听9988
pid_path /var/run/mmm_mond.pid
bin_path /usr/lib/mysql-mmm/
status_path/var/lib/misc/mmm_mond.status
ping_ips192.168.31.83,192.168.31.141,192.168.31.250,192.168.31.225#用于测验网络可用性 IP 地址列表,只要个中有二个地点 ping 通,就表示网络健康,这里而不是写入本机地址
auto_set_online 0#安装自动online的大运,私下认可是抢先60s就将它设置为online,暗中同意是60s,这里将其设为0正是即时online
</monitor>

访问 Community Server下载页面,平台接收“Red Hat Enterprise Linux 6 / Oracle Linux 6”,然后选拔陆拾三个人的bundle整合包下载,如下图所示。

<check default>
check_period 5
trap_period 10
timeout 2
#restart_after 10000
max_backlog 86400
</check>
check_period
陈诉:检查周期默感觉5s
默认值:5s
trap_period
呈报:一个节点被检查测量试验不成功的岁月不断trap_period秒,就谨慎的以为这么些节点退步了。
默认值:10s
timeout
陈说:检查超时的光阴
默认值:2s
restart_after
描述:在完成restart_after次检查后,重启checker进度
默认值:10000
max_backlog
汇报:记录检查rep_backlog日志的最大次数
默认值:60

 

<host default>
monitor_usermmm_monitor#监理db服务器的客商
monitor_password 123456#督察db服务器的密码
</host>
debug 0#debug 0符合规律格局,1为debug情势
启航监察和控制进度:
在 /etc/init.d/mysql-mmm-agent的脚本文件的#!/bin/sh上边,出席如下内容
source /root/.bash_profile
加多成系统服务并设置为自运维
#chkconfig --add mysql-mmm-monitor
#chkconfigmysql-mmm-monitor on
#/etc/init.d/mysql-mmm-monitor start

澳门新浦京娱乐场网站 9

运转报错:

 

Starting MMM Monitor daemon: Can not locate Proc/Daemon.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/sbin/mmm_mond line 11.
BEGIN failed--compilation aborted at /usr/sbin/mmm_mond line 11.
failed
减轻格局:安装下列perl的库
#cpanProc::Daemon
#cpan Log::Log4perl
[root@monitor1 ~]# /etc/init.d/mysql-mmm-monitor start
Daemon bin: '/usr/sbin/mmm_mond'
Daemon pid: '/var/run/mmm_mond.pid'
Starting MMM Monitor daemon: Ok
[root@monitor1 ~]# netstat -anpt | grep 9988
tcp 0 0 127.0.0.1:9988 0.0.0.0:* LISTEN 8546/mmm_mond
注1:不论是在db端依然在监控端要是有对安插文件进行订正操作都须要重启代理进程和督察进度。
注2:MMM运行顺序:先运营monitor,再起步 agent

*澳门新浦京娱乐场网站,           注意:下载MySQL软件时索要以Oracle网址账户登入,若无请依据页面提示先挂号二个(无需付费卡塔尔国。*

自己商量集群状态:

*    *

[root@monitor1 ~]# mmm_control show
master1(192.168.31.83) master/ONLINE. Roles: writer(192.168.31.2)
master2(192.168.31.141) master/ONLINE. Roles: reader(192.168.31.5)
slave1(192.168.31.250) slave/ONLINE. Roles: reader(192.168.31.4)
slave2(192.168.31.225) slave/ONLINE. Roles: reader(192.168.31.3)

    4.1.1 卸载系统自带的mysql-server、mysql软件包(如果部分话卡塔尔国   

假设服务器状态不是ONLINE,能够用如下命令将服务器上线,比如:

yum -y remove mysql-server mysql

#mmm_controlset_online主机名

 

例如:[root@monitor1 ~]#mmm_controlset_onlinemaster1
从上边包车型客车彰显能够见到,写央求的VIP在master1上,全数从节点也都把master1当作主节点。
查阅是或不是启用vip
[root@master1 ~]# ipaddr show dev eno16777736
eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdiscpfifo_fast state UP qlen 1000
link/ether 00:0c:29:6d:2f:82 brdff:ff:ff:ff:ff:ff
inet 192.168.31.83/24 brd 192.168.31.255 scope global eno16777736
valid_lft forever preferred_lft forever
inet 192.168.31.2/32 scope global eno16777736
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe6d:2f82/64 scope link
valid_lft forever preferred_lft forever
[root@master2 ~]# ipaddr show dev eno16777736
eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdiscpfifo_fast state UP qlen 1000
link/ether 00:0c:29:75:1a:9c brdff:ff:ff:ff:ff:ff
inet 192.168.31.141/24 brd 192.168.31.255 scope global dynamic eno16777736
valid_lft 35850sec preferred_lft 35850sec
inet 192.168.31.5/32 scope global eno16777736
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe75:1a9c/64 scope link
valid_lft forever preferred_lft forever
[root@slave1 ~]# ipaddr show dev eno16777736
eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdiscpfifo_fast state UP qlen 1000
link/ether 00:0c:29:02:21:19 brdff:ff:ff:ff:ff:ff
inet 192.168.31.250/24 brd 192.168.31.255 scope global dynamic eno16777736
valid_lft 35719sec preferred_lft 35719sec
inet 192.168.31.4/32 scope global eno16777736
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe02:2119/64 scope link
valid_lft forever preferred_lft forever
[root@slave2 ~]# ipaddr show dev eno16777736
eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdiscpfifo_fast state UP qlen 1000
link/ether 00:0c:29:e2:c7:fa brdff:ff:ff:ff:ff:ff
inet 192.168.31.225/24 brd 192.168.31.255 scope global dynamic eno16777736
valid_lft 35930sec preferred_lft 35930sec
inet 192.168.31.3/32 scope global eno16777736
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fee2:c7fa/64 scope link
valid_lft forever preferred_lft forever
在master2,slave1,slave2主机上查看主mysql的指向
mysql> show slave statusG;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.31.83
Master_User: rep
Master_Port: 3306
Connect_Retry: 60

    4.1.2 释放MySQL-bundle整合包         

MMM高可用性测量试验:

[root@master1 ~]#tar xvf MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar
MySQL-shared-5.6.15-1.el6.x86_64.rpm              //共享库
MySQL-shared-compat-5.6.15-1.el6.x86_64.rpm      //兼容包
MySQL-server-5.6.15-1.el6.x86_64.rpm              //服务端程序
MySQL-client-5.6.15-1.el6.x86_64.rpm              //客户端程序
MySQL-devel-5.6.15-1.el6.x86_64.rpm              //库和头文件
MySQL-embedded-5.6.15-1.el6.x86_64.rpm          //嵌入式版本
MySQL-test-5.6.15-1.el6.x86_64.rpm              //测试包

服务器读写采有VIP地址举办读写,现身故障时VIP会漂移到其它节点,由其余节点提供劳动。
率先查看全体集群的情状,能够旁观整个集群状态正常
[root@monitor1 ~]# mmm_control show
master1(192.168.31.83) master/ONLINE. Roles: writer(192.168.31.2)
master2(192.168.31.141) master/ONLINE. Roles: reader(192.168.31.5)
slave1(192.168.31.250) slave/ONLINE. Roles: reader(192.168.31.4)
slave2(192.168.31.225) slave/ONLINE. Roles: reader(192.168.31.3)
效仿master1宕机,手动停止mysql服务,观望monitor日志,master1的日志如下:
[root@monitor1 ~]# tail -f /var/log/mysql-mmm/mmm_mond.log
2017/01/09 22:02:55 WARN Check 'rep_threads' on 'master1' is in unknown state! Message: UNKNOWN: Connect error (host = 192.168.31.83:3306, user = mmm_monitor)! Can't connect to MySQL server on '192.168.31.83' (111)
2017/01/09 22:02:55 WARN Check 'rep_backlog' on 'master1' is in unknown state! Message: UNKNOWN: Connect error (host = 192.168.31.83:3306, user = mmm_monitor)! Can't connect to MySQL server on '192.168.31.83' (111)
2017/01/09 22:03:05 ERROR Check 'mysql' on 'master1' has failed for 10 seconds! Message: ERROR: Connect error (host = 192.168.31.83:3306, user = mmm_monitor)! Can't connect to MySQL server on '192.168.31.83' (111)
2017/01/09 22:03:07 FATAL State of host 'master1' changed from ONLINE to HARD_OFFLINE (ping: OK, mysql: not OK)
2017/01/09 22:03:07 INFO Removing all roles from host 'master1':
2017/01/09 22:03:07 INFO Removed role 'writer(192.168.31.2)' from host 'master1'
2017/01/09 22:03:07 INFO Orphaned role 'writer(192.168.31.2)' has been assigned to 'master2'
查看集结的最新事态
[root@monitor1 ~]# mmm_control show
master1(192.168.31.83) master/HARD_OFFLINE. Roles:
master2(192.168.31.141) master/ONLINE. Roles: reader(192.168.31.5), writer(192.168.31.2)
slave1(192.168.31.250) slave/ONLINE. Roles: reader(192.168.31.4)
slave2(192.168.31.225) slave/ONLINE. Roles: reader(192.168.31.3)
从出示结果能够看到master1的动静有ONLINE转变为HAHighlanderD_OFFLINE,写VIP转移到了master2主机上。
反省有着的db服务器会集状态
[root@monitor1 ~]# mmm_control checks all
master1 ping [last change: 2017/01/09 21:31:47] OK
master1 mysql [last change: 2017/01/09 22:03:07] ERROR: Connect error (host = 192.168.31.83:3306, user = mmm_monitor)! Can't connect to MySQL server on '192.168.31.83' (111)
master1 rep_threads [last change: 2017/01/09 21:31:47] OK
master1 rep_backlog [last change: 2017/01/09 21:31:47] OK: Backlog is null
slave1 ping [last change: 2017/01/09 21:31:47] OK
slave1mysql [last change: 2017/01/09 21:31:47] OK
slave1 rep_threads [last change: 2017/01/09 21:31:47] OK
slave1 rep_backlog [last change: 2017/01/09 21:31:47] OK: Backlog is null
master2 ping [last change: 2017/01/09 21:31:47] OK
master2 mysql [last change: 2017/01/09 21:57:32] OK
master2 rep_threads [last change: 2017/01/09 21:31:47] OK
master2 rep_backlog [last change: 2017/01/09 21:31:47] OK: Backlog is null
slave2 ping [last change: 2017/01/09 21:31:47] OK
slave2mysql [last change: 2017/01/09 21:31:47] OK
slave2 rep_threads [last change: 2017/01/09 21:31:47] OK
slave2 rep_backlog [last change: 2017/01/09 21:31:47] OK: Backlog is null
从下边能够看看master1能ping通,表明只是劳务死掉了。

    4.1.3 安装MySQL数据库

查看master2主机的ip地址:

[root@master1]# rpm -Uvh MySQL-*.rpm

[root@master2 ~]# ipaddr show dev eno16777736
eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdiscpfifo_fast state UP qlen 1000
link/ether 00:0c:29:75:1a:9c brdff:ff:ff:ff:ff:ff
inet 192.168.31.141/24 brd 192.168.31.255 scope global dynamic eno16777736
valid_lft 35519sec preferred_lft 35519sec
inet 192.168.31.5/32 scope global eno16777736
valid_lft forever preferred_lft forever
inet 192.168.31.2/32 scope global eno16777736
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe75:1a9c/64 scope link
valid_lft forever preferred_lft forever
slave1主机:
mysql> show slave statusG;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.31.141
Master_User: rep
Master_Port: 3306
slave2主机:
mysql> show slave statusG;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.31.141
Master_User: rep
Master_Port: 3306
启航master1主机的mysql服务,观望monitor日志,master1的日记如下:
[root@monitor1 ~]# tail -f /var/log/mysql-mmm/mmm_mond.log
2017/01/09 22:16:56 INFO Check 'mysql' on 'master1' is ok!
2017/01/09 22:16:56 INFO Check 'rep_backlog' on 'master1' is ok!
2017/01/09 22:16:56 INFO Check 'rep_threads' on 'master1' is ok!
2017/01/09 22:16:59 FATAL State of host 'master1' changed from HARD_OFFLINE to AWAITING_RECOVERY
从地方能够看看master1的景色由hard_offline改变为awaiting_recovery状态
用如下命令将服务器上线:
[root@monitor1 ~]#mmm_controlset_onlinemaster1
查阅集结最新事态
[root@monitor1 ~]# mmm_control show
master1(192.168.31.83) master/ONLINE. Roles:
master2(192.168.31.141) master/ONLINE. Roles: reader(192.168.31.5), writer(192.168.31.2)
slave1(192.168.31.250) slave/ONLINE. Roles: reader(192.168.31.4)
slave2(192.168.31.225) slave/ONLINE. Roles: reader(192.168.31.3)
能够看看主库运维不会接管主,只到存活的主再一次宕机。
总结
(1)master2备选主节点宕机不影响集群的动静,正是移除了master2备选节点的读状态。
(2)master1主节点宕机,由master2备选主节点接管写剧中人物,slave1,slave2指向新master2主库进行复制,slave1,slave2会自动change master到master2.
(3)假若master1主库宕机,master2复制利用又落后于master1时就改为了主可写情形,那时候的数据主不可能有限协理风度翩翩致性。
若果master2,slave1,slave2延迟于master1主,这一个时master1宕机,slave1,slave2将会等待数据追上db1后,再重复指向新的主node2进行复制操作,当时的数码也不能够承保同步的大器晚成致性。
(4)要是应用MMM高可用框架结构,主,主备选节点机器配置同样,何况张开半联名进一层提升安全性或接纳MariaDB/mysql5.7张开八线程从复制,提升复制的属性。

    4.1.4 启动MySQL数据库

附:

[root@master1 ~]# service mysql start && chkconfig --list mysql
Starting MySQL SUCCESS! 
mysql              0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭

1、日志文件:
日记文件每每是深入分析错误的基本点,所以要长于利用日志文件进行难题浅析。
db端:/var/log/mysql-mmm/mmm_agentd.log
监控端:/var/log/mysql-mmm/mmm_mond.log
2、命令文件:
mmm_agentd:db代理进程的运行文件
mmm_mond:监察和控制进度的开发银行文件
mmm_backup:备份文件
mmm_restore:还原来的书文件
mmm_control:监察和控制操作命令文件
db服务器端独有mmm_agentd程序,其余的都以在monitor服务器端。
3、mmm_control用法
mmm_control程序可以用来监察和控制会集状态、切换writer、设置onlineoffline操作等。
Valid commands are:
help - show this message #扶植音讯
ping - ping monitor #ping当前的集结是或不是正规
show - show status #集结在线状态检查
checks [<host>|all [<check>|all]] - show checks status#实行督查操作
set_online<host> - set host <host> online #将host设置为online
set_offline<host> - set host <host> offline #将host设置为offline
mode - print current mode. #打字与印刷输出当前的mode
set_active - switch into active mode.

    4.1.5 MySQL密码

set_manual - switch into manual mode.
set_passive - switch into passive mode.
move_role [--force] <role><host> - move exclusive role <role> to host <host> #移除writer服务器为钦赐的host服务器(Only use --force if you know what you are doing!)
set_ip<ip><host> - set role with ip<ip> to host <host>
反省有着的db服务器集合状态:
[root@monitor1 ~]# mmm_control checks all
反省项满含:ping、mysql是不是正规运作、复制线程是不是正规等
反省集结意况在线境况:
[root@monitor1 ~]# mmm_control show
对点名的host推行offline操作:
[root@monitor1 ~]# mmm_controlset_offline slave2
对点名的host施行onine操作:
[root@monitor1 ~]# mmm_controlset_online slave2
施行write切换(手动切换):
查阅当前的slave对应的master
[root@slave2 ~]# mysql -uroot -p123456 -e 'show slave statusG;'
mysql: [Warning] Using a password on the command line interface can be insecure.
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.31.141
writer切换,要确保mmm_common.conf文件中的writer属性有安顿相应的host,不然无法切换
[root@monitor1 ~]# mmm_controlmove_role writer master1
OK: Role 'writer' has been moved from 'master2' to 'master1'. Now you can wait some time and check new roles info!
[root@monitor1 ~]# mmm_control show
master1(192.168.31.83) master/ONLINE. Roles: writer(192.168.31.2)
master2(192.168.31.141) master/ONLINE. Roles: reader(192.168.31.5)
slave1(192.168.31.250) slave/ONLINE. Roles: reader(192.168.31.4)
slave2(192.168.31.225) slave/ONLINE. Roles: reader(192.168.31.3)
save从库自动切换来了新的master
[root@slave2 ~]# mysql -uroot -p123456 -e 'show slave statusG;'
mysql: [Warning] Using a password on the command line interface can be insecure.
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.31.83

    在装置完后会自动生成在root目录下.mysql_secret文件内 查询后可应用此密码登入Mysql

4、此外管理难点

[root@master1 ~]# cat .mysql_secret 
# The random password set for the root user at Mon Jan  1 16:48:31 2001 (local time): kZ5j71cyZiKKhSeX          // 密码文件

假诺不想让writer从master切换来backup(包蕴基本的延时也会形成写VIP的切换卡塔 尔(阿拉伯语:قطر‎,那么能够在配置/etc/mysql-mmm/mmm_common.conf时,去掉<role write>中的backup
<role writer>#writer剧中人物配置
hosts master1 #此间只布署四个Hosts
ips 192.168.31.2#对外提供的写操作的虚构IP
mode exclusive #exclusive代表只允许存在五个主,约等于一定要提供三个写的IP
</role>
那样的话当master1出现故障了writer写操作不会切换来master2服务器,而且slave也不会针对新的master,那时当前的MMM从前对外提供写服务。

    4.1.6 登陆MySQL,并改过密码  使用刚查到的密码举行登入

5、总结

[root@master1 ~]# mysql -u root -p
Enter password:

mysql> SET PASSWORD FOR 'root'@'localhost'=PASSWORD('123456');    

1.对外提供读写的杜撰IP是由monitor程控。如若monitor未有运维那么db服务器不会被分配虚构ip,然则只要已经分配好了设想ip,当monitor程序关闭了本来分配的虚构ip不会及时关闭外界程序还足以三回九转访谈(只要不重启网络卡塔 尔(英语:State of Qatar),这样的平价正是对于monitor的可相信性必要就能低一些,可是只要这时候在这之中的某一个db服务器故障了就不能够管理切换,约等于原来的伪造ip如故保持不改变,挂掉的那台DB的伪造ip会变的不足访谈。

        

2.agent程序受monitor程序的操纵管理write切换,从库切换等操作。假若monitor进度关闭了那么agent进度就起不到哪边效能,它自身不能够管理故障。

              纠正后再一次登陆时不仅能应用新密码了。

3.monitor顺序担任督察db服务器的景况,包含Mysql数据库、服务器是不是运维、复制线程是或不是正规、主从延时等;它还用于调节agent程序管理故障。

              依照上述格局 将4台服务器均装好MySQL。

4.monitor会每间距几分钟监察和控制db服务器的景况,如若db服务器已经从故障产生了常规,那么monitor会自动在60s过后将其设置为online状态(私下认可是60s方可设为此外的值),有监控端的安插文件参数“auto_set_online”决定,群集服务器的景象有两种分别是:HA安德拉D_OFFLINE→AWAITING_RECOVERY→online
5.默认monitor会控制mmm_agent会将writer db服务器read_only修改为OFF,其它的db服务器read_only修改为ON,所以为了严厉能够在具备的服务器的my.cnf文件中参加read_only=1由monitor调控来支配writer和read,root客商和复制客商不受read_only参数的影响。

 

您恐怕感兴趣的文章:

  • 解析MySQL复制以致调优原理和艺术
  • Linux下MySQL数据库的主干同步复制配置
  • 详整Docker格局完毕MySql 主从复制(实施篇卡塔 尔(英语:State of Qatar)
  • Mysql中复制详细深入分析
  • MySQL5.7.18主从复制搭建(风流倜傥主风华正茂从)教程精解
  • Mysql5.7.18的安装与主从复制图像和文字精解
  • 详细解释MySQL落成主从复制进程
  • 行使pt-heartbeat监察和控制MySQL的复制延迟详整
  • 安详严整MySQL主从复制读写抽离搭建
  • 详细解释如何运用docker快捷营造MySQL主从复制情形
  • 简言之谈谈MySQL的半齐声复制
  • MySQL复制优点、原理详细明白

    4.2 布署双主多从协会

      1.数据库授权(4台数据库主机master1,master2,slave1,slave2实行以下操作卡塔尔

  陈设主从同步只须求授权三个大旨同步顾客就可以,可是我们要安顿MySQL-MMM架构,所以在此大家将MySQL-MMM所需顾客风度翩翩并展开授权设置。再授权多少个测验客户,在架设搭建完成时测量检验使用。

 mysql> grant   replication  slave  on  *.*  to  slaveuser@"%" identified by  "pwd123";
Query OK, 0 rows affected (0.01 sec)         //主从同步授权
mysql> grant  replication  client  on *.*  to  monitor@"%" identified by "monitor";  
Query OK, 0 rows affected (0.00 sec)       //MMM所需架构用户授权
mysql> grant  replication client,process,super   on *.*  to  agent@"%" identified by "agent"; 
Query OK, 0 rows affected (0.00 sec)         //MMM所需架构用户授权
mysql> grant  all  on *.*  to  root@"%" identified by "123456";
Query OK, 0 rows affected (0.00 sec)              //测试用户授权

      2.开启主数据库binlog日志、设置server_id(master1,master2)

        master1设置

[root@master1 ~]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
server_id=10                          //指定服务器ID
log_bin                               //启用binlog日志
log_slave_updates=1                  //启用链式复制
 [mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[root@master1 ~]# 
[root@master1 ~]# service mysql restart                //重启MySQL服务
Shutting down MySQL..                                      [确定]
Starting MySQL..                                           [确定]
[root@master1 ~]# ls /var/lib/mysql/master1-bin*        //查看binlog日志是否生成
/var/lib/mysql/master1-bin.000001  /var/lib/mysql/master1-bin.index

          master2设置:

[root@master2 mysql]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
server_id=11
log_slave_updates=1                 

log-bin
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[root@master2 mysql]# /etc/init.d/mysql restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL. SUCCESS! 
[root@master2 mysql]# ls /var/lib/mysql/master2-bin.*
/var/lib/mysql/master2-bin.000001  /var/lib/mysql/master2-bin.000002  /var/lib/mysql/master2-bin.index

 

      

从库设置serverid    

slave1设置

[root@slave1 mysql]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
server_id=12
…

 

[root@slave1 ~]# service mysql restart

 

slave2设置

[root@slave2 mysql]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
server_id=13
…

[root@slave2~]# service mysql restart

 

3.配置基本从从涉嫌

安顿master2、slave1、slave2成为master1的从服务器

查看master1的master状态 

mysql> show master statusG
*************************** 1. row ***************************
             File: master1-bin.000002
         Position: 120
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

遵照上边参数配置master2为master1的从服务器

mysql>    change  master  to                         
    ->      master_host="192.168.4.10",                
    ->      master_user="slaveuser",                
    ->      master_password="pwd123",               
    ->      master_log_file="master1-bin.000002",     
->      master_log_pos=120; 
Query OK, 0 rows affected, 2 warnings (0.01 sec)

mysql> start slave;    
Query OK, 0 rows affected (0.00 sec)

mysql> show slave statusG 
Slave_IO_Running: Yes                //IO节点正常
Slave_SQL_Running: Yes                //SQL节点正常

用平等的主意设置slave1甚至slave2为master1的从服务器

4.配置主主从从涉嫌,将master1配置为master2的从服务器

查看master2的master信息:

mysql> show master status G
*************************** 1. row ***************************
             File: master2-bin.000002
         Position: 120
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

安装master1成为master2的从服务器

mysql>    change  master  to                         
    ->      master_host="192.168.4.11",                
    ->      master_user="slaveuser",                
    ->      master_password="pwd123",               
    ->      master_log_file="master2-bin.000002",     
    ->      master_log_pos=120; 
Query OK, 0 rows affected, 2 warnings (0.01 sec)
mysql> start slave ;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status G
*************************** 1. row ***************************
             Slave_IO_Running: Yes      //IO节点正常
            Slave_SQL_Running: Yes      //SQL节点正常

5.测量检验主从架构是不是成功

 master1更新数据库,查看别的主机是还是不是成功 ,当有着主机分别在本机都能收看刚刚成立的数据库db1,则平常。

mysql> create database db1;
Query OK, 1 row affected (0.00 sec)
mysql>  show databases;
 -------------------- 
| Database           |
 -------------------- 
| information_schema  |
| db1                |
| mysql               |
| performance_schema |
| test                 |
 -------------------- 
5 rows in set (0.00 sec)

 

    至此,基本条件构建产生。

 

五.MySQL-MMM架构安排

  5.1 MMM集群方案

     使用第4章的架构,192.168.4.10、192.168.4.11看成MySQL双主服务器,192.168.4.12、192.168.4.13作为主服务器的从服务器,加多192.168.4.100看作MySQL-MMM架构中处理监察和控制服务器,实现监察和控制MySQL主从服务器的职业状态及调节故障节点的移除或苏醒专门的学业,架构搭建完毕后使用顾客机192.168.4.120進展访问,客商机必要安装MySQL-client软件包。拓扑见图2

澳门新浦京娱乐场网站 10

 

5.2 步骤

 完成此案例必要遵从如下步骤举办。

    步骤一:安装MySQL-MMM

1.设置信任关系(MySQL集群内5台服务器master1,master2,slave1,slave2,monitor卡塔尔均需安装

[root@master2 mysql]# yum -y install gcc* perl-Date-Manip  perl-Date-Manip  perl-Date-Manip perl-XML-DOM-XPath perl-XML-Parser perl-XML-RegExp rrdtool perl-Class-Singleton perl perl-DBD-MySQL perl-Params-Validate perl-MailTools perl-Time-HiRes perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker

 

 

2.装置MySQL-MMM软件依赖包(MySQL集群内5台服务器master1,master2,slave1,slave2,monitor卡塔尔国均需安装。

  1. 安装Log-Log4perl 类

    [root@master1 mysql-mmm]# rpm -ivh perl-Log-Log4perl-1.26-1.el6.rf.noarch.rpm
    warning: perl-Log-Log4perl-1.26-1.el6.rf.noarch.rpm: Header V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEY
    error: Failed dependencies:
    perl(Test::More) >= 0.45 is needed by perl-Log-Log4perl-1.26-1.el6.rf.noarch
    [root@master1 mysql-mmm]# rpm -ivh perl-Log-Log4perl-1.26-1.el6.rf.noarch.rpm           --force --nodeps
    

    自个儿在安装进度中报了错误突显nokey ,由于是设置了旧版本GPGkeys产生,扩大参数--force –nodeps强制安装即可跳过

  2. 安装Algorithm-Diff类

    [root@master1 mysql-mmm]# tar -zxvf Algorithm-Diff-1.1902.tar.gz
    Algorithm-Diff-1.1902/ Algorithm-Diff-1.1902/diffnew.pl Algorithm-Diff-1.1902/t/ Algorithm-Diff-1.1902/t/oo.t Algorithm-Diff-1.1902/t/base.t Algorithm-Diff-1.1902/htmldiff.pl Algorithm-Diff-1.1902/lib/ Algorithm-Diff-1.1902/lib/Algorithm/ Algorithm-Diff-1.1902/lib/Algorithm/Diff.pm Algorithm-Diff-1.1902/lib/Algorithm/DiffOld.pm Algorithm-Diff-1.1902/META.yml Algorithm-Diff-1.1902/Changes Algorithm-Diff-1.1902/cdiff.pl Algorithm-Diff-1.1902/MANIFEST Algorithm-Diff-1.1902/diff.pl Algorithm-Diff-1.1902/Makefile.PL Algorithm-Diff-1.1902/README [root@master1 mysql-mmm]# cd Algorithm-Diff-1.1902 [root@master1 Algorithm-Diff-1.1902]# perl Makefile.PL Checking if your kit is complete... Looks good Writing Makefile for Algorithm::Diff [root@master1 Algorithm-Diff-1.1902]# make && make install

3.安装Proc-Daemon类

root@master1 mysql-mmm]# tar -zxvf Proc-Daemon-0.03.tar.gz
Proc-Daemon-0.03/
Proc-Daemon-0.03/t/
Proc-Daemon-0.03/t/00modload.t
Proc-Daemon-0.03/t/01filecreate.t
Proc-Daemon-0.03/README
Proc-Daemon-0.03/Makefile.PL
Proc-Daemon-0.03/Daemon.pm
Proc-Daemon-0.03/Changes
Proc-Daemon-0.03/MANIFEST
[root@master1 mysql-mmm]# cd Proc-Daemon-0.03                
[root@master1 Proc-Daemon-0.03]# perl    Makefile.PL 
Checking if your kit is complete...
Looks good
Writing Makefile for Proc::Daemon
[root@master1 Proc-Daemon-0.03]# make && make install
cp Daemon.pm blib/lib/Proc/Daemon.pm
Manifying blib/man3/Proc::Daemon.3pm
Installing /usr/local/share/perl5/Proc/Daemon.pm
Installing /usr/local/share/man/man3/Proc::Daemon.3pm
Appending installation info to /usr/lib64/perl5/perllocal.pod
[root@master1 Proc-Daemon-0.03]#

 4.安装Net-ARP设想IP分配工具:

[root@mysql-master1 ~]# gunzip Net-ARP-1.0.8.tgz    
[root@mysql-master1 ~]# tar xvf Net-ARP-1.0.8.tar       
.. ..
[root@mysql-master1 ~]# cd Net-ARP-1.0.8                    
[root@mysql-master1 Net-ARP-1.0.8]# perl Makefile.PL        
Module Net::Pcap is required for make test!
Checking if your kit is complete...
Looks good
Writing Makefile for Net::ARP
[root@mysql-master1 Net-ARP-1.0.8]# make && make install    
.. ..
[root@mysql-master1 Net-ARP-1.0.8]# cd                        
[root@mysql-master1 ~]#

 5. 安装Mysql-MMM软件包:

[root@mysql-master1 ~]# tar xvf mysql-mmm-2.2.1.tar.gz       
.. ..
[root@mysql-master1 ~]# cd mysql-mmm-2.2.1                    
[root@mysql-master1 mysql-mmm-2.2.1]# make && make install    
.. ..
[root@mysql-master1 mysql-mmm-2.2.1]#

*  *

手续二:修改配置文件

  1. 改进公共配置文件

    本案例中MySQL集群的5台服务器(master1、master2、slave1、slave2、monitor卡塔尔国都急需配备,可以先配好风流浪漫台后使用scp复制。

root@master1 ~]# vim  /etc/mysql-mmm/mmm_common.conf 
active_master_role    writer
<host default>
    cluster_interface        eth0                //设置主从同步的用户
    pid_path                /var/run/mmm_agentd.pid
    bin_path                /usr/lib/mysql-mmm/
 replication_user        slaveuser            //设置主从同步的用户
 replication_password    pwd123            //设置主从同步用户密码
    agent_user            agent       //mmm-agent控制数据库用户
    agent_password        agent         //mmm-agent控制数据库用户密码
</host>
<host master1>                            //设置第一个主服务器
    ip                    192.168.4.10            //master1 IP 地址
    mode                    master
    peer                    master2        //指定另外一台主服务器
</host>
<host master2>                            //指定另外一台主服务器
    ip                    192.168.4.11
    mode                    master
    peer                    master1
</host>
<host slave1>                                //设置第一台从服务器
    ip                    192.168.4.12            //slave1 IP 地址
    mode                slave          //本段落配置的是slave服务器
</host>
<host slave2>
    ip                    192.168.4.13
    mode                    slave
</host>
<role writer>                              //设置写入服务器工作模式
    hosts                master1,master2        //提供写的主服务器
    ips                    192.168.4.200        //设置VIP地址
    mode                    exclusive            //排他模式
</role>
<role reader>                             //设置读取服务器工作模式
    hosts                slave1,slave2        //提供读的服务器信息
    ips                 192.168.4.201,192.168.4.202    //多个虚拟IP
    mode                    balanced                  //均衡模式
</role>

 

  2.修正管理主机配置文件(monitor主机配置卡塔尔

[root@monitor ~]# vim /etc/mysql-mmm/mmm_mon.conf 
include mmm_common.conf
<monitor>
    ip                        192.168.4.100        //设置管理主机IP地址
    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.4.10,192.168.4.11,192.168.4.12,192.168.4.13
                                                //设置被监控数据库
</monitor>
<host default>
    monitor_user            monitor        //监控数据库MySQL用户
    monitor_password        monitor        //监控数据库MySQL用户密码
</host>
debug 0
[root@monitor ~]#

 

  3.改造顾客端配置文件

   master1、master2、slave1、slave2,都要安插相应名称

root@master1 /]# cat /etc/mysql-mmm/mmm_agent.conf 
include mmm_common.conf
this master1
[root@master2 /]# cat /etc/mysql-mmm/mmm_agent.conf 
include mmm_common.conf
this master2
[root@slave2 /]# cat /etc/mysql-mmm/mmm_agent.conf 
include mmm_common.conf
this slave2
[root@slave2 /]# cat /etc/mysql-mmm/mmm_agent.conf 
include mmm_common.conf
this slave2    

 

六.MySQL-MMM架设使用

6.1.启动MySQL-MMM架构

  1.启动mmm-agent

  master1,master2,slave1,slave2均施行以下操作。

[root@master1 ~]# /etc/init.d/mysql-mmm-agent start
Daemon bin: '/usr/sbin/mmm_agentd'
Daemon pid: '/var/run/mmm_agentd.pid'
Starting MMM Agent daemon... Ok

  2.启动mmm-monitor

[root@moitor ~]#  /etc/init.d/mysql-mmm-monitor start
Daemon bin: '/usr/sbin/mmm_mond'
Daemon pid: '/var/run/mmm_mond.pid'
Starting MMM Monitor daemon: Ok

 

6.2 设置集群中服务器为online状态。

  调整命令只可以在处理端Monitor上运转。开用命令查看当前个服务器状态。  暗中认可全数服务器为waiting状态,如有卓殊,检查各服务器SELinux及iptabless

[root@localhost ~]# mmm_control show
  master1(192.168.4.10) master/AWAITING_RECOVERY. Roles: 
  master2(192.168.4.11) master/AWAITING_RECOVERY. Roles: 
  slave1(192.168.4.12) slave/ AWAITING_RECOVERY. Roles:   slave2(192.168.4.13) slave/AWAITING_RECOVERY. Roles: 

经过命令设置4台数据库主机为online

[root@monitor ~]# mmm_control set_online master1
OK: State of 'master1' changed to ONLINE. Now you can wait some time and check its new roles!
[root@monitor ~]# mmm_control set_online master2
OK: State of 'master2' changed to ONLINE. Now you can wait some time and check its new roles!
[root@monitor ~]# mmm_control set_online slave1
OK: State of 'slave1' changed to ONLINE. Now you can wait some time and check its new roles!
[root@monitor ~]# mmm_control set_online slave2
OK: State of 'slave2' changed to ONLINE. Now you can wait some time and check its new roles!
[root@monitor ~]#

再度翻开当前集群中各服务器状态

[root@monitor ~]# mmm_control show
  master1(192.168.4.10) master/ONLINE. Roles: writer(192.168.4.200)
  master2(192.168.4.11) master/ONLINE. Roles: 
  slave1(192.168.4.12) slave/ONLINE. Roles: reader(192.168.4.201)
  slave2(192.168.4.13) slave/ONLINE. Roles: reader(192.168.4.202)

通过情景,能够看来4台主机全都以online状态,写入服务器为master1,ip为设想ip192.168.4.200.从服务器为slave1,slave2.

6.3 测试MySQL-MMM架构

  顾客端安装MySQL-client

[root@client ~]# tar xvf MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar
.. ..
[root@client ~]# rpm -ivh MySQL-client-5.6.15-1.el6.x86_64.rpm

   MySQL-MMM设想IP访谈测验,同有的时候候可测量试验创立插入查看等效能。

[root@client /]#  mysql -h192.168.4.200 -uroot -p123456 -e "show databases"
Warning: Using a password on the command line interface can be insecure.
 -------------------- 
| Database           |
 -------------------- 
| information_schema |
| db1                |
| db2                |
| mysql              |
| performance_schema |
| test               |
 -------------------- 
[root@client /]# 

6.4 主数据库宕机测量检验

  大家能够以为将主数据库停用到达测量试验集群的目标。

    [root@master1 ~]# /etc/init.d/mysql stop
Shutting down MySQL.. SUCCESS! 
[root@master1 ~]# 

此刻大家查阅monitor日志能够观望详细的检查实验及切换进度。

017/10/24 01:37:07  WARN Check 'rep_backlog' on 'master1' is in unknown state! Message: UNKNOWN: Connect error (host = 192.168.4.10:3306, user = monitor)! Lost connection to MySQL server at 'reading initial communication packet', system error: 111
2017/10/24 01:37:07  WARN Check 'rep_threads' on 'master1' is in unknown state! Message: UNKNOWN: Connect error (host = 192.168.4.10:3306, user = monitor)! Lost connection to MySQL server at 'reading initial communication packet', system error: 111
2017/10/24 01:37:15 ERROR Check 'mysql' on 'master1' has failed for 10 seconds! Message: ERROR: Connect error (host = 192.168.4.10:3306, user = monitor)! Lost connection to MySQL server at 'reading initial communication packet', system error: 111
2017/10/24 01:37:16 FATAL State of host 'master1' changed from ONLINE to HARD_OFFLINE (ping: OK, mysql: not OK)
2017/10/24 01:37:16  INFO Removing all roles from host 'master1':
2017/10/24 01:37:16  INFO     Removed role 'writer(192.168.4.200)' from host 'master1'
2017/10/24 01:37:16  INFO Orphaned role 'writer(192.168.4.200)' has been assigned to 'master2'

在monitor上再度查看数据库服务器状态,可以开掘那时候master1已经为offline状态,写入服务器及设想ip192.168.4.200已经改造为master2

[root@monitor ~]# mmm_control show
  master1(192.168.4.10) master/HARD_OFFLINE. Roles: 
  master2(192.168.4.11) master/ONLINE. Roles: writer(192.168.4.200)
  slave1(192.168.4.12) slave/ONLINE. Roles: reader(192.168.4.201)
  slave2(192.168.4.13) slave/ONLINE. Roles: reader(192.168.4.202)

 查看slave1.slave2的的直属关系,主服务器以退换为master2

mysql> show slave status G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.4.11
                  Master_User: slaveuser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master2-bin.000002
          Read_Master_Log_Pos: 211
               Relay_Log_File: slave1-relay-bin.000002
                Relay_Log_Pos: 285
        Relay_Master_Log_File: master2-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

  

*注意服务器苏醒后由offline状态转变为waiting状态,但不会变为Online状态,需手动启用。*

 

 至此,大家的MySQL高可用集群已经布署落成。

 

7.简化版集群。

    上边大家早就配备完了5台服务器组成的MySQL集群,但据书上说各公司其真实情况况,或者访问量并无需如此多的服务器举行集群化。而基本服务器的款型又无法贯彻主备用之间的热备。上边作者将上例做了改换,使用3台服务器搭建集群。此例即无需太多服务器,又能实现数据库的热备份。

澳门新浦京娱乐场网站 11

 

 

我们今后要做的便是对monitor配置的退换,首先调度被监察和控制服务器IP,修改MMM主配置文件。

 [root@monitor ~]# cat /etc/mysql-mmm/mmm_mon.conf 
include mmm_common.conf
<monitor>
    ip                        192.168.4.100
    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.4.10,192.168.4.11  //此处是被监控服务器IP
</monitor>

<host default>
    monitor_user            monitor
    monitor_password        monitor
</host>

debug 0
[root@monitor ~]# 

下一场修改公共配置文件,注意master1,master2,monior保持意气风发致,都要修改。

[root@monitor ~]# cat /etc/mysql-mmm/mmm_common.conf
active_master_role    writer
<host default>
    cluster_interface        eth0

    pid_path                /var/run/mmm_agentd.pid
    bin_path                /usr/lib/mysql-mmm/

    replication_user        slaveuser
    replication_password    pwd123

    agent_user                agent
    agent_password            agent
</host>

<host master1>
    ip                      192.168.4.10
    mode                    master
    peer                    master2
</host>

<host master2>
    ip                    192.168.4.11
    mode                    master
    peer                    master1
</host>
<role writer>
    hosts                    master1,master2
    ips                192.168.4.200
    mode                    exclusive
</role>

<role reader>
    hosts                    master1,master2
    ips                                   192.168.4.201,192.168.4.202
    mode                    balanced
</role>
[root@monitor ~]# 

 

 

   配置完结后 ,此外配置与5台拓扑相像,启用master1和master2 的 mmm进程,在 monitor服务器启用online格局后 查看mmm状态 

 [root@monitor ~]# mmm_control show
  master1(192.168.4.10) master/ONLINE. Roles: reader(192.168.4.201), writer(192.168.4.200)
  master2(192.168.4.11) master/ONLINE. Roles: reader(192.168.4.202)

 

 可以看见master1和master2都负责读的办事,而master1又独自承受写的义务。上面测验将master1的数据库关闭看结果。

 [root@monitor ~]# mmm_control show
  master1(192.168.4.10) master/HARD_OFFLINE. Roles: 
  master2(192.168.4.11) master/ONLINE. Roles: reader(192.168.4.201), reader(192.168.4.202), writer(192.168.4.200)

能够见见 ,当关闭master1时,master2即负担读的做事又承受写的职业。客商平昔能够透过链接192.168.4.200进展数据库操作,完结了双击热备。

 

八.故障解析

考察中碰着了三遍难题 。列出仅供参照他事他说加以考察

问题1 

mysql> show slave status G
*************************** 1. row ***************************
…………..
             Slave_IO_Running: Connecting
            Slave_SQL_Running: Yes
 ………….
                Last_IO_Errno: 2003
                Last_IO_Error: error connecting to master 'slaveuser@192.168.4.10:3306' - retry-time: 60  retries: 2

1 row in set (0.00 sec)

闭馆matse selinux  清空防火墙 ,关闭防火墙后重启slave驱除。

 

 

问题2 

搭建进程中,数十次改观配置后 ,遭受如下错误

mysql>  start slave;

ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

此难题选用reset slave all清空全体的复制新闻,然后重新载入参数master.infor
start slave后复制平时。

*    *

      

 

 

本文由澳门新浦京娱乐场网站发布于数据库,转载请注明出处:MMM高可用方案,部署MySQL高可用集群