mysqldump 跳过一张表

dan*_*eth 2 mysql

我正在运行一个 cronjob 来使用 mysqldump 备份我们的系统。该数据库包含 90 个左右的表。其中一个表很大,每隔一段时间就会导致转储失败。

从手册中我看到您可以指定要转储的特定表

shell> mysqldump [options] db_name [tbl_name ...]

这让我思考。如果我有两份工作,一份用于倾倒大桌子,一份用于其他所有工作,该怎么办?为了做到这一点,如果我能做类似的事情就好了

shell> mysqldump -u backupuser -p database huge_table > db_huge_table.sql
shell> mysqldump -u backupuser -p database --skip huge_table > db_rest.sql
Run Code Online (Sandbox Code Playgroud)

不幸的是,我没有看到这样的选项。我当然可以明确说明 90 个表,但这似乎是一团糟。

另一种选择是某种脚本,但在检查该路线之前,我会尝试使用此资源。

MySQL 在 CentOS 6.2 上是 5.1.61

use*_*517 13

您可以使用--ignore命令行开关

   ·   --ignore-table=db_name.tbl_name

       Do not dump the given table, which must be specified using both the
       database and table names. To ignore multiple tables, use this
       option multiple times. This option also can be used to ignore
       views.
Run Code Online (Sandbox Code Playgroud)

有点像

shell> mysqldump -u backupuser -p database --ignore-table=database.huge_table > db_rest.sql
Run Code Online (Sandbox Code Playgroud)