• 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

    生活就应该向往美好
  • 相关阅读:
    rsync的man手册(未完成)
    rsync基础
    命令:mktemp
    命令:install
    [Abp vNext 源码分析]
    异常吞噬问题一则
    使用 Polly 实现复杂策略(超时重试)
    在 DotNetty 中实现同步请求
    使用 C# 实现 CJ-T188 水表协议和 DL-T645 电表协议的解析与编码
    DevExpress 使用 GridControl 时,数据源无法立即更新的问题
  • 原文地址:https://www.cnblogs.com/webnginx/p/11772937.html
Copyright © 2020-2023  润新知