mysql - 日常 MySQL(部分和过滤)复制的最佳实践?

标签 mysql sql database-replication

我有一个相当大的数据库,有超过 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/

相关文章:

mysql - 即使我禁用了外键,为什么我还是收到 `deleting from reference tables`

mysql - "if not exists"SQL语句给出错误

mysql - SQL查询搜索删除字符串的结尾

php - 在 mysql ORDER BY 中使用 case

沙发数据库为 "briefcase": replication and/or database dumps?

mysql - 创建触发器: ERROR 1064 (42000): You have an error in your SQL syntax;

c# - 通过 C# 插入 MySQL

sql - MERGE 语句与外键约束冲突

mysql - 复制从站空间较小

mysql - MariaDB 主从复制无法正常工作