我有一个 MySQL 数据库的备份,大约 250MB。我用 mysqldump 做的
我试图将它加载到另一台服务器上,如下所示:
mysql -u xxxx -pxxxx data_mirror < dbdump.sql
我对这个过程并不满意,因为
- 它没有给我任何关于(漫长的)进展的反馈
- 失败并显示“服务器消失”消息
您推荐什么方法来备份和恢复大型 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