mysqldump:如何获取依赖行

时间:2017-08-30 18:05:28

标签: mysql database

我想要在我的开发机器上使用的实时MySQL数据库的快照。问题是DB太大了,所以我的想法就是执行:

mysqldump [connection-info-here] --no-autocommit --where="1 limit 1000" mydb > /dump.sql  

我认为这会给我数据库mydb中每个表的第一千行。我预计结果数据集将破坏许多外键约束,因为某些记录将丢失。因此,我意味着在开发机器上运行的应用程序将失败。

有没有办法mysqldump数据库样本,同时确保所有记录都被关键约束所倾倒? (例如,如果转储了外键,外部表中的匹配记录也将被转储)。

如果那是不可能的,你们如何处理这个问题?

1 个答案:

答案 0 :(得分:1)

不,mysqldump没有选项只能转储在外键关系中匹配的行。您已经了解了--where选项,并且不会这样做。

我有与您相同的任务,转储数据子集但只转储相关数据。例如,用于创建测试实例。

我已经使用MySQL多年了,我曾担任MySQL顾问和培训师,并且我努力跟上当前的工具。我从来没有听说过任何执行此操作的MySQL工具。

我建议的唯一解决方案是编写自己的脚本,使用SELECT...INTO OUTFILE按表转储表。

有时为您的特定架构编写自定义脚本比编写适用于每个人架构的通用工具更容易。

我过去如何处理这个问题是我不能从实时数据库中复制数据。我找到了一些其他方法来创建用于测试的虚假数据子集。无论如何创建合成数据可能更好,因为这样你就不会冒险在开发/测试环境中使用实时数据,以防其中一些是私有数据。