• ADADADADAD

    MySQL高可用群集------配置MMM高可用架构[ mysql数据库 ]

    mysql数据库 时间:2024-12-24 19:12:40

    作者:文/会员上传

    简介:

    MMM简介:MMM(Master-Master replication manager for Mysql,Mysql 主主复制管理器)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语言开发,主要用来监控和管理My

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    MMM简介:

    MMM(Master-Master replication manager for Mysql,Mysql 主主复制管理器)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语言开发,主要用来监控和管理Mysql Master-Master(双主)复制,虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选主上提供部分读服务,以加速在主主切换时备选主的预热,可以说MMM这套脚本程序一方面实现了故障切换的功能,另一方面其内部附加的工具脚本也可以实现多个Slave的read负载均衡。MMM是一套灵活的脚本程序,基于Perl实现,用来对mysql replication进行监控和故障转移并能管理Mysql Master-Master复制的配置

    MMM高可用架构的说明:

    1.mmm_mon:监控进程,负责所有的监控工作,决定和处理所有节点角色活动。此脚本需要在监管机上运行
    2.mmm_agent:运行在每个Mysql服务器上的代理进程,完成监控的探针工作和执行简单的远端服务设置。此脚本需要在各节点上运行
    3.mmm_control:一个简单的脚本,提供管理mmm_mond进程的命令
    4.mysql-mmm的监控端会提供多个虚拟IP(VIP),包括一个可写VIP,多个可读VIP,通过监管的管理,这些IP会绑定在可用的Mysql之上,当某一台Mysql宕机时,监控会将VIP迁移至其他Mysql
    在整个监管过程中,需要在Mysql中添加相关授权用户,以便让Mysql可以支持监理机的维护。授权的用户包括一个mmm_monitor和一个mmm_agent用户。

    实验案例环境部署:

    本实验使用五台服务器模拟搭建(CentOS7 操作系统 )
    主服务器master1 : ip:192.168.100.10 db1vip: 192.168.100.199
    主服务器master2:ip: 192.168.100.20 db2
    从服务器 slave1 : ip:192.168.100.30 db3vip: 192.168.100.33
    从服务器 slave2: ip: 192.168.100.40db4vip:192.168.100.44
    监控服务器 monitorip: 192.168.100.50


    实验的过程已整理好脚本如下:

    ----------master01/master02/slave01/slave02都需要安装mysql数据库-----
    配置ALI云源,然后安装epel-release源。 (四台主从服务器都需要装)
    systemctl stop firewalld.service
    setenforce 0
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    yum -y install epel-release//安装epel源
    yum clean all && yum makecache//清空所有,重新设置数据缓存


    ----------搭建本地yum源----------下面直接做-----------------
    yum -y install mariadb-server mariadb(四台主从服务器都需要装)
    systemctl stop firewalld.service
    setenforce 0
    systemctl start mariadb


    ----------修改ml主配置文件-----------(四台主从服务器都需要)-------------------------
    vi /etc/my.cnf(9dd删掉之前的内容)
    vi /etc/my.cnf(9dd删掉[mysqld]标签之前的内容,重新插入下面的配置)
    [mysqld]
    log_error=/var/lib/mysql/mysql.err//开启错误日志功能
    log=/var/lib/mysql/mysql_log.log//开启一般日志功能
    log_slow_queries=/var/lib/mysql_slow_queris.log//开启慢日志功能
    binlog-ignore-db=mysql,information_schema //不需要同步的数据库名称
    character_set_server=utf8//设置默认的字符集为utf-8
    log_bin=mysql_bin //开启二进制日志,用于主从数据复制
    server_id=1//每台server_id的值不能相同
    log_slave_updates=true //此数据库宕机,备用数据库接管
    sync_binlog=1
    auto_increment_increment=2 //字段一次递增2
    auto_increment_offset=1 //自增字段的起始值:1,3,5,7.........等奇数ID


    修改完后:
    systemctl stop firewalld.service
    setenforce 0
    systemctl start mariadb
    netstat -anpt | grep 3306


    -------------没有问题后,把配置文件复制到其他3台数据库服务器上并启动服务器----------
    一台一台配置 或:scp /etc/my.cnf root@192.168.100.10:/etc///此命令在文件源端服务器上执行
    注:第二台server_id=2 第三台11第四台22


    -------------配置主主复制----两台主服务器互相复制---------------------------------------
    show master status; //记录日志文件名称和位置,在两台主上查看。
    -----在m1上为m2授予从的权限,在m2上也要给m1授予从的权限----
    grant replication slave on . to 'replication' @'192.168.100.%' identified by '123456'; //两台主都执行,从不需要

    change master to master_host='192.168.100.20',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;
    注意:在m1上要指定m2上的日志文件名和位置参数。在m2上要反过来指定m1的。(注意其中要改的IP地址、文件名及偏移量)

    start slave; //开启同步功能
    show slave status\G;
    Slave_I0_Running: Yes
    Slave_SQL_Running: Yes


    ----------------在两台从上做------注意日志文件和位置参数的改变--------------
    注:两台从都需要指向其中的一台主服务器(这里指向m1)
    change master to master_host='192.168.100.10',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;

    start slave; //开启同步
    show slave status\G;//查看状态


    ---------------测试主从、主主、同步情况------------
    建立数据库然后测试同步情况


    ----------------安装MMM-----在所有服务器上安装--------注意,epel源要配置好
    yum -y install mysql-mmm*


    ----------------安装结束后 对mmm进行配置---------------------------------
    cd /etc/mysql-mmm/
    vim mmm_common.conf //所有主机上都要配置,直接复制多份
    <host default>
    cluster_interfaceens33
    .....
    replication_user replication
    replication_password123456
    agent_usermmm_agent
    agent_password 123456

    <host db1>
    ip192.168.100.10
    mode master
    peer db2
    </host>

    <host db2>
    ip192.168.100.20
    mode master
    peer db1
    </host>

    <host db3>
    ip192.168.100.30
    mode slave
    </host>

    <host db4>
    ip192.168.100.40
    mode slave
    </host>

    <role writer>
    hosts db1,db2
    ips192.168.100.199 //虚拟IP
    mode exclusive
    </role>

    <role reader>
    hostsdb3,db4
    ips 192.168.100.33, 192.168.100.44//虚拟IP
    modebalanced
    </role>

    远程复制 覆盖配置文件:
    scp mmm_common.conf root@192.168.100.20:/etc/mysql-mmm/
    scp mmm_common.conf root@192.168.100.30:/etc/mysql-mmm/
    scp mmm_common.conf root@192.168.100.40:/etc/mysql-mmm/
    vim /etc/mysql-mmm/mmm_common.conf 挨个查看一下


    -----------最后一台监控服务器也需要安装mmm--------(epel源先装好)------
    systemctl stop firewalld.service
    setenforce 0
    wget -0 /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    yum -y install epel-release
    yum clean all && yum makecache(可不执行)
    yum install -y mysql-mmm*
    scp mmm_common.conf root@192.168.100.50:/etc/mysql-mmm///在m1上执行


    --------------在monitor服务器上配置---------------------------------------
    cd /etc/mysql-mmm/
    vim mmm_mon.conf
    ping_ips 192.168.100.10,192.168.100.20,192.168.100.30,192.168.100.40//监视器监听的服务器地址
    auto_set_online 10//自动上线时间10秒
    <host default>
    monitor_usermmm_monitor
    monitor_password123456 //改密码
    </host>


    ---------------在所有数据库上为mmm_agent授权----------(进入数据库)-----------------
    grant super, replication client, process on . to 'mmm_agent'@'192.168.100.%' identified by '123456';


    ---------------在所有数据库上为mmm_moniter授权---------(进入数据库)------------------
    grant replication client on . to 'mmm_monitor'@'192.168.48.%' identified by '123456';

    flush privileges; //刷新


    ---------------修改所有数据库的mmm_agent.conf---------------------------------------------
    vim /etc/mysql-mmm/mmm_agent.conf
    this db1 //根据之前代理名称的规划进行逐一调整


    ----------------在所在数据库服务器上启动mysql-mmm-agent----------------------------------
    systemctl start mysql-mmm-agent.service
    systemctl enable mysql-mmm-agent.service//开机自启动


    ----------------在monitor服务器上配置----------------------------------------------------------
    cd /etc/mysql-mmm/
    vim mmm_mon.conf
    ..........
    ping_ips
    192.168.100.10,192.168.100.20,192.168.100.30,192.168.100.40 //数据库服务器地址

    auto_set_online10//自动上线时间10秒
    ........
    systemctl start mysql-mmm-monitor.service //启动监控服务mysql-mmm-montior

    mmm_control show //查看各节点的情况:
    db1(192.168.235.132) master/ONLINE. Roles:writer(192.168.100.199)
    db2(192.168.235.191) master/ONLINE. Roles:
    db3(192.168.235.177) slave/ONLINE. Roles:reader(192.168.100.33)
    db4(192.168.235.181) slave/ONLINE. Roles:reader(192.168.100.44)

    mmm_control checks all//需要各种OK
    mmm_control move_role writer db2//将虚拟IP200切换到db2服务器上

    service mariadb restart//监控机做客户端
    systemctl restart mysql-mmm-agent


    -----------------------故障测试-----------------------------------------------
    停止m1 确认 虚拟地址 200 是否移动到m2上。注意:主不会抢占。
    systemctl stop mariadb.service

    然后再监控服务器上 ,查看是否切换到m2上:mmm_control show


    可以把从服务器一台也关掉 试一下。注意:从会抢占

    在m1服务器上进数据库为监控机地址授权登录
    grant all on . to 'testdba'@'192.168.100.50' identified by '123456';
    flush privileges; //刷新

    按理来讲监控服务器只单独充当监控这一角色就行了,这里临时将它也作为客户端来配置一下:
    yum install -y mariadb-server mariadb


    ------------------在监控服务器上登录-------------------------------------------
    mysql -utestdba -p -h 192.168.100.199 //虚拟地址
    创建数据,测试同步情况

    脚本到此结束!本篇总结:

    .MySQL-MMM适用于数据的一致性要求不是很高,但是又想最大程度地保证业务可用性的场景。

    MySQL高可用群集------配置MMM高可用架构.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载