【问题标题】:MySQL Dump Limit? MySQL overall database size limit?MySQL转储限制? MySQL整体数据库大小限制?
【发布时间】:2011-08-05 20:38:05
【问题描述】:

客户只有大约 1000 行数据(当然是最近的),只是在他们的一张表中丢失了。做一些取证,我发现他们所有其他行中的“last_updated_date”也被设置为与删除发生的时间大致相同。这不是他们更大的桌子之一。

其他一些奇怪的地方是上周的 mysqldumps 都是 exact 相同的大小 - 10375605093 字节。以前的转储每个都增加了大约 0.5GB。 MySQL Dump 命令是标准的:

/path/to/mysqldump -S /path/to/mysqld2.sock --lock-all-tables -u username -ppassword database > /path-to-backup/$(date +%Y%m%d)_live_data.mysqldump

框上的df -h 显示每个目录中有足够的空间(至少50%)。

数据丢失加上他们的转储大小没有增加这一事实让我担心我们在 MySQL 中以某种方式达到了一些硬编码限制,并且(上帝希望我错了),数据正在损坏。有人听说过这样的事吗?我们如何解释 mysqldump 的大小?

【问题讨论】:

    标签: mysql limit mysqldump loss


    【解决方案1】:

    如果您正在执行多个多 gig 转储并在中途用完空间,那么 50% 的可用空间并没有多大意义。除非您将二进制数据存储在转储中,否则它们是非常可压缩的,所以我建议在输出到文件之前通过 gzip 管道 mysqldump 的输出:

    mysqldump .... | gzip -9 > /path_to_backup/....
    

    MySQL 本身没有任何“在 X 次演出后不再存在”的任意限制,但它所运行的平台有限制,detailed here

    【讨论】:

    • 绝对没有磁盘空间不足...每个转储约为 10GB,磁盘有 366GB 可用空间
    • 您可能希望将 stderr 重定向到另一个文件以捕获 mysqldump 产生的任何错误输出。 msyqldump ... > dump.sql 2> dump.err 看看那里有什么。例如,如果数据库中有一个超过 max_allowed_pa​​cket 的 blob,则转储将在该点中止。
    • 从命令行运行(我们没有转储 stderr)仍然不产生任何输出......它看起来运行完美(但文件在 10375605093 完成)。数据目录上的 du -k 显示它现在大约 1.45 GB(并且还在增长)。我真的很难过。转储文件上的 tail -1 显示预期的“转储已于 2011-08-05 17:33:29 完成”...
    • 想通了(排序)。似乎设置它的开发人员有第二个数据库正在运行 + 监听该 /path/to/mysqld2.sock 套接字。一旦我们意识到主服务器在不同的套接字上运行,只需取出“-S”并指定新的凭据即可。仍在挖掘,但看起来第二个数据库可能是一个停止的从站(因此转储的大小停止增加)。谢谢大家的指点!
    【解决方案2】:

    MySQL 可以处理的数据量没有硬编码限制。

    【讨论】:

    • 深入挖掘......这不是“max_allowed_pa​​cket”问题(alahttp://rackerhacker.com/2007/10/11/mysqldump-got-packet-bigger-than-max_allowed_pa​​cket-bytes/) , 文件系统是 Linux / ext4... 最大文件大小是 16TB (en.wikipedia.org/wiki/Ext4)。这里仍然完全一无所知...
    猜你喜欢
    • 2013-01-12
    • 1970-01-01
    • 2023-03-08
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多