zoukankan      html  css  js  c++  java
  • MYSQL 复制数据过滤

    今天公司有个需求:就是对指定的数据表做主从复制,但是这个表每周都会生成一个

    在主库上每周生成一个表名:money_change_20191021 这样的格式。然后需求只对:money_change 开头的表进行复制,其它表不复制。

    办法一:不支持通配符:

    replicate-do-db    设定需要复制的数据库(多数据库使用逗号,隔开) 不支持通配符

    replicate-ignore-db 设定需要忽略的复制数据库 (多数据库使用逗号,隔开)
    replicate-do-table  设定需要复制的表
    replicate-ignore-table 设定需要忽略的复制表 

    replicate-do-table=ios_logs.money_change_%   

    可以支持,但是不能识别通配符,只支持全名表名称 像:replicate-do-table=ios_logs.money_change_1

    办法二:支持通配符

    replicate-wild-do-table 同replication-do-table功能一样,但是可以通配符
    replicate-wild-ignore-table 同replication-ignore-table功能一样,但是可以加通配符

    replicate-wild-do-table=ios_logs.money_change_%

    可以支持,能很好的识别。

    办法三:

    支持热修改:CHANGE REPLICATION FILTER  replicate_wild_do_table=('ios_logs.money_change_%');

    使用过程中发现一些问题:

    描述:在mysql 配置文件my.cnf 添加过

    replicate-wild-do-table=ios_logs.money_change_%,ios_logs.item_change_%

    配置复制过滤之后,数据不能同步了。

    错误日志报错的

    [Note] Slave SQL for channel '': Worker 1 failed executing transaction 'ANONYMOUS' at master log mysql-bin.000016, end_log_pos 4359; Could not execute Query event. Detailed error: Slave SQL thread ignored the query because of replicate-*-table rules; Error log throttle is enabled. This error will not be displayed for next 60 secs. It will be suppressed, Error_code: 1237

    查看了mysql 官网 有网友已经提交了bug,但是直到5.7.27的版本都没有解决此问题

    https://bugs.mysql.com/bug.php?id=73292

    生活就应该向往美好
  • 相关阅读:
    iOS边练边学--tableView的批量操作
    iOS边练边学--简单的数据操作(增、删、改),左滑动删除和弹窗
    iOS边练边学--自定义非等高的cell
    iOS边练边学--自定义等高的cell
    iOS边练边学--UITableViewCell的常见属性设置
    iOS边练边学--UITableView性能优化之三种方式循环利用
    iOS边练边学--介绍布局的三种方法
    c++ 函数的函数声明
    using namespace std
    java.lang.ExceptionInInitializerError
  • 原文地址:https://www.cnblogs.com/webnginx/p/11772937.html
Copyright © 2011-2022 走看看