mysql过滤复制的示例分析

  介绍

这篇文章主要介绍mysql过滤复制的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

mysql过滤复制

 mysql过滤复制的示例分析

两种思路:

<李>

主库的binlog上实现(不推荐,尽量保证主库binlog完整)

<李>

从库的sql线程上实现

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

主库上实现

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

主库配置参数:

#配置文件中添加      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 过滤器[,过滤][,…]      过滤器:{   ,,,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=& # 39; 94 fc1fbe b7a0 - 11 - eb b0a0 - 000 c2969aba1:20& # 39;;,将gtid分配给下一个事务      开始,提交;   set  gtid_next=自动,系统自动分配gtid   start  slave  sql_thread;

以上是“mysql过滤复制的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

mysql过滤复制的示例分析