以上述方式进行转储和恢复意味着 MySQL 必须在导入数据时完全重建索引。它还必须每次解析数据。
如果您能够以 MySQL 已经理解的格式复制数据文件,那么效率会更高。这样做的一个好方法是使用创新备份 http://www.percona.com/doc/percona-xtrabackup/2.1/innobackupex/creating_a_backup_ibk.html来自 佩尔科纳
(开源并作为超备份 https://www.percona.com/software/mysql-database/percona-xtrabackup可以从以下位置下载here https://www.percona.com/downloads/XtraBackup/LATEST/).
这将拍摄 MyISAM 表的快照,对于 InnoDB 表,它将复制底层文件,然后针对它们重播事务日志以确保一致的状态。它可以从实时服务器上执行此操作,无需停机(我不知道这是否是您的要求?)
我建议您阅读文档,但要以最简单的形式进行备份,请使用:
$ innobackupex --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/
$ innobackupex --apply-log /path/to/BACKUP-DIR/
如果数据在同一台机器上,那么innobackupex甚至有一个简单的恢复命令:
$ innobackupex --copy-back /path/to/BACKUP-DIR
实际执行备份的选项和方法有很多,因此我强烈建议您在开始之前仔细阅读文档。
作为速度参考,我们的慢速测试服务器大约有 600 IOPS,使用此方法可以在大约 4 小时内恢复 500 GB 的备份。
最后:您提到了可以采取哪些措施来加快导入速度。这主要取决于瓶颈是什么。通常,导入操作受 I/O 限制(您可以通过检查 io 等待来测试这一点),而加快速度的方法是使用更快的磁盘吞吐量 - 要么更快的磁盘本身,要么更多的磁盘一起使用。