项目需要清理主库历史表数据,从库中的历史数据需要保留,对REPLICATE_WILD_IGNORE_TABLE的使用进行了测试
- 主从库环境
主库: mysql> show slave hosts; +-----------+------------+------+-----------+--------------------------------------+ | Server_id | Host | Port | Master_id | Slave_UUID | +-----------+------------+------+-----------+--------------------------------------+ | 210126002 | 2.46.7.214 | 9901 | 210126001 | 4e1288fa-5f84-11eb-9cc3-fa163e6df9e2 | | 210126003 | 2.46.7.215 | 9901 | 210126001 | 710f3b34-5f84-11eb-af05-fa163eabac76 | +-----------+------------+------+-----------+--------------------------------------+ 2 rows in set (0.00 sec) mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | t_test1 | | t_test2 | | tb3 | | tbs1 | | tbs2 | +----------------+ 5 rows in set (0.00 sec) 从库: mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | t_test1 | | t_test2 | | tb2 | | tb3 | | tbs1 | | tbs2 | +----------------+ 6 rows in set (0.00 sec)
复制
- 测试目标为删除主库test.tbs1表后,从库test.tbs1表被保留
1、从库设置需要忽略的tbs1表
mysql> CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE =('tbs1'); ERROR 3067 (HY000): Supplied filter list contains a value which is not in the required format 'db_pattern.table_pattern' mysql> CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE =('test.tbs1'); ERROR 3017 (HY000): This operation cannot be performed with a running slave sql thread; run STOP SLAVE SQL_THREAD first mysql> stop slave; Query OK, 0 rows affected (0.00 sec) mysql> CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE =('test.tbs1'); Query OK, 0 rows affected (0.00 sec) mysql> start slave; Query OK, 0 rows affected (0.01 sec)
复制
2、主库删除tbs1表并查看从库是否保留
主库: mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | t_test1 | | t_test2 | | tb3 | | tbs1 | | tbs2 | +----------------+ 5 rows in set (0.00 sec) mysql> drop table tbs1; Query OK, 0 rows affected (0.01 sec) mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | t_test1 | | t_test2 | | tb3 | | tbs2 | +----------------+ 4 rows in set (0.00 sec) 主库binlog日志: #220728 15:44:03 server id 210126001 end_log_pos 1517 CRC32 0xc2341c92 Query thread_id=23556447 exec_time=0 error_code=0 SET TIMESTAMP=1658994243/*!*/; SET @@session.pseudo_thread_id=23556447/*!*/; DROP TABLE `tbs1` /* generated by server */ /*!*/; SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/; DELIMITER ; 从库: mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | t_test1 | | t_test2 | | tb2 | | tb3 | | tbs1 | | tbs2 | +----------------+ 6 rows in set (0.00 sec) 从库binlog日志中没有同步drop语句: #220728 15:44:03 server id 210126001 end_log_pos 1574 CRC32 0x5b67c129 Query thread_id=23556447 exec_time=0 error_code=0 SET TIMESTAMP=1658994243/*!*/; COMMIT /*!*/; SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/; DELIMITER ; 上述操作可以发现主库test.tbs1表删除成功而从库该表未被删除,说明上述参数操作生效!!!
复制
- 清除REPLICATE_WILD_IGNORE_TABLE
mysql> stop slave; Query OK, 0 rows affected (0.00 sec) mysql> CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE =(); Query OK, 0 rows affected (0.00 sec) mysql> start slave; Query OK, 0 rows affected (0.01 sec)
复制
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 参数说明: REPLICATE_DO_DB:包括基于数据库名称的更新。 REPLICATE_IGNORE_DB:排除基于数据库名称的更新。 REPLICATE_DO_TABLE:包括基于表名的更新。 REPLICATE_IGNORE_TABLE:排除基于表名的更新。 REPLICATE_WILD_DO_TABLE:包括基于通配符模式匹配表名的更新。 REPLICATE_WILD_IGNORE_TABLE:排除基于通配符模式匹配表名的更新。 REPLICATE_REWRITE_DB:将从上的新名称替换为主上的指定数据库后,在从上执行更新。
复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
2025年4月中国数据库流行度排行榜:OB高分复登顶,崖山稳驭撼十强
墨天轮编辑部
1391次阅读
2025-04-09 15:33:27
【DBA坦白局】第一期:在小城市和一线城市做DBA,是“躺”还是“卷”?
墨天轮编辑部
1168次阅读
2025-04-10 14:17:22
Oracle Concepts(Oracle 19c):07 SQL
Ryan Bai
965次阅读
2025-04-09 10:57:11
2025年3月国产数据库大事记
墨天轮编辑部
750次阅读
2025-04-03 15:21:16
Oracle数据库常用的78个脚本,速来下载!
陈举超
605次阅读
2025-03-27 12:27:50
2025年3月国产数据库中标情况一览:TDSQL大单622万、GaussDB大单581万……
通讯员
546次阅读
2025-04-10 15:35:48
Oracle DBA 高效运维指南:高频实用 SQL 大全
Lucifer三思而后行
499次阅读
2025-03-28 21:52:03
如何利用Deepseek自动优化SQL并推送
潇湘秦
474次阅读
2025-03-28 10:02:33
征文大赛 |「码」上数据库—— KWDB 2025 创作者计划启动
KaiwuDB
461次阅读
2025-04-01 20:42:12
Oracle DataGuard高可用性解决方案详解
孙莹
458次阅读
2025-03-26 23:27:33