Mysql-mmm兼Keepalived高可用性mysql底层架构

一、架构图

二、配置步骤

所需软件

  • Mysql-5.6.20
  • mysql-mmm-agent-2.2.1
  • mysql-mmm-2.2.1
  • mysql-mmm-monitor-2.2.1
  • keepalived-1.2.13

安装步骤

1.四台机器安装mysql数据库(可直接yum安装或者编译安装)

2.设置主从关系


function


IP


Server Name


server id


monitor


192.168.1.234


-


-


monitor


192.168.1.241


master


192.168.1.242


db1


1


master


192.168.1.240


db2


2


slave


192.168.1.237


db3


3


slave


192.168.1.238


db4


4

使用mysql-mmm时一共需要三个用户:

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

GRANT REPLICATION CLIENT ON *.* TO ‘mmm_monitor‘@‘192.168.1.%‘ IDENTIFIED  BY ‘RepMonitor‘;
GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO ‘mmm_agent‘@‘192.168.1.%‘ IDENTIFIED BY ‘RepAgent‘; 
grant replication slave on *.* to [email protected]‘192.168.1.%‘ identified by ‘replication‘;

分别查看两个mysql master的状态:

show master status\G

然后使用如下语句

change master to master_host=‘192.168.1.242‘, master_user=‘replication‘, master_password=‘replication‘, master_log_file=‘mysql-bin.000005‘, master_log_pos=1857;

来切换从库到主库的同步状态,当两个主库相互设置好了之后,设置两个从库,可以在两个主库中任意选择一个当做自己的同步主库。都设置好了之后,使用命令start slave;命令来开启从库状态,在同步之前,注意防火墙的设置。然后在四台mysql服务器上使用命令show slave status\G来查看是否同步成功,Slave_IO_Running: Yes、Slave_SQL_Running: Yes,如果这两个参数显示yes,表示从库同步设置成功。

3.安装mysql-mmm

在管理服务器(192.168.1.234和192.168.1.241)上分别安装

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

在四台mysql服务器上分别安装

yum -y install mysql-mmm-agent*

4.设置mysql-mmm

a).

vi /etc/mysql-mmm/mmm_common.conf

配置文件如下,6台服务器的此文件到要一样,可以先做好一份,直接复制就ok了

##################################################
active_master_role      writer
 
<host default>
    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          RepAgent
</host>
 
<host db1>
    ip      192.168.1.242
    mode    master
    peer    db2
</host>
 
<host db2>
    ip      192.168.1.240
    mode    master
    peer    db1
</host>
 
<host db3>
    ip      192.168.1.237
    mode    slave
</host>
 
<host db4>
    ip      192.168.1.238
    mode    slave
</host>
 
<role writer>
    hosts   db1, db2
    ips     192.168.1.243
    mode    exclusive
</role>
 
<role reader>
    hosts   db1, db2, db3, db4
    ips     192.168.1.244, 192.168.1.245, 192.168.1.246, 192.168.1.247
    mode    balanced
</role>
###################################################################

b). 设置mmm_agent配置文件(在4台mysql服务器上面设置),

vi /etc/mysql-mmm/mmm_agent.conf

配置文件如下,主要修改this dbx,根据mmm_common.conf的内容指定到底是db几。

######################################################
include mmm_common.conf
 
# The ‘this‘ variable refers to this server.  Proper operation requires
# that ‘this‘ server (db1 by default), as well as all other servers, have the
# proper IP addresses set in mmm_common.conf.
this db1
 
#########################################################################

c). 设置两台monitor的配置文件,

vi /etc/mysql-mmm/mmm_mon.conf

配置文件如下,

################################################################
include mmm_common.conf
 
<monitor>
    ip                  192.168.1.234  #这个ip设置monitor自己服务器的ip
    pid_path            /var/run/mysql-mmm/mmm_mond.pid
    bin_path            /usr/libexec/mysql-mmm
    status_path         /var/lib/mysql-mmm/mmm_mond.status
    ping_ips            192.168.1.242, 192.168.1.240, 192.168.1.237, 192.168.1.238
    auto_set_online     60
 
    # 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
    monitor_password    RepMonitor
</host>
 
debug 0
#######################################################################

d). 分别启动mmm_agent和mmm_monitor,

(启动客户端)

/etc/init.d/mysql-mmm-agent start

(启动服务器监控端)

/etc/init.d/mysql-mmm-monitor start

e). 查看mysql-mmm是否起作用,在monitor端使用命令,

mmm_control show
  db1(192.168.1.242) master/ONLINE. Roles: reader(192.168.1.244)
  db2(192.168.1.240) master/ONLINE. Roles: reader(192.168.1.246), writer(192.168.1.243)
  db3(192.168.1.237) slave/ONLINE. Roles: reader(192.168.1.245)
  db4(192.168.1.238) slave/ONLINE. Roles: reader(192.168.1.247)

如果显示如此表示正常。

5.安装设置keepalived

分别在192.168.1.234和192.168.1.241上面安装keepalived,可用yum直接安装

分别设置配置文件,配置如下

vi /etc/keepalived/keepalived.conf

192.168.1.234的配置文件为:

###############################################################
! Configuration File for keepalived
 
global_defs {
#   notification_email {
#     [email protected]
#     [email protected]
#     [email protected]
#   }
#   notification_email_from [email protected]
#   smtp_server 192.168.200.1
#   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
 
vrrp_script chk_down {
  #script "netstat -apn | grep mmm_mond;if [[ $? -eq 1 ]];then exit 1;else exit 0;fi "
  script "netstat -apn | grep mmm_mond"
        interval 2
        weight -30
        fall 3
        rise 1
}
 
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 52
#    nopreempt
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.249/24 dev eth0 label eth0:1
    }
    track_interface {
        eth0
    }
    track_script {
        chk_down
    }
    debug
    notify_master "/etc/keepalived/mmm_restart.sh"
    notify_backup "/etc/keepalived/mmm_stop.sh"
#    notify_fault "/etc/keepalived/mmm_stop.sh"
 
}
 
################################################################

192.168.1.241的配置文件为:

##################################################################
 
 
! Configuration File for keepalived
 
global_defs {
#   notification_email {
#     [email protected]
#     [email protected]
#     [email protected]
#   }
#   notification_email_from [email protected]
#   smtp_server 192.168.200.1
#   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
 
vrrp_script chk_down {
  #script "netstat -apn | grep mmm_mond;if [[ $? -eq 1 ]];then exit 1;else exit 0;fi "
  script "netstat -apn | grep mmm_mond"
        interval 2
        weight -10
        fall 3
        rise 1
}
 
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 52
#    nopreempt
    priority 85
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.249/24 dev eth0 label eth0:1
    }
    track_interface {
        eth0
    }
    track_script {
        chk_down
    }
    debug
    notify_master "/etc/keepalived/mmm_restart.sh"
    notify_backup "/etc/keepalived/mmm_stop.sh"
#    notify_fault "/etc/keepalived/mmm_stop.sh"
 
}
 
############################################################

/etc/keepalived/mmm_restart.sh内容为:

#!/bin/bash
 
service mysql-mmm-monitor start

############################################################

/etc/keepalived/mmm_stop.sh内容为:

#!/bin/bash
 
service mysql-mmm-monitor stop

分别启动keepalived,命令为

/etc/init.d/keepalived start

到此所有配置结束。

三、重点说明

  1. Mysql-mmm使用了虚拟ip的概念,故安装mmm_common.conf的配置,mysql提供对外写的虚拟ip为192.168.1.243,提供对外读的虚拟ip为192.168.1.244, 192.168.1.245, 192.168.1.246, 192.168.1.247,请程序段合理利用。
  2. 此架构的好处是,主库有两个,任意一个主库down掉,另外一台主库都能够及时对接,这样mysql数据写入形成冗余高可用性,而且当一台主库挂掉后,mmm架构也会及时的修改从库的同步主库ip,会及时的自动化修改从库的同步ip到正常工作的主库对应的ip中去。这样主从同步就不会出问题,保持主从数据的正确性,而且利用了虚拟ip的概念,提供读写分离功能。
  3. 此架构的一个缺点就是monitor端只有一个,此为单点,后期考虑到冗余性,所以加上了keepalived,这样当一台monitor端挂掉后,利用keepalived的高可用性和failover特性,可以成功的启动另外一台备用机器上的monitor,达到冗余效果。
时间: 2024-10-29 19:10:52

Mysql-mmm兼Keepalived高可用性mysql底层架构的相关文章

mysql mmm架构看不到vip地址

自己搭建好mysql mmm(Master-Master Replication Manager)高可用架构后看不到vip地址,经过在网上找了大量的文章和自己平时的观察终于发现找出vip地址的方法了,现在分享给大家. 1.在mmm监控服务器查看各节点的状态 [[email protected] bin]# mmm_control  show  db2(192.168.56.105) master/ONLINE. Roles: writer(192.168.56.100)  node1(192.1

CENTOS6.6下mysql MMM架构搭建

本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序.MMM使用Perl语言开发,主要用来监控和管理MySQL Master-Master(双主)复制,虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选主上提供部分读服务,以加速在主主切换时刻备选主的预热,可

MySQL 主主复制 + LVS + Keepalived 实现 MySQL 高可用性

MySQL复制能够保证数据的冗余的同时可以做读写分离来分担系统压力,如果是主主复制还可以很好的避免主节点的单点故障.但是MySQL主主复制存在一些问题无法满足我们的实际需要:未提供统一访问入口来实现负载均衡,如果其中master宕掉的话需要手动切换到另外一个master,而不能自动进行切换. 这篇文章下面要介绍如何通过LVS+Keepalived的方式来是实现MySQL的高可用性,同时解决以上问题. Keepalived和LVS介绍 Keepalived是一个基于VRRP(虚拟路由冗余协议)可用

MySQL主主复制+LVS+Keepalived实现MySQL高可用性

MySQL主主复制+LVS+Keepalived实现MySQL高可用性 MySQL复制能够保证数据的冗余的同时可以做读写分离来分担系统压力,如果是主主复制还可以很好的避免主节点的单点故障.但是MySQL主主复制存在一些问题无法满足我们的实际需要:未提供统一访问入口来实现负载均衡,如果其中master宕掉的话需要手动切换到另外一个master,而不能自动进行切换. 这篇文章下面要介绍如何通过LVS+Keepalived的方式来是实现MySQL的高可用性,同时解决以上问题. Keepalived和L

整个MHA+keepalived+lvs+mysql高可用架构配置说明

整个MHA+keepalived+lvs+mysql高可用架构配置说明1.1. 环境简介1.1.1.vmvare虚拟机,系统版本CentOS7.5 x86_64位最小化安装,mysql的版本5.7.21,1.1.2.虚拟机器的ssh端口均为默认22,1.1.3.虚拟机的iptables全部关闭,1.1.4.虚拟机的selinux全部关闭,1.1.5.虚拟机服务器时间全部一致 ntpdate 0.asia.pool.ntp.org1.1.6.3台机器的ssh端口为22**1.2.此次试验采用的是3

mysql学习-mysql8.0配置双主复制+keepalived实现高可用架构

一般小型公司数据库,使用主从复制即可保证数据库的高可用,但是一旦主数据库故障,切换到从库需要一定的时间,这样就导致了停机时间过长,不能及时恢复业务.使用双主(master)配合keepalived这种mysql高可用架构也是基于主从复制的原理而搭建的.这是一种简单.便捷的解决方案,在高可用集群环境中,keepalived使用vip,利用keepalived自带的服务监控功能和自定义脚本来实现mysql故障时自动切换. 1.mysql双主复制介绍 双主复制,就是相互做主从复制,每个master既是

keepalived实现mysql双主架构

5 keepalived实现mysql双主架构 5.1 架构介绍 企业级Mysql集群具备高可用.可扩展.以管理.低成本的特点.下面将介绍企业环境中经常应用的一个解决方案,即Mysql的双主互备架构,主要设计思想是通过Mysql复制技术将两台Mysql服务器互相将对方作为自己的主服务器,自己又同时作为对方的从服务器来进行复制.这样就实现了高可用架构中的数据同步功能,同时,将采用keepalived来实现mysql的自动故障切换.在这个架构中,虽然两台Mysql服务器互为主从,但同一时刻只有一个M

Mysql互为主从+keepalived实现高可用性(1)

1)规则: 1) db-51    192.168.4.51  Mysql 5.7 2) db-52 192.168.4.52 Mysql 5.7 vip: 192.168.4.50 2)创建Mysql互为主从: 1.在192.168.4.51 (db-51)安装Mysql,创建同步复制用户(用于192.168.4.52(db-52)主机同步数据) 1 [[email protected]51 ~]#tar -xf mysql-5.7.17.tar -C mysql 2 [[email prot

mysql高可用+keepalived

生产环境中一台mysql主机存在单点故障,所以我们要确保mysql的高可用性,即俩台mysql服务器如果其中有一台mysql服务器挂掉后,另外一台就能立刻接替进行工作. MYSQL的高可用方案一般有 Keepalived+双主,MHA,PXC,MMM,Heartbeat+DRBD等 比较常用的是keepalived+双主MHA和PXC 这次主要介绍利用keepalived实现MYSQL数据库的高可用. 基本思路:俩台MYSQL互为主从关系(双主),通过keepalived配置配置虚拟IP,实现当