【发布时间】:2011-08-05 05:11:40
【问题描述】:
我有一个大小约为 6GB 的数据库,它有一个包含 1260 万行的表。我尝试通过以下方式将数据库导出到 SQL 转储中:
mysqldump -u root -p db_name > db_name.sql
命令完成后,导出的 SQL 转储文件只有大约 2GB,而主表仅导出了大约 100 万行。
可能出了什么问题?
【问题讨论】:
我有一个大小约为 6GB 的数据库,它有一个包含 1260 万行的表。我尝试通过以下方式将数据库导出到 SQL 转储中:
mysqldump -u root -p db_name > db_name.sql
命令完成后,导出的 SQL 转储文件只有大约 2GB,而主表仅导出了大约 100 万行。
可能出了什么问题?
【问题讨论】:
您的文件系统可能仅限于 2gb 文件。
【讨论】:
由于某种原因,文件大小限制为 2GB,解决此问题的最简单方法是使用 split:
mysqldump ... | split -b 250m - filename.sql-
你也可以像这样压缩文件:
mysqldump ... | gzip -9c | split -b 250m - filename.sql.gz-
要从非压缩文件中恢复,请执行以下操作:
cat filename.sql-* | mysql ...
对于压缩文件:
cat filename.sql-* | zcat | mysql ...
当然,如果你想要一个文件,你可以然后tar结果。
显然,如果您愿意,您可以将 250m 替换为不同的大小。
【讨论】:
... 正在连接到数据库并像您在原始帖子中一样选择表。
这是因为某些 SQL Dump 的转储数据大小有限。 如果超过限制,则无法转储数据库。
如果你真的想这样做,你必须压缩数据库。通过使用 ZIP、GZIP 等。在转储数据之前。
【讨论】:
我也有类似的情况,但所有表格都导出到某个点。
我删除了一个旧的冗余视图所依赖的列,mysqldump 悄悄地试图“导出”视图
【讨论】: