我试图弄清楚如何通过终端在 AWS 上执行 mysqldump 命令时排除或包含特定表。
背景:我有一个 WordPress 多站点,但只需要前 3 个字符为“wp_”的表,而其他所有带有前缀的表,如“wp_1”、“wp_2”等,我不需要将它们放在转储文件中。
这是我用来生成转储文件的代码,该文件可以工作但会抓取数据库中的所有表:
mysqldump -h RDS instance endpoint \
-u user \
-p databasename \
--port=3306 \
--single-transaction \
--routines \
--triggers \
--databases databasename > path/rds-dump.sql
谢谢!
答案1
当我遇到同样的问题时,我实施的一件事是创建一个包含所有必需表名的文件。现在我只需遍历文件并转储每个表并将其附加到同一个转储文件中。例如:
for i in $(cat requiredtables.txt);do mysqldump -h RDS_instance -u user -p'password' db_name $i >> db_dump.sql;done
答案2
不久前,我在迁移自己的网站时查看了这个问题,我的结论是这是不可能的。可能有一种方法可以在导出后处理转储文件,但如果没有很好的理由,我可能不会这么做。
答案3
这是不可能的,但您可以随时转储整个数据库并创建一个 SQL 查询来删除不需要的表。然而,这不会缩短 mysqldump 时间。