如果您希望数据备份保持一致,则使用 mysqldump 很重要。也就是说,从所有表中转储的数据代表同一时刻。
如果您一张一张转储表,它们将不同步,因此您可能拥有一个表的数据,这些数据引用了另一个表中未包含在第二个表的备份中的行。当你恢复时,它不会很漂亮。
为了性能,我正在使用:
mysqldump --single-transaction --tab mydatabase
这为每个表转储,一个用于表定义的 .sql 文件和一个用于数据的 .txt 文件。
然后当我导入时,我运行 .sql 文件来定义表:
mysqladmin create mydatabase
cat *.sql | mysql mydatabase
然后我导入所有数据文件:
mysqlimport --local --use-threads=4 mydatabase *.txt
一般来说,运行 mysqlimport 比运行 mysqldump 默认输出的插入语句要快。只要您有空闲的 CPU 资源,使用多线程运行 mysqlimport 也应该更快。
还原时使用锁无助于提高性能。
禁用键旨在将索引创建推迟到数据完全加载并重新启用键之后,但这仅有助于 MyISAM 表中的非唯一索引。但是你不应该使用 MyISAM 表。
有关更多信息,请阅读: