我正在使用以下转储命令,但是 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/