0

我需要一些有关导入和导出 MySQL 8 数据库的详细信息。

  1. 如果整个数据库都备份在一个转储中,是否可以恢复单个表,还是应该导出单个表?

  2. 设置FOREIGN_KEY_CHECKS,UNIQUE_CHECKSAUTOCOMMITto0时,是否对您要从 MySQL 导入的数据库执行此操作?如果是这样,它似乎对我没有影响。如果没有,请提供有关如何进行这些设置的详细信息。

  3. 是否应该在导出之前对数据库进行 2.) 中的设置以加快导入速度?

一张包含 5M 记录和多个索引的表的 12 小时导入是针对鸟类的。

4

1 回答 1

0
  1. 由于转储是一个几乎只包含 SQL 命令的大型文本文件,因此您还可以删除其中的部分内容,尤其是您希望跳过的CREATE TABLE和。INSERT INTO仅导出数据库的一部分具有相同的效果。有时您别无选择(要么没有可用于处理大文件的文本编辑器,要么没有可导出的源数据库)。
  2. 这些是为了在写入(导入)时提高性能,而在读取(导出)时它们没有效果并且没有意义(您在读取时不检查约束)。它们在转储中,因为您总是计划再次导入它 - 它不是导出日志,而只是想对用户友好,因此您不必这样做。手册:
  1. 不可以。导出和导入彼此不受约束——您不想在读取(导出)数据时禁用任何约束或检查,这样做也不会有任何好处。

您没有说明的是您如何导入以及使用哪个程序:通过控制台和“mysql”客户端(即mysql < data.sql)?您是否在导入过程中检查过操作系统的性能以发现瓶颈(即磁盘使用率高、交换量大、内存不足、CPU 使用率...)?

于 2021-06-01T16:30:58.620 回答