首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何打开并处理在转储中生成的非常大的.SQL文件?

问如何打开并处理在转储中生成的非常大的.SQL文件?
EN

Stack Overflow用户
提问于 2019-07-17 11:31:32
回答 3查看 2.8K关注 0票数 2

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

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

代码语言:javascript
复制
mysqldump -u root -p siafi > /home/user_1/siafi.sql

我在Ubuntu16.04和MySQL Community (8.0.16)的计算机上下载了这个MySQL文件。它有8GB的内存。

所以我在航站楼做了这些步骤:

代码语言:javascript
复制
# 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。而且正常工作

但是这个90 is的文件正在处理超过12个小时,没有停止。我不知道它是否起作用

拜托,有什么更有效的方法吗?也许可以分割.SQL文件?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-07-19 17:15:30

两件可能有帮助的事情:

  1. 使用pv查看已经读取了多少.sql文件。这可以给你一个进度条,至少可以告诉你它并不糟糕。
  2. 登录到MySQL并使用SHOW PROCESSLIST查看MySQL当前正在执行的内容。如果它还在运行,就让它运行到完成。

如果打开,在恢复期间关闭binlog可能确实有帮助。另一件事可能有用,也可能没有用.如果您有选择,尝试使用最快的磁盘可用。如果你在亚马逊这样的大卖场上运行,你可能会有这样的选择。如果(例如)在标准的EC2主机上执行此操作,您将真正感受到痛苦。

票数 1
EN

Stack Overflow用户

发布于 2019-07-19 17:32:07

将文件分解成较小的块,并分别处理它们。

您可能已经达到了日志记录的高度,而mysql正试图将所有的东西都退回去,这是一个缓慢的过程。

将文件分割成大约1Gb的块,在整行中断开。也许可以使用:

代码语言:javascript
复制
split -l 1000000 bigfile.sql part.

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

您必须用split进行实验才能得到正确的大小,而且您还没有说明您的操作系统是什么,而且split实现/选项也各不相同。split --number=100为你工作。

票数 2
EN

Stack Overflow用户

发布于 2019-07-21 07:09:29

您可以使用第三方工具(如https://philiplb.de/sqldumpsplitter3/ )

非常容易使用,可以定义大小,位置等.

或者用这个也一样,但是接口有点色彩斑斓并使用。

https://sqldumpsplitter.net/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57074839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档