mysqldump 最大忽略表使用情况?

标签 mysql

我正在使用以下转储命令,但是 DB 数据库中的许多 TABLE_additionalname 仍然被转储。是否存在可以忽略的最大表数,或者此语法是否以其他方式不正确(转储完成,因此我怀疑它是有效的语法)。

mysqldump --skip-lock-tables --single-transaction --flush-logs --hex-blob 
 --max_allowed_packet=10M DB -uroot -pPASSWORD 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname 
 --ignore-table=DB.TABLE_additionalname

转储大小为 41 GB,因此很难确定包含哪些表。

我也查看了我正在运行的版本的手册,但那里没有指定限制,https://dev.mysql.com/doc/refman/5.6/en/mysqldump.html#option_mysqldump_ignore-table .

最佳答案

mysqldump 存储要在动态分配的哈希表中忽略的表列表。它会将表名插入每种类型的哈希中,并且似乎没有任何代码来限制忽略表的数量。

https://github.com/mysql/mysql-server/blob/8.0/client/mysqldump.cc#L847

case (int)OPT_IGNORE_TABLE: {
  if (!strchr(argument, '.')) {
    fprintf(stderr,
            "Illegal use of option --ignore-table=<database>.<table>\n");
    exit(1);
  }
  ignore_table->insert(argument);
  break;
}

在 MySQL 源代码中,文件 mysys/hash.c 对于初始化哈希表的函数有这样的注释:

Initialize the hash, by defining and giving valid values for its elements. The failure to allocate memory for the hash->array element will not result in a fatal failure. The dynamic array that is part of the hash will allocate memory as required during insertion.

这意味着如果有限制,则与您的系统 RAM 有关,而不是与代码有关。哈希表将根据需要增长,直至达到可用 RAM 的大小。

关于mysqldump 最大忽略表使用情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56809072/

相关文章:

mysql - 2 个 MySQL 安装(现在丢失了一个)

mysql - 左连接似乎极大地阻碍了 SQL 查询性能

MySQL ORDER BY 去除非数字字符

mysql - 如何更改此查询,以便在 select(*) 计数值为 2 时返回 true?

mysql - 如何循环遍历字段中的逗号分隔值以在 MySQL 的其他表中创建新行

mysql - WSO2 API Manager 对 Store rest API 的 SQL 查询速度慢,导致 UI 性能不佳

MySQL连接多个表

php - 将mysql db中的单词按顺序排列

mysql - 在 NULL 的情况下获取其他字段值

mysql - UPDATE 字段从表 1 到表 2,其中连接它们的字段在表 2 中不是唯一的