Linux下Master-Master Replication Manager for MySQL 双主故障切换

这篇具有很好参考价值的文章主要介绍了Linux下Master-Master Replication Manager for MySQL 双主故障切换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简述:

Master-Master Replication Manager for MySQL(MMRM)是一种用于MySQL数据库的主-主复制管理工具。它允许在多个MySQL主机之间建立双向的主-主复制关系,实现数据的同步和高可用性。

工作原理是通过在每个MySQL主机上配置双向复制,使得每个主机都可以同时作为主服务器和从服务器。当一个主机上的数据发生变化时,它会将这些变化同步到其他主机上,从而实现数据的同步。

MMRM提供了一套简单而强大的命令行工具和API,用于管理和监控复制关系。它可以自动检测和修复复制中的错误,并提供了故障转移和自动切换的功能,以确保系统的高可用性。 对于MMRM的部署,通常需要至少两台主机来实现主-主复制。每台主机都需要安装MySQL数据库,并配置为主服务器和从服务器。可以根据实际需求,增加更多的主机来实现更高的可用性和负载均衡。

总之,MMRM是一个可靠的工具,可以帮助管理和维护MySQL数据库的主-主复制关系,提供数据同步和高可用性的解决方案。

环境五台主机

关闭防火墙和规则

[root@ddd1 ~]# systemctl stop firewalld
[root@ddd1 ~]#  setenforce 0
[root@ddd1 ~]# iptables -F

Linux下Master-Master Replication Manager for MySQL 双主故障切换

 最后一台先忽略

 前四台操作

 1 2 3 4安装数据库   yum -y install mariadb mariadb-server

修改数据库配置文件

ddd1和ddd2 前两台为主 只需要更改1 2   1是主 2是备主

[root@ddd1 ~]# vim /etc/my.cnf

[mysqld]


log-bin=mysql-bin
log-slave-updates=true
server-id=1     #另一台master设置为2
relay-log=relay-log-bin
relay-log-index=relay-log-bin.index

ddd3和ddd4   后两台为从  只需要更改3 4

[root@ddd3 ~]# vim /etc/my.cnf

[mysqld]

server-id=3     #另一台slave设置为4
relay-log=relay-log-bin
relay-log-index=relay-log-bin.index

选择ddd1和ddd2做互为主从

 查看日志   show master status

互相授权用户  ddd1授权ddd2    grant replication slave on *.* to 'replication'@'192.168.1.117' identified by '123456';

ddd2授权ddd1     grant replication slave on *.* to 'replication'@'192.168.1.117' identified by '123456';

共同关闭从           stop slave;

指定主服务信息

 ddd1 操作    CHANGE MASTER TO  MASTER_HOST='192.168.1.117', MASTER_USER='replication',  MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000003',  MASTER_LOG_POS=245;

 ddd2操作    CHANGE MASTER TO  MASTER_HOST='192.168.1.129', MASTER_USER='replication',  MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000003',  MASTER_LOG_POS=245;

共同开启从          start slave;

共同查看状态       show slave status\G

 看到两个yes就是成功

[root@ddd2 ~]# systemctl stop firewalld
[root@ddd2 ~]#  setenforce 0
[root@ddd2 ~]# iptables -F
[root@ddd2 ~]# vim /etc/my.cnf
[root@ddd2 ~]# systemctl restart mariadb
[root@ddd2 ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>  show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |      245 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

MariaDB [(none)]>  grant replication slave on *.* to 'replication'@'192.168.1.129' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [(none)]> CHANGE MASTER TO  MASTER_HOST='192.168.1.129', MASTER_USER='replication',  MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000003',  MASTER_LOG_POS=245;
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]>  START SLAVE;
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.129
                  Master_User: replication
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000003
          Read_Master_Log_Pos: 567
               Relay_Log_File: relay-log-bin.000002
                Relay_Log_Pos: 690
        Relay_Master_Log_File: mysql-bin.000003
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 

把其他两个从ddd3和4设置为主ddd1的从

主操作  给它们两个权限就行了

MariaDB [(none)]> grant replication slave on *.* to 'replication'@'192.168.1.15' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant replication slave on *.* to 'replication'@'192.168.1.126' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

两个从操作    添加主库信息  开启从服务    查看两个yes

MariaDB [(none)]> CHANGE MASTER TO  MASTER_HOST='192.168.1.129', MASTER_USER='replication',  MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000003',  MASTER_LOG_POS=245;
添加主信息
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> START SLAVE;       开启从
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> show slave status\G       查看
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.129
                  Master_User: replication
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000003
          Read_Master_Log_Pos: 727
               Relay_Log_File: relay-log-bin.000002
                Relay_Log_Pos: 1011
        Relay_Master_Log_File: mysql-bin.000003
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

 1到4主机安装     yum -y install mysql-mmm*

安装MySQL Multi-Master Replication Manager (MMM)软件包。MMM是一个用于管理MySQL数据库的高可用性和复制的工具。

 所有主机修改配置文件  示例 一个搞定直接可以scp到其他机上

[root@ddd1 ~]#  vim /etc/mysql-mmm/mmm_common.conf

active_master_role      writer

<host default>
    cluster_interface       ens33     网卡
    pid_path                /run/mysql-mmm-agent.pid
    bin_path                /usr/libexec/mysql-mmm/
    replication_user        replication     复制用户
    replication_password    123456          复制用户密码
    agent_user              mmm_agent       管理用户
    agent_password          123456          管理用户密码
</host>

<host db1>  主
    ip      192.168.1.129    IP
    mode    master           角色
    peer    db2              监控谁  db2
</host>

<host db2>  主
    ip      192.168.1.117    IP
    mode    master           角色
    peer    db1              监控谁  db1
</host>

<host db3>  从
    ip      192.168.1.15     IP
    mode    slave
</host>

<host db4>  从
    ip      192.168.1.126    IP
    mode    slave
</host>


<role writer> 写入的
    hosts   db1, db2
    ips     192.168.1.148    VIP  可以在指主时使用
    mode    exclusive        独断IP
</role>

<role reader>
    hosts   db3, db4
    ips     192.168.1.128, 192.168.1.122  可以时rip也可以时vip   vip的话用在amoeba,更加安全,在次实验中无作用
    mode    balanced         方式
</role>

所有服务器修改角色   和配置文件里对应上  vim /etc/mysql-mmm/mmm_agent.conf

上面什么端口对db几 比如192.168.1.126对应this db4

Linux下Master-Master Replication Manager for MySQL 双主故障切换

配置监控机

到了第五台机发挥的时候了安装     yum -y install mysql-mmm*

打开

修改监控主机配置文件

vim /etc/mysql-mmm/mmm_mon.conf 

ping_ips后面跟上所有服务器的真实ip
<host default>
    monitor_user        mmm_agent  授权账户和密码 管理用户
    monitor_password    123456       密码
</host>

[root@localhost ~]# vim /etc/mysql-mmm/mmm_mon.conf 

include mmm_common.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.1.129,192.168.1.117,192.168.1.15,192.168.1.126
    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_agent   
    monitor_password    123456
</host>

debug 0

所有数据库启动mysql agent代理服务    systemctl start mysql-mmm-agent

第五台机   启动监控

[root@localhost ~]#  systemctl start mysql-mmm-agent
[root@localhost ~]# systemctl start mysql-mmm-monitor

查看状态 需要等一会 反应慢

[root@localhost ~]#  mmm_control show
  db1(192.168.1.129) master/ONLINE. Roles: writer(192.168.1.148)
  db2(192.168.1.117) master/ONLINE. Roles: 
  db3(192.168.1.15) slave/ONLINE. Roles: reader(192.168.1.128)
  db4(192.168.1.126) slave/ONLINE. Roles: reader(192.168.1.122)

查看监控状态 mmm_control checks all

[root@localhost ~]# mmm_control checks all
db4  ping         [last change: 2023/06/30 20:39:41]  OK
db4  mysql        [last change: 2023/06/30 20:39:41]  OK
db4  rep_threads  [last change: 2023/06/30 20:39:41]  OK
db4  rep_backlog  [last change: 2023/06/30 20:39:41]  OK: Backlog is null
db2  ping         [last change: 2023/06/30 20:39:41]  OK
db2  mysql        [last change: 2023/06/30 20:39:41]  OK
db2  rep_threads  [last change: 2023/06/30 20:39:41]  OK
db2  rep_backlog  [last change: 2023/06/30 20:39:41]  OK: Backlog is null
db3  ping         [last change: 2023/06/30 20:39:41]  OK
db3  mysql        [last change: 2023/06/30 20:39:41]  OK
db3  rep_threads  [last change: 2023/06/30 20:39:41]  OK
db3  rep_backlog  [last change: 2023/06/30 20:39:41]  OK: Backlog is null
db1  ping         [last change: 2023/06/30 20:39:41]  OK
db1  mysql        [last change: 2023/06/30 20:39:41]  OK
db1  rep_threads  [last change: 2023/06/30 20:39:41]  OK
db1  rep_backlog  [last change: 2023/06/30 20:39:41]  OK: Backlog is null

实验停止第一个主服务器    

[root@ddd1~]# systemctl stop mariadb

查看监控状态   也就是第五台查看 自动转换到备主了

[root@localhost ~]#  mmm_control show
  db1(192.168.1.129) master/HARD_OFFLINE. Roles: 
  db2(192.168.1.117) master/ONLINE. Roles: writer(192.168.1.148)
  db3(192.168.1.15) slave/ONLINE. Roles: reader(192.168.1.128)
  db4(192.168.1.126) slave/ONLINE. Roles: reader(192.168.1.122)

备主创建数据

MariaDB [(none)]> create database dfssd;
Query OK, 1 row affected (0.01 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| dfssd              |
| mysql              |
| performance_schema |
| test               |
+--------------------+

从查看 不会同步的

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

开启原来主库 

[root@ddd1 ~]# systemctl restart mariadb

查看      直接同步过来了

[root@ddd1 ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 7
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| dfssd              |
| mysql              |
| performance_schema |
| test               |
+--------------------+

但是现在主不会切换 只有现在备主 宕机才会切换回去

[root@ddd2~]#  systemctl stop mysql

查看

[root@localhost ~]#  mmm_control show
  db1(192.168.1.129) master/ONLINE. Roles: writer(192.168.1.199)
  db2(192.168.1.139) master/ONLINE. Roles:
  db3(192.168.1.126) slave/ONLINE. Roles: reader(192.168.1.25)
  db4(192.168.1.117) slave/ONLINE. Roles: reader(192.168.1.232)

再见朋友文章来源地址https://www.toymoban.com/news/detail-513093.html

到了这里,关于Linux下Master-Master Replication Manager for MySQL 双主故障切换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL 双主配置

    最少两台MySQL服务器: 192.168.152.130 192.168.152.132 两台MySQL服务器双方Ping通,且3306端口telnet互通。 部署环境: centos7.8 mysql5.7.31 1、在 130 上配置,打开配置文件,并写入如下配置: vi /etc/my.cnf 2、在 132 上配置,打开配置文件,并写入如下配置: 修改完成后,重启两台MySQL服务

    2024年02月14日
    浏览(30)
  • MySQL双主架构、主从架构

    MySQL官方说法:         单表2000万数据就达到瓶颈了。所以为了保证查询效率,要让每张表的大小得到控制。 主数据库都负责增删改查。 比如有1000W的数据,有两个主数据库,就将数据分流给两个主数据库,两个主数据库之间增删改再做数据同步,查询自由进行。 实现方式

    2024年02月11日
    浏览(41)
  • MYSQL双主节点–更换ip

    一、更换双主节点ip 1.停止mysql服务 2.修改网卡配置信息 注: ens33 是网卡名称,可能网卡不叫 ens33 3.修改ip配置 4.重启network服务 二、重做MySQL双主集群 1.启动mysql 2.重做双主集群 如果忘记slave账号则重新创建 master1获取连接参数 master1切换主服务器为master2 MASTER_HOST=‘主服务器

    2024年01月23日
    浏览(37)
  • mysql 集群实验~~双主双从搭建

    四台mysql服务器 两台主 两台从 主:master1 192.168.137.101 主2:master2 192.168.137.102 从1:slave1 192.168.137.103 从2: slave2 192.168.137.104 将两个master的mysqld服务进行重启 (1)修改slave1配置文件 (2)修改slave2配置文件 可以看出我们的两个从slave1和slave2也配置完成了,现在就进入最后的配

    2024年02月10日
    浏览(37)
  • MySQL 8.0 Reference Manual(读书笔记90节--Replication)

    1. The following options also have an impact on the source: • For the greatest possible durability and consistency in a replication setup using InnoDB with transactions, you should use  innodb_flush_log_at_trx_commit=1 and sync_binlog=1 in the source\\\'s my.cnf file. • Ensure that the skip_networking system variable is not enabled on the source. If networ

    2024年04月26日
    浏览(31)
  • MySQL运维16-双主双从读写分离

    在MySQL多主多从的架构配置中和双主双从是一样的,学会了双主双从的架构部署,多主多从的配置也同样就回了。下面以双主双从作为示例演示。其中一个主机maste1用于处理所有写请求,它的从机slave1和另外一台主机master2还有它的从机salve2负责所有读数据请求,当master1主机宕

    2024年02月04日
    浏览(47)
  • MySQL - 读写分离、一主一从、双主双从

    读写分离 ,简单地说是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,这样能有效地减轻单台数据库的压力。 MyCat实现读写分离的话,主要通过两个组件来实现: ​ readHost、writeHost 读写分离它的前提是基于主从复制 主

    2024年02月07日
    浏览(38)
  • Mysql8高可用之双主+keepalived

    利用keepalived实现Mysql数据库的高可用,Keepalived+Mysql双主来实现MYSQL-HA,我们必须保证两台Mysql数据库的数据完全一致,实现方法是两台Mysql互为主从关系,通过keepalived配置VIP,实现当其中的一台Mysql数据库宕机后,应用能够自动切换到另外一台Mysql数据库上去,保证系统的高可

    2024年02月07日
    浏览(33)
  • mysql双主互从通过KeepAlived虚拟IP实现高可用

    在mysql 双主互从的基础上, 架构图: Keepalived有两个主要的功能: 提供虚拟IP,实现双机热备 通过LVS,实现负载均衡 修改 keepalived 配置文件 keepalived.conf 检测xxx.sh check_mysql_port.sh 安装killall 命令 安装netstat 修改脚本xxx.sh权限 keepalived.conf 启动keepalived master slave 停止容器,使v

    2024年02月07日
    浏览(39)
  • Linux-安装redis6.2.1及主备复制模式(replication)

    地址==》https://redis.io/download/ 例:/data/replication/ 目录redis-6.2.1修改为7000-master 再copy一份为从节点备份,文件夹命名为7001-slave 分别进入文件夹7000-master和7001-slave,执行命令 编译后,会在/data/replication/7000-master/src/和目录/data/replication/7001-slave/src/下生成执行文件,如下 修改主节

    2024年02月10日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包