返回顶部
首页 > 资讯 > 数据库 >在线修改主从复制选项
  • 162
分享到

在线修改主从复制选项

2024-04-02 19:04:59 162人浏览 独家记忆
摘要

前言:  Mysql最常用的架构就是主从复制了,其实主从复制有很多选项,特别是在从库端,我们可以设置复制过滤,比如说忽略某张表或某个库。这些过滤选项都是可以在线修改而不用重启的。原来对这块了解不多,最近看了

前言: 

Mysql最常用的架构就是主从复制了,其实主从复制有很多选项,特别是在从库端,我们可以设置复制过滤,比如说忽略某张表或某个库。这些过滤选项都是可以在线修改而不用重启的。原来对这块了解不多,最近看了下相关资料,个人觉得这个功能还是很方便的,本篇文章会将这块内容分享给大家。

1.复制过滤参数介绍

首先我们要了解设置复制过滤的不同参数。复制过滤是在从库端设置的,可以只复制某些库或某些表,也可以忽略复制某些库或某些表。这些都是由不同参数控制的,下面简单介绍下不同参数的作用。

  • REPLICATE_DO_DB:指定只同步某个库的数据
  • REPLICATE_IGNORE_DB:忽略某个库的同步
  • REPLICATE_DO_TABLE:指定同步某个表
  • REPLICATE_IGNORE_TABLE:忽略某个表的同步
  • REPLICATE_WILD_DO_TABLE:指定同步某些表,可以用通配符
  • REPLICATE_WILD_IGNORE_TABLE:忽略某些表的同步,可以用通配符
  • REPLICATE_REWRITE_DB:从库端替换库名

这些复制过滤参数还是很好理解的,只看名字就能大概了解该参数的作用。默认情况下,这些参数是都没有设置的,开启主从复制后从库端会默认同步全部从主库发来的数据。

2.修改复制过滤选项

当我们想临时调整从库的复制策略时,可以设置上述参数。我们可以将过滤参数写入配置文件然后重启从库即可应用,但这种方法需要重启实例,不做推荐。mysql5.7版本可以进行在线设置复制过滤了。但是还是得停复制,不过不用重启实例了,方便进行临时性的调整。主要用到的是CHANGE REPLICATioN FILTER语句,下面就简单的测试一下:

# 默认未设置复制过滤
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.0.3.16
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: binlog.000004
          Read_Master_Log_Pos: 35198
               Relay_Log_File: relay-bin.000002
                Relay_Log_Pos: 910
        Relay_Master_Log_File: binlog.000004
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 35198

 # 设置忽略db1库的复制
 mysql> STOP SLAVE SQL_THREAD;
Query OK, 0 rows affected (0.00 sec)

mysql> CHANGE REPLICATION FILTER REPLICATE_IGNORE_DB = (db1);
Query OK, 0 rows affected (0.00 sec)

mysql> START SLAVE SQL_THREAD;
Query OK, 0 rows affected (0.01 sec)

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.0.3.16
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: binlog.000004
          Read_Master_Log_Pos: 35198
               Relay_Log_File: relay-bin.000002
                Relay_Log_Pos: 910
        Relay_Master_Log_File: binlog.000004
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: db1
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 35198

# 主库创建db1测试从库是否同步
mysql> CREATE DATABASE `db1` DEFAULT CHARACTER SET utf8;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| infORMation_schema |
| db1                |
| mysql              |
| performance_schema |
| sys                |
| testdb             |
+--------------------+
6 rows in set (0.00 sec)
# 查看从库状态
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| testdb             |
+--------------------+
5 rows in set (0.00 sec)

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.0.3.16
                  Master_User: repl
                  Master_Port: 33061
                Connect_Retry: 60
              Master_Log_File: binlog.000004
          Read_Master_Log_Pos: 35383
               Relay_Log_File: relay-bin.000002
                Relay_Log_Pos: 1095
        Relay_Master_Log_File: binlog.000004
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: db1
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 35383

# 取消复制过滤参数
mysql> STOP SLAVE SQL_THREAD;
Query OK, 0 rows affected (0.01 sec)

mysql> CHANGE REPLICATION FILTER REPLICATE_IGNORE_DB = ();
Query OK, 0 rows affected (0.00 sec)

mysql> START SLAVE SQL_THREAD;
Query OK, 0 rows affected (0.01 sec)

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.0.3.16
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: binlog.000004
          Read_Master_Log_Pos: 35383
               Relay_Log_File: relay-bin.000002
                Relay_Log_Pos: 1095
        Relay_Master_Log_File: binlog.000004
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 35383

上面我们简单演示了下使用CHANGE REPLICATION FILTER语句在线修改复制过滤选项的方法,列举的那些过滤参数都可以使用该语句修改,不过要注意有些选项是互斥的。应该按照实际需求去设置合适的参数,下面给出官方文档中的示范语法:

CHANGE REPLICATION FILTER filter[, filter][, ...]

filter:
    REPLICATE_DO_DB = (db_list)
  | REPLICATE_IGNORE_DB = (db_list)
  | REPLICATE_DO_TABLE = (tbl_list)
  | REPLICATE_IGNORE_TABLE = (tbl_list)
  | REPLICATE_WILD_DO_TABLE = (wild_tbl_list)
  | REPLICATE_WILD_IGNORE_TABLE = (wild_tbl_list)
  | REPLICATE_REWRITE_DB = (db_pair_list)

db_list:
    db_name[, db_name][, ...]

tbl_list:
    db_name.table_name[, db_table_name][, ...]
wild_tbl_list:
    'db_pattern.table_pattern'[, 'db_pattern.table_pattern'][, ...]

db_pair_list:
    (db_pair)[, (db_pair)][, ...]

db_pair:
    from_db, to_db

总结: 

本篇文章介绍了如何在线更改复制过滤选项的方法,不同的过滤参数有不同的用途,如果你确实有需求要设置过滤参数,建议一定要进行全面测试,某些参数设置后可能影响到其他库表的复制。如果想永久生效,可以在线修改后再加入配置文件内,这样从库重启后还是生效的。

您可能感兴趣的文档:

--结束END--

本文标题: 在线修改主从复制选项

本文链接: https://lsjlt.com/news/48266.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 在线修改主从复制选项
    前言:  MySQL最常用的架构就是主从复制了,其实主从复制有很多选项,特别是在从库端,我们可以设置复制过滤,比如说忽略某张表或某个库。这些过滤选项都是可以在线修改而不用重启的。原来对这块了解不多,最近看了...
    99+
    2024-04-02
  • mysql如何在线修改主从复制选项
    前言: MySQL最常用的架构就是主从复制了,其实主从复制有很多选项,特别是在从库端,我们可以设置复制过滤,比如说忽略某张表或某个库。这些过滤选项都是可以在线修改而不用重启的。原来对这块了解不多,最近看了下相关资料...
    99+
    2022-05-31
    mysql 主从复制 mysql 修改主从复制
  • 在线更改复制过滤选项的方法
    如何在线更改复制过滤选项?针对这个问题,今天小编总结这篇有关修改复制过滤的文章,希望能帮助更多想解决这个问题的朋友找到更加简单易行的办法。前言: MySQL最常用的架构就是主从复制了,其实主从复制...
    99+
    2024-04-02
  • MySQL主从复制断开如何修复
    本篇文章为大家展示了MySQL主从复制断开如何修复,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。      主从复制关系断裂,有各种各样的原因。有些时候,我们没有时间去...
    99+
    2023-06-14
  • 如何进行MySQL主从GTID复制修复
    如何进行MySQL主从GTID复制修复,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。GTID是5.6新增特性,减少DBA运维的工作。在以前一主...
    99+
    2024-04-02
  • MySQL实现配置主从复制项目实践
    目录一、检测通信二、master配置1. 开启二进制日志2. 创建一个用于主从库通信用的账号3. 获取binlog文件名和position三、slave配置1. 配置全局唯一的ser...
    99+
    2024-04-02
  • 在Mysql5.7中如何搭建主从复制
    这篇文章主要为大家展示了“在Mysql5.7中如何搭建主从复制”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“在Mysql5.7中如何搭建主从复制”这篇文章吧。一...
    99+
    2024-04-02
  • MySQL主从复制断开的常用修复方法
    01 问题描述       在生产环境中,我们经常会遇见MySQL主从复制断开的情况,在遇到主从复制断开是,通常情况,解决问题的步骤如下: 从库上show slave stat...
    99+
    2022-05-17
    MySQL 主从复制断开 MySQL 主从复制断开修复
  • Mysql主从复制中需要注意哪些事项
    Mysql主从复制中需要注意哪些事项,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、报错error connecting to master...
    99+
    2024-04-02
  • 深入理解MySQL主从复制线程状态转变
    前言 MySQL的主从复制的基本原理是从库连接到主库,主库生成一个主库DUMP线程,该DUMP线程的主要任务是 一直挖掘binlog日志,然后发送到从库的IO线程,IO线程接收到日志流后,写入relay l...
    99+
    2024-04-02
  • mysql在线建立半同步复制的从库
    mysql在线建立半同步复制的从库 在主库和备库创建同步用的用户: grant replication slave on *.* to repl@'%' identified by 'xxx'; (1)...
    99+
    2024-04-02
  • 如何在修改php.ini配置选项后生效
    PHP是一种流行的服务器端脚本语言,主要用于Web开发。PHP脚本由服务器执行,通过php.ini文件进行配置。php.ini文件包含了PHP的各种配置选项,比如内存限制、上传文件大小限制等。修改php.ini的配置选项是必不可少的,但在修...
    99+
    2023-05-14
    php
  • 怎么在修改php.ini配置选项后生效
    今天小编给大家分享一下怎么在修改php.ini配置选项后生效的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。查找php.ini...
    99+
    2023-07-05
  • 如何在线将传统模式复制改为GTID复制模式
    这篇文章将为大家详细讲解有关如何在线将传统模式复制改为GTID复制模式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.在每一台服务器上设置ENFORCE_GTID_CO...
    99+
    2024-04-02
  • MySQL主从复制的原理和注意事项是什么
    这篇文章主要介绍了MySQL主从复制的原理和注意事项是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。主从复制原理(1) Master 将数据...
    99+
    2024-04-02
  • MySQL主从复制项目(MHA+双主Keepalived)_MySQL高可用复制与分布式集群架构04
    MySQL主从复制项目(MHA+双主Keepalived)_MySQL高可用复制与分布式集群架构04视频教程学习地址    http://edu.51cto.com/cours...
    99+
    2024-04-02
  • mysql 主从复制存在问题及解决方法
    主从形式 mysql主从复制 灵活一主一从主主复制一主多从---扩展系统读取的性能,因为读是在从库读取的;多主一从---5.7开始支持联级复制---  用途及条件 m...
    99+
    2024-04-02
  • 如何在docker中安装mysql并搭建主从复制
    本篇内容主要讲解“如何在docker中安装mysql并搭建主从复制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何在docker中安装mysql并搭建主从复制...
    99+
    2024-04-02
  • 怎么在Redis中实现持久化与主从复制
    这篇文章给大家介绍怎么在Redis中实现持久化与主从复制,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。为什么需要持久化Redis是基于内存的NoSQL数据库,读写速度自然快,但内存是瞬时的,在redis服务关闭或重启之...
    99+
    2023-06-14
  • 怎么在Mysql中实现主从复制与读写分离
    这期内容当中小编将会给大家带来有关怎么在Mysql中实现主从复制与读写分离,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。文章思维导图为什么使用主从复制、读写分离主从复制、读写分离一般是一起使用的。目的很简...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作