mysql过滤复制思路详解

 更新时间:2021年08月25日 11:49:58   作者:EverEternity  
这篇文章主要介绍了mysql过滤复制的实现思路,主要讲解了两种思路,一种是在主库的binlog上实现另一种是从库的sql线程上实现,具体实现过程跟随小编一起看看吧

mysql过滤复制

两种思路:

  • 主库的binlog上实现(不推荐,尽量保证主库binlog完整)
  • 从库的sql线程上实现

所以主从过滤复制尽量不用,要用的也仅仅在从库上使用,因为要尽可能保证binlog的完整性

主库上实现

在Master 端为保证二进制日志的完整, 不使用二进制日志过滤。

主库配置参数:

#配置文件中添加

binlog-do-db=db_name     #定义白名单,仅将制定数据库的相关操作记入二进制日志。如果主数据库崩溃,那么仅仅之恢复指定数据库的内容,不建议在主服务器端使用,这样导致日志不完整。
binlog-ignore-db=db_name   #定义黑名单, 定义ignore 的库上发生的写操作将不会记录到二进制日志中

从库上实现

可以下载配置文件中

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)
#将源数据库的db1发生的语句重写到从库的db2
CHANGE REPLICATION FILTER REPLICATE_REWRITE_DB = ((db1, db2));

语法:

官网语法参考:https://dev.mysql.com/doc/refman/5.7/en/change-replication-filter.html

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)
}
#从库实现过滤复制

​	stop slave sql_thread;
​	change replication filter replicate_do_db=(db);
​	start slave sql_thread;

#取消过滤复制
​	stop slave sql_thread;
​	change replication filter replicate_do_db=();
​	start slave sql_thread;

一些问题

主库删除某个表,从库没有这个表,导致从库sql线程关闭

或者主从正常,从库不小心删除某个表,主库随后再删除这个表,从库又会去删除这个不存在的表,报错,导致sql线程退出

解决方法:跳过这一步操作

解决方案:从库sql线程跳过误操作的步骤

stop slave sql_thread;

#找到Executed_Gtid_Set执行到19
set gtid_next='94fc1fbe-b7a0-11eb-b0a0-000c2969aba1:20'; 将gtid分配给下一个事务

begin;commit;
set gtid_next=automatic; 系统自动分配gtid
start slave sql_thread;

到此这篇关于mysql过滤复制思路详解的文章就介绍到这了,更多相关mysql过滤复制 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql 初始执行文件的使用介绍

    mysql 初始执行文件的使用介绍

    本文将详细介绍mysql 初始执行文件的使用方法,现在晒出来和大家分享下,希望可以帮助你们
    2012-11-11
  • Mysql删除几亿条数据表中的部分数据的方法实现

    Mysql删除几亿条数据表中的部分数据的方法实现

    在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03
  • MySQL InnoDB和MyISAM数据引擎的差别分析

    MySQL InnoDB和MyISAM数据引擎的差别分析

    InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持
    2011-05-05
  • MySQL学习笔记5:修改表(alter table)

    MySQL学习笔记5:修改表(alter table)

    我们在创建表的过程中难免会考虑不周,因此后期会修改表修改表需要用到alter table修改表语句,接下来详细介绍,需要的朋友可以参考下
    2013-01-01
  • MySQL的索引你了解吗

    MySQL的索引你了解吗

    这篇文章主要为大家详细介绍了MySQL的索引,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • PHP版Mysql爆破小脚本

    PHP版Mysql爆破小脚本

    本文给大家分享的是使用php实现暴力破解mysql的小脚本代码,非常的好用,有需要的小伙伴可以参考下
    2016-10-10
  • Mysql虚拟列的使用场景

    Mysql虚拟列的使用场景

    MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧
    2025-01-01
  • MYSQL 没有完全卸载将导致其安装不成功

    MYSQL 没有完全卸载将导致其安装不成功

    安装MYSQL不成功,一般是因为服务器可能安装过MYSQL而没有完全卸载。
    2009-06-06
  • mysql求和函数使用示例

    mysql求和函数使用示例

    求和函数在某些有计算的情况下会使用到,在本将为大家介绍下mysql中时如何实现求和的,感兴趣的朋友可以参考下,希望对大家有所帮助
    2013-09-09
  • mysql中取字符串中的数字的语句

    mysql中取字符串中的数字的语句

    在很多时间我们需要把字符串的数字给取出来,通常大家会用php,asp等这类来操作,本文章介绍了在sql中取字符中的数字办法,有需要的朋友可以参考一下
    2012-04-04

最新评论