我有一个相当大的数据库,有超过 40 个表。我只需要复制几个表(+/- 5)。并且每个表也被过滤。
我正在寻找一些复制这些数据的最佳实践(每天就足够了),我可以只选择几个表并为每个表包含一些 WHERE 子句。
我正在考虑为每个表启动 mysqldump(使用 where 子句)并为每个表创建一个单独的 .sql 文件。然后我可以截断目标数据库上的所有表(所有数据每天都会被覆盖),并运行 mysql 来单独导入每个表。
示例:
# dump each table
mysqldump -u repl_user my_database my_table -w 'id between 1000 and 1005' > my_table.sql
我知道复制完整数据库并使用黑洞表类型。但由于不需要 35 个表,这似乎有点矫枉过正。此外,有些表只需要过滤版本,而我无法通过黑洞解决。
还有更好的解决方案吗?
最佳答案
MySQL 原生支持replication filters ,但仅限于数据库或表级别。这不符合您从这些表中过滤行子集的要求。
FlexViews是一种读取二进制日志并仅重放与保持物化 View 最新相关的更改的工具。您可以通过这种方式定义物化 View 来实现表过滤。
关于mysql - 日常 MySQL(部分和过滤)复制的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23065411/