首页 > 解决方案 > 如何打开和使用在转储中生成的非常大的 .SQL 文件?

问题描述

我有一个非常大的 .SQL 文件,有 90 GB

它是通过服务器上的转储生成的:

mysqldump -u root -p siafi > /home/user_1/siafi.sql

我在装有 Ubuntu 16.04 和 MySQL Community Server (8.0.16) 的计算机上下载了这个 .SQL 文件。它有 8GB 的​​ RAM

所以我在终端中做了这些步骤:

# Access
/usr/bin/mysql -u root -p

# I create a database with the same name to receive the .SQL information
CREATE DATABASE siafi;

# I establish the privileges. User reinaldo
GRANT ALL PRIVILEGES ON siafi.* to reinaldo@localhost;

# Enable the changes
FLUSH PRIVILEGES;

# Then I open another terminal and type command for the created database to receive the data from the .SQL file
mysql --user=reinaldo --password="type_here" --database=siafi < /home/reinaldo/Documentos/Code/test/siafi.sql

我用其他 .SQL 文件键入了这些相同的命令,只有较小的文件,最大为 2GB。它工作正常

但是这个 90GB 的文件正在处理超过 12 个小时而没有停止。我不知道它是否有效

请问有没有更有效的方法来做到这一点?也许拆分 .SQL 文件?

标签: mysqlsql

解决方案


将文件分成更小的块并分别处理它们。

您可能正在达到日志记录的高水位标记并且 mysql 正在尝试回滚所有内容,这是一个缓慢的过程。

将文件拆分为大约 1Gb 的块,在整行上中断。也许使用:

split -l 1000000 bigfile.sql part.

然后使用您当前的命令按顺序运行它们。

您必须进行试验split才能获得正确的大小,并且您还没有说出您的操作系统是什么,并且split实现/选项会有所不同。split --number=100为你工作。


推荐阅读