我有一个大约6GB的数据库,它有一个包含1260万行的表。我试图通过以下方式将数据库导出到SQL转储中:
mysqldump -u root -p db_name> db_name.sql
命令完成后,导出的SQL转储文件大约为2GB,主表只导出大约100万行。
可能出现什么问题?
答案 0 :(得分:7)
由于某些原因,有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
。
答案 1 :(得分:0)
您的文件系统可能仅限于2GB文件。
答案 2 :(得分:0)
之所以发生这种情况是因为某些SQL Dump的转储数据大小有限。 如果数据库超出限制,则无法转储数据库。
如果你真的想这样做,你必须压缩数据库。使用ZIP,GZIP等。在转储数据之前。
答案 3 :(得分:0)
我有相似之处,尽管所有表都导出到了某个点。
我删除了旧的冗余View所依赖的列,并且mysqldump悄无声息地试图“导出”该视图