我有一个很大的.SQL文件,90 GB
它是通过服务器上的转储生成的:
mysqldump -u root -p siafi > /home/user_1/siafi.sql我在Ubuntu16.04和MySQL Community (8.0.16)的计算机上下载了这个MySQL文件。它有8GB的内存。
所以我在航站楼做了这些步骤:
# 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文件?
发布于 2019-07-19 17:15:30
两件可能有帮助的事情:
pv查看已经读取了多少.sql文件。这可以给你一个进度条,至少可以告诉你它并不糟糕。SHOW PROCESSLIST查看MySQL当前正在执行的内容。如果它还在运行,就让它运行到完成。如果打开,在恢复期间关闭binlog可能确实有帮助。另一件事可能有用,也可能没有用.如果您有选择,尝试使用最快的磁盘可用。如果你在亚马逊这样的大卖场上运行,你可能会有这样的选择。如果(例如)在标准的EC2主机上执行此操作,您将真正感受到痛苦。
发布于 2019-07-19 17:32:07
将文件分解成较小的块,并分别处理它们。
您可能已经达到了日志记录的高度,而mysql正试图将所有的东西都退回去,这是一个缓慢的过程。
将文件分割成大约1Gb的块,在整行中断开。也许可以使用:
split -l 1000000 bigfile.sql part.然后使用当前命令按顺序运行它们。
您必须用split进行实验才能得到正确的大小,而且您还没有说明您的操作系统是什么,而且split实现/选项也各不相同。split --number=100为你工作。
发布于 2019-07-21 07:09:29
https://stackoverflow.com/questions/57074839
复制相似问题