【问题标题】:MySQL database-dump importMySQL 数据库转储导入
【发布时间】:2021-06-01 14:52:54
【问题描述】:

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

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

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

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

这个 12 小时导入一个包含 5M 记录和多个索引的表是为了鸟类。

【问题讨论】:

    标签: mysql database-dump


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

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

    【讨论】:

    • 我使用的主要是从 WorkBench 导出的,但从命令行做了一些。我从命令行导入。我是从 MySQL 还是从 /Bin 目录执行 foreign_key_checks、unique_checks 和自动提交?因为我不能让它们产生效果。在我看来,我必须在导入后将这些值设置为 0 才能使用数据库。但这不是我的经验。数据库工作正常,包括所有索引,这表明我从来没有在我看来一开始就关闭它们。
    • 从头开始阅读手册:“服务器系统变量”是 MySQL 范围,而不是操作系统范围。您在 SQL 提示符中设置它们,而不是在 shell 中。 SET syntax 是 MySQL 特定的,并不适用于 Unix - 您的转储文件完全由 SQL 组成,而不是一点点 shell 命令。目录无关紧要,因为 shell 无关紧要。
    猜你喜欢
    • 2011-07-22
    • 2016-08-21
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多