如何将大型 SQL 文件加载到 mysql

如何将大型 SQL 文件加载到 mysql

我有一个 MySQL 数据库的备份,大约 250MB。我用 mysqldump 做的

我试图将它加载到另一台服务器上,如下所示:

mysql -u xxxx -pxxxx data_mirror < dbdump.sql

我对这个过程并不满意,因为

  1. 它没有给我任何关于(漫长的)进展的反馈
  2. 失败并显示“服务器消失”消息

您推荐什么方法来备份和恢复大型 MySQL 数据库?

我在基于 Windows 7 的服务器上执行此操作。

答案1

您收到“服务器消失”的原因是因为您的终端会话超时。使用 nohup 可防止进程中断,如下所示:

nohup mysql -u xxxx -pxxxx 数据镜像 < dbdump.sql &

注意:& 符号表示进程在后台运行。要跟踪正在运行的进程的状态,只需 tail 创建的 nohup.out 文件即可:

尾部-f nohup.out

答案2

使用 LOAD DATA INFILE 是 SELECT ... INTO OUTFILE 的补充。这应该更快,因为不涉及 sql 解析。

答案3

使用Percona Xtrabackup在 Linux 的不同版本上已经存在了很长时间。不幸的是,它在 Windows 上还处于 alpha 阶段。

答案4

大型备份?我已经恢复了 10+ GB 的数据压缩SQL 转储...

由于 SQL 转储本身的(非线性)特性,因此无法显示进度指示器。而且,转储大小和 MySQL 服务器的实际磁盘利用率之间几乎没有关联。

“服务器消失”似乎表示有什么东西正在断开您的 mysql 客户端和服务器之间的连接。要么是 MySQL 服务器崩溃了(或者速度慢得令人无法忍受),要么是您的服务器位于远程,请检查您的网络(某些防火墙对于长期存在的 TCP 连接来说很麻烦)。

请注意,使用压缩的 SQL 转储速度更快,因为读取实际转储所需的 I/O 更少。例如:

mysqldump the_db | gzip > the_db.sql.gz  # backup
zcat the_db.sql.gz | mysql the_db        # restore

相关内容