MySQL——MMM高可用

MySQL-MMM优缺点:

优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性。

缺点:Monitor节点是单点,可以结合Keepalived实现高可用。

实验环境:

master1服务器       192.168.13.167
master2服务器   192.168.13.151
slave1服务器        192.168.13.168
slave2服务器        192.168.13.145
monitor服务器   192.168.13.164

1、在master1\master2\slave1\slave2都需要安装MYSQL数据库

[[email protected] ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
##获取源地址
[[email protected] ~]# yum -y install epel-release  ##安装epel源
[[email protected] ~]# yum clean all && yum makecache  ##yum缓存清空
[[email protected] ~]# yum -y install mariadb-server mariadb   ##安装mariadb数据库
[[email protected] ~]# systemctl stop firewalld.service   ##关闭防火墙
[[email protected] ~]# setenforce 0
[[email protected] ~]# systemctl start mariadb.service    ##开启数据库

2、修改master1数据库配置文件(使用scp同步到其他数据库服务器上,monitor不需要)

[[email protected] ~]# 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  ##man日志
binlog-ignore-db=mysql,information_schema     ##二进制文件
character_set_server=utf8   ##字符集
log_bin=mysql_bin   ##二进制日志文件
server_id=11    ##服务id(不能相同)
log_slave_updates=true   ##允许从服务器更新
sync_binlog=1   ##同步日志
auto_increment_increment=2    ##自增列
auto_increment_offset=1           ##起始点
[[email protected] ~]# systemctl restart mariadb.service   ##重启数据库

使用scp复制数据库配置文件到其他服务器上的时候,需要修改server-id不能一样

[[email protected] ~]# scp /etc/my.cnf [email protected]:/etc/   (server-id=22)
[[email protected] ~]# scp /etc/my.cnf [email protected]:/etc/   (server-id=33)
[[email protected] ~]# scp /etc/my.cnf [email protected]:/etc/   (server-id=44)
[[email protected] ~]# netstat -anpt | grep 3306   ##查看端口3306
tcp      0   0 0.0.0.0:3306     0.0.0.0:*         LISTEN      4235/mysqld

3、配置主主复制(master1,master2)两台主服务器相互复制

//master1服务器//

[[email protected] ~]# mysql   ##进入数据库

MariaDB [(none)]> show master status;   ##查看主服务器的状态信息
+------------------+----------+--------------+--------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB         |
+------------------+----------+--------------+--------------------------+
| mysql_bin.000001 |      245 |              | mysql,information_schema |
+------------------+----------+--------------+--------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]> grant replication slave on *.* to ‘replication‘@‘192.168.13.%‘ identified by ‘123456‘;
##授权给13段的网段复制的权限用户名replication密码123456
Query OK, 0 rows affected (0.00 sec)

//master2服务器//

MariaDB [(none)]> change master to master_host=‘192.168.13.167‘,master_user=‘replication‘,master_password=‘123456‘,master_log_file=‘mysql_bin.000001‘,master_log_pos=245;
##在master2上同步master1服务器
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant replication slave on *.* to ‘replication‘@‘192.168.13.%‘ identified by ‘123456‘;
##在master2上授权复制权限
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show master status;   ##查看master2的服务器的状态信息
+------------------+----------+--------------+--------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB         |
+------------------+----------+--------------+--------------------------+
| mysql_bin.000001 |      410 |              | mysql,information_schema |
+------------------+----------+--------------+--------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]> flush privileges;   ##刷新权限
Query OK, 0 rows affected (0.00 sec)

//master1服务器//

MariaDB [(none)]> change master to master_host=‘192.168.13.151‘,master_user=‘replication‘,master_password=‘123456‘,master_log_file=‘mysql_bin.000001‘,master_log_pos=410;
##master1同步master2服务器数据库
Query OK, 0 rows affected (0.03 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

//master1,master2上开启同步//

MariaDB [(none)]> start slave;    ##开启同步
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show slave status\G;    ##查看同步状态信息
                         Slave_IO_Running: Yes
                        Slave_SQL_Running: Yes

4、在slave1,slave2做主从同步,注意日志文件和位置参数的改变

MariaDB [(none)]> change master to master_host=‘192.168.13.167‘,master_user=‘replication‘,master_password=‘123456‘,master_log_file=‘mysql_bin.000001‘,master_log_pos=245;
##在从服务器上同步master1主服务器
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;   ##刷新权限
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> start slave;    ##开启同步
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show slave status\G;    ##查看同步的状态信息
                             Slave_IO_Running: Yes
                            Slave_SQL_Running: Yes

5、测试主主,主从的同步状态

//主服务器master1//
MariaDB [(none)]> create database school;   ##创建数据库
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> show databases;   ##查看数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| school             |
| test               |
+--------------------+
5 rows in set (0.00 sec)

//从服务器上查看数据库//
MariaDB [(none)]> show databases;   ##实现主主,主从同步
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| school             |
| test               |
+--------------------+
5 rows in set (0.00 sec)

6、安装MMM,在所有服务器上安装,注意:epel源要配置好配置阿里云源,然后安装epel-release源。(monitor上需要先安装源,清空缓存,然后安装MMM)

##monitor服务器上
wget -O /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 -y install mysql-mmm*

##其余服务器都需要安装mmm
[[email protected] ~]# yum -y install mysql-mmm*

7、安装结束后,所有服务器上对mmm进行配置

[[email protected] ~]# vim /etc/mysql-mmm/mmm_common.conf   ##所有主机上都要配置,直接复制多份

……
<host default>
        cluster_interface       ens33    ##修改网卡
        …
        replication_user        replication   ##修改用户名
        replication_password    123456   ##密码
        agent_user              mmm_agent
        agent_password          123456     ##密码

<host db1>
        ip      192.168.13.167   ##master1地址
        mode    master
        peer    db2
</host>

<host db2>
        ip      192.168.13.151   ##master2地址
        mode    master
        peer    db1
</host>

<host db3>
        ip      192.168.13.168   ##slave1地址
        mode    slave
</host>

<host db4>
        ip      192.168.13.145   ##slave2地址
        mode    slave
</host>

<role writer>
        hosts   db1, db2      ##写服务器虚拟ip
        ips     192.168.13.250
        mode    exclusive
</role>

<role reader>
        hosts   db3, db4    ##读服务器虚拟ip
        ips     192.168.13.252, 192.168.13.251
        mode    balanced
</role>

##复制到其他的服务器中
[[email protected] ~]# scp /etc/mysql-mmm/mmm_common.conf [email protected]:/etc/mysql-mmm/
[email protected]‘s password:
mmm_common.conf                               100%  836   267.1KB/s   00:00
[[email protected] ~]# scp /etc/mysql-mmm/mmm_common.conf [email protected]:/etc/mysql-mmm/
[email protected]‘s password:
mmm_common.conf                               100%  836   863.2KB/s   00:00
[[email protected] ~]# scp /etc/mysql-mmm/mmm_common.conf [email protected]:/etc/mysql-mmm/
[email protected]‘s password:
mmm_common.conf                               100%  836   904.7KB/s   00:00
[[email protected] ~]# scp /etc/mysql-mmm/mmm_common.conf [email protected]:/etc/mysql-mmm/

8、在monitor服务器上配置

[[email protected] ~]# vim /etc/mysql-mmm/mmm_mon.conf
<host default>
        monitor_user        mmm_monitor
        monitor_password    123456    ##修改monitor的密码
</host>

9、在所有数据库上为mmm_agent代理授权,为mmm_monitor授权监控

MariaDB [(none)]> grant super, replication client, process on *.* to ‘mmm_agent‘@‘192.168.13.%‘ identified by ‘123456‘;
##授权代理
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant replication client on *.* to ‘mmm_monitor‘@‘192.168.13.%‘ identified by ‘123456‘;
##授权监控
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;   ##刷新权限
Query OK, 0 rows affected (0.00 sec)

10、修改所有数据库的mmm_agent.conf

[[email protected] ~]# vim /etc/mysql-mmm/mmm_agent.conf
this db1 //根据规划进行逐一调整
[[email protected] ~]# vim /etc/mysql-mmm/mmm_agent.conf
this db2 //根据规划进行逐一调整
[[email protected] ~]# vim /etc/mysql-mmm/mmm_agent.conf
this db3 //根据规划进行逐一调整
[[email protected] ~]# vim /etc/mysql-mmm/mmm_agent.conf
this db4 //根据规划进行逐一调整
##所有数据库开启
[[email protected] ~]systemctl start mysql-mmm-agent.service   ##开启代理服务
[[email protected] ~]systemctl enable mysql-mmm-agent.service  ##加入开机自启动

11、在monitor上配置

[[email protected] ~]# vim /etc/mysql-mmm/mmm_mon.conf
<monitor>
        ip                  127.0.0.1
        pid_path            /run/mysql-mmm-monitor.pid
        bin_path            /usr/libexec/mysql-mmm
        status_path         /var/lib/mysql-mmm/mmm_mond.status
        ping_ips            192.168.13.167,192.168.13.151,192.168.13.168,192.168.13.
145
        ##所有数据库服务器地址
        auto_set_online     10    ##自动在线时间
[[email protected] ~]# systemctl stop firewalld.service    ##关闭防火墙
[[email protected] ~]# setenforce 0
[[email protected] ~]# systemctl start mysql-mmm-monitor.service    ##开启监控服务
[[email protected] ~]# mmm_control show   ##查看主从的飘逸地址
    db1(192.168.13.167) master/ONLINE. Roles: writer(192.168.13.250)
    db2(192.168.13.151) master/ONLINE. Roles:
    db3(192.168.13.168) slave/ONLINE. Roles: reader(192.168.13.252)
    db4(192.168.13.145) slave/ONLINE. Roles: reader(192.168.13.251)

12、测试漂移地址

[[email protected] ~]# systemctl stop mariadb.service  ##模拟停止master1服务器
//monitor服务器上查看//
[[email protected] ~]# mmm_control show
    db1(192.168.13.167) master/HARD_OFFLINE. Roles:
    db2(192.168.13.151) master/ONLINE. Roles: writer(192.168.13.250)
    db3(192.168.13.168) slave/ONLINE. Roles: reader(192.168.13.252)
    db4(192.168.13.145) slave/ONLINE. Roles: reader(192.168.13.251)
(重启master1数据库服务,虚拟地址不会被抢占到master1)
mmm_control checks all //需要各种OK
mmm_control move_role writer db1  ##可以切换虚拟地址

13、在monitor上安装MySQL作为测试机用虚拟ip登录数据库

[[email protected] ~]# yum install mysql -y

//master1服务器上授权monitor地址访问//

MariaDB [(none)]> grant all on *.* to ‘testdba‘@‘192.168.13.164‘ identified by ‘123456‘;
##授权monitor地址访问
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> flush privileges;   ##刷新权限
Query OK, 0 rows affected (0.00 sec)

[[email protected] ~]# mysql -utestdba -p -h 192.168.13.250   ##使用虚拟地址即可登录数据库
Enter password: 

MariaDB [(none)]> 

原文地址:https://blog.51cto.com/14475876/2460277

时间: 2024-10-30 22:44:57

MySQL——MMM高可用的相关文章

Mysql MMM 高可用

一.Mysql MMM 高可用概况: mmm_mond  负责所有的监控工作的监控守护进程,决定节点的移除等: mmm_agentd  运行在mysql服务器上的代理守护进程,通过简单远程服务集提供给监控节点: mmm_control  命令行管理mmm_mond进程: Monitor:192.168.209.18 DB1:192.168.209.19 DB2:192.168.209.20 DB3:192.168.209.21   virtual write ip:192.168.209.4 v

MySQL——mmm高可用(实践!)

MySQL-MMM优缺点: 优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性. 缺点:Monitor节点是单点,可以结合Keepalived实现高可用. MySQL-MMM工作原理:  MMM(Master-Master replication managerfor Mysql,Mysql主主复制管理器)是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master

MySQL—MMM高可用群集的搭建(全过程,纯干货~~)

本篇文章主要介绍搭建MMM方案以及MMM架构的原理.MMM方案不适用对数据一致性要求很高的业务.下面一起来学习学习. 先来看看具体的架构拓扑,如下: 其中, 角色 Hosts IP地址 应用属性 VIP master1 master 192.168.142.135 write 192.168.142.188 master2 backup 192.168.142.132 write|read 192.168.142.188 slave1 slave 192.168.142.136 read 192

MySQL mmm 高可用配置

10.10.10.20:监控端 10.10.10.21:主 10.10.10.22:主 10.10.10.23:从 10.10.10.24:从 yum -y install mysql mysql-server service mysqld start yum -y install mysql-mmm* useradd --comment "MMM Script owner" --shell /sbin/nologin mmmd yum -y install perl-Time-HiR

mysql mmm高可用架构设计

项目概述:搭建主从,双主,安装Perl模块  安装配置mmm软件  测试 硬件环境:4台虚拟PC 软件环境:rehl6.5 MySQL-5.6.26 percona-xtrabackup-2.3.4 mysql-mmm-2.2.1 实施步骤: 搭建主从,双主: 1.搭建4台主机与数据库:m1 m2 slave deve 2.修改m1 m2 slave参数文件 [mysqld]basedir=/usr/local/mysqldatadir=/usr/local/mysql/dataport=330

CentOS 搭建 Mysql MMM 高可用架构

环境 CentOS Mysql 5.1 前提 安装了EPEL,详细安装步骤请參照 http://blog.csdn.net/robinsonmhj/article/details/36184863 机器列表 机器IP 机器名 192.168.0.135 db1 192.168.0.136 monitor 192.168.0.137 db2 虚拟IP 作用 192.168.0.138 writter 192.168.0.139 reader 192.168.0.140 reader 安装步骤 1.

MMM高可用MySQL服务集群解决方案

MMM高可用方案简介 MMM(Master-Master Replication Manager for MySQL)主主复制管理器,是一套提供了MySQL主主复制配置的监控.故障迁移和管理的可伸缩的脚本程序.在MMM高可用解决方案中,可以配置双主多从架构,通过MySQL Replication技术可以实现两台MySQL服务器互为主从,并且在任何时候只有一个节点可以写入,避免多节点写入的数据冲突,同时,当可写节点故障时,MMM套件可以立即监控到,然后将服务自动切换到另一个主节点继续提供服务,从而

mysql之MMM高可用方案简介

MMM(Master-Master Replication Manager for MySQL) MySQL主主复制管理器,提供了MySQL主主复制配置的监控.故障转移和管理的一套可伸缩的脚本套件.在MMM高可用解决方案中,典型的应用是双主多从架构,通过MySQL replication技术可以实现两台服务器互为主从,且在任何时候只有一个节点可以写入,避免多点写入的数据冲突.同时,当可写的主节点故障时,MMM套件可以立刻监控到,然后将服务自动切换到另一个主节点,继续提供服务,从而实现MySQL的

mysql的MMM高可用方案

1    MMM高可用mysql方案 1.1  方案简介 MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器)关于mysql主主复制配置的监控.故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),这个套件也能对居于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟ip,除此之外,它还有实现数据备份.节点之间重新同步功能的脚本.MySQL本身没有提供replic