• ADADADADAD

    MariaDB-MMM高可用群集[ mysql数据库 ]

    mysql数据库 时间:2024-12-25 09:58:15

    作者:文/会员上传

    简介:

    什么是MMM?MMM(MySQL主主复制管理器)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语言开发,主要用来监控和管理MySQL Master-Master(双主)复制,虽然叫做双主复

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

    什么是MMM?

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

    MMM提供了自动和手动两种方式移除一组服务器中复制延迟较高的服务器的虚拟IP,同时它还可以备份数据,实现两节点之间的数据同步等。由于MMM无法完全保证数据的一致性,所以MMM适用于对数据的一致性要求不是很高,但是又想最大程度地保证业务可用性的场景。对于那些数据一致性要求很高的业务,非常不建议采用MMM这种高可用架构。

    MMM是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理MySQL Master-Master复制的配置。

    关于MMM高可用架构的说明如下

    mmm_mon:监控进程,负责所有的监控工作,决定和处理所有节点角色活动。此脚本需要在监管机上面运行mmm_agent:运行在每个MySQL服务器上的代理进程,完成监控的探针工作和执行简单的远端服务设置。此脚本需要在监管机上面运行mmm_control:一个简单的脚本,提供mmm_mond进程的命令mysql_mmm的监管端会提供多个虚拟IP(VIP),包括一个可写VIP,多个可读VIP,通过监管的管理。这些IP会绑定在可用MySQL之上,当某一台MySQL宕机时,监管会将VIP迁移至其他MySQL。
    在整个监管过程中,需要在MySQL中添加相关授权用户,以便让MySQL可以支持监理机的维护。授权的用户包括一个mmm_monitor用户和一个mmm_agent用户,如果想使用MMM的备份工具则还要添加一个mmm_tools用户。
    什么是MariaDB数据库?

    MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎。

    项目环境

    本次项目使用五台centos7服务器模拟搭建

    主机操作系统IP地址VIP主要软件MariaDB-m1 主服务器CentOS-7-x86_64172.16.10.23172.16.10.100MariaDB、MMMMariaDB-m2 主服务器CentOS-7-x86_64172.16.10.20172.16.10.100MariaDB、MMMMariaDB-m3 从服务器CentOS-7-x86_64172.16.10.24172.16.10.110MariaDB、MMMMariaDB-m4 从服务器CentOS-7-x86_64172.16.10.22172.16.10.120MariaDB、MMMMariaDB-monitorCentOS-7-x86_64172.16.10.21MMM搭建MariaDB多主多从模式安装MariaDB配置ALI云源,安装epel-release源
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repoyum -y install epel-releaseyum clean all && yum makecache //清空所有,重新更新元数据缓存

    配置epel源须在五台服务器上都操作

    安装mariadb
    yum -y install mariadb-server mariadb
    关闭防火墙及selinux防火墙
    systemctl disable firewalld.servicesystemctl stop firewalld.servicesetenforce 0

    以上三个步骤在另外三台数据库服务器上一摸一样,重复三遍

    配置mariadb配置文件
    vim /etc/my.cnf[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//mysql,information_schema这两个数据库不生成二进制日志文件character_set_server=utf8log_bin=mysql_bin//二进制日志文件功能开启server_id=10 //id每台都不相同log_slave_updates=true //开启同步sync_binlog=1//1为安全值auto_increment_increment=2auto_increment_offset=1
    开启服务
    systemctl start mariadb//开启服务netstat -anpt | grep 3306//查看服务状态

    配置文件修改时,只需将原有的[mysqld]直接删除,大约九行。替换为以上内容,四台服务器(MariaDB-m1、MariaDB-m2、MariaDB-m3、MariaDB-m4)的修改方法基本一致,唯一的不同是server_id不可相同,只要不同即可。

    配置MariaDB-m1、MariaDB-m2主主模式先查看log bin日志和pos值的位置
    在MariaDB-m1、MariaDB-m2中分别进行操作
    mysql //登陆数据库show master status;

    MariaDB-m1、MariaDB-m2互相提升访问权限
    在两台主服务器上分别执行
    #MariaDB-m1grant replication slave on *.* to 'replication'@'172.16.10.%' identified by '123456';//使用账户为replication 密码为123456change master to master_host='172.16.10.20',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;//当在MariaDB-m1上执行时,master_host地址为MariaDB-m2地址···#MariaDB-m2grant replication slave on *.* to 'replication'@'172.16.10.%' identified by '123456';//在两台master上分别执行,slave不需要执行change master to master_host='172.16.10.23',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;//当在MariaDB-m2上执行时,master_host地址为MariaDB-m1地址
    开启同步,同时查看服务器的主从状态
    Slave_IO_Running: Yes、Slave_SQL_Running: Yes这两个条目的结果,必须为yes
    start slave;show slave status\G;

    测试主主同步是否成功

    在主服务器上创建一个库,然后查看从服务器上是否有新创建的库,若新创建库存在;则再尝试在从服务器上删除新创建的库,若是此时主服务器上的库被成功删除,则表示主主复制创建成功。

    配置MariaDB-m3、MariaDB-m4作为MariaDB-m1的从服务器

    在MariaDB-m3、MariaDB-m4上进行操作

    查看MariaDB-m1上log bin日志和pos值的位置
    mysqlshow master status;

    注意日志文件和位置参数的改变

    在MariaDB-m3、MariaDB-m4上分别执行
    change master to master_host='172.16.10.23',master_user='replication',master_password='123456',master_log_file='mysql_bin.000004',master_log_pos=245;
    分别查看MariaDB-m3、MariaDB-m4上主从状态
    start slave;show slave status\G;

    安装配置MMM安装MMM

    我们在最开始的操作中已经对所有的五台服务器都安装了epel源,所以这里只需要使用yum安装即可,所有的服务器都需安装mysql-mmm*

    yum -y install mysql-mmm*
    配置MMM

    五台服务器中的该配置文件都是相同的

    vim /etc/mysql-mmm/mmm_common.confactive_master_rolewriter<host default>cluster_interface ens33pid_path/run/mysql-mmm-agent.pidbin_path/usr/libexec/mysql-mmm/replication_userreplicationreplication_password123456agent_usermmm_agentagent_password123456</host><host db1>ip172.16.10.23modemasterpeerdb2</host><host db2>ip172.16.10.20modemasterpeerdb1</host><host db3>ip172.16.10.24modeslave</host><host db4>ip172.16.10.22modeslave</host><role writer>hosts db1, db2ips 172.16.10.100modeexclusive</role><role reader>hosts db3, db4ips 172.16.10.110, 172.16.10.120modebalanced</role></host><host db4>ip172.16.10.22modeslave</host><role writer>hosts db1, db2ips 172.16.10.100modeexclusive</role><role reader>hosts db3, db4ips 172.16.10.110, 172.16.10.120modebalanced</role>
    快速为其他服务器修改配置文件
    scp /etc/mysql-mmm/mmm_common.conf root@172.16.10.20:/etc/mysql-mmm/scp /etc/mysql-mmm/mmm_common.conf root@172.16.10.24:/etc/mysql-mmm/scp /etc/mysql-mmm/mmm_common.conf root@172.16.10.22:/etc/mysql-mmm/scp /etc/mysql-mmm/mmm_common.conf root@172.16.10.21:/etc/mysql-mmm/
    在数据库主机上修改/etc/mysql-mmm/mmm_agent.conf文件,根据不同主机,修改不同的名称
    vim /etc/mysql-mmm/mmm_agent.confthis db1//按着顺序分别修改为db1、db2、db3、db4
    对所有数据库服务器进行一波安排在所有数据库上为mmm_agent授权
    grant super, replication client, process on *.* to 'mmm_agent'@'172.16.10.%' identified by '123456';
    在所有数据库上为mmm_moniter授权
    grant replication client on *.* to 'mmm_monitor'@'172.16.10.%' identified by '123456';
    重新加载权限表
    flush privileges;
    在所有数据库服务器上启动mysql-mmm-agent
    systemctl start mysql-mmm-agent.service//开启服务systemctl enable mysql-mmm-agent.service //加入开机自启动
    配置监控主机在监控主机(MariaDB-monitor)上修改/etc/mysql-mmm/mmm_mon.conf文件
    vim /etc/mysql-mmm/mmm_mon.confinclude mmm_common.conf<monitor>ip127.0.0.1pid_path/run/mysql-mmm-monitor.pidbin_path/usr/libexec/mysql-mmmstatus_path /var/lib/mysql-mmm/mmm_mond.statusping_ips172.16.10.23,172.16.10.20,172.16.10.24,172.16.10.22auto_set_online 10# 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_usermmm_monitormonitor_password123456</host>debug 0
    关闭防火墙及selinux防火墙
    systemctl disable firewalld.servicesystemctl stop firewalld.servicesetenforce 0
    启动服务,查看各节点状态
    systemctl start mysql-mmm-monitor.service


    ERROR: Can't connect to monitor daemon!,如若出现报错,可尝试重启服务解决

    查看监控服务器对所有数据库的监控是否完善
    mmm_control checks all//检查结果需为全部ok
    故障测试停止m1,查看VIP是否为漂移到m2上
    systemctl stop mariadb.service //关闭m1
    systemctl start mariadb.service//开启m1 主不会抢占
    停止m3,查看VIP漂移状态
    systemctl stop mariadb.service //关闭m3
    systemctl start mariadb.service //开启m3,VIP会重新回到各自服务器上
    MariaDB-MMM高可用群集.docx

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

    推荐度:

    下载