文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  在服务器离线时移动表空间文件

17.6.3.6 在服务器离线时移动表空间文件

定义在启动时扫描表空间文件的目录的 innodb_directories 变量,支持在服务器离线时将表空间文件移动或还原到新位置。在启动期间,发现的表空间文件将被用于代替数据字典中引用的文件,并且数据字典将被更新以引用重新定位的文件。如果扫描发现重复的表空间文件,则启动将失败,并显示错误,指出为同一个表空间 ID 找到了多个文件。

innodb_data_home_dirinnodb_undo_directorydatadir 变量定义的目录将自动附加到 innodb_directories 参数值。无论是否显式指定 innodb_directories 设置,在启动时都会扫描这些目录。隐式添加这些目录允许移动系统表空间文件、数据目录或撤消表空间文件,而无需配置 innodb_directories 设置。但是,目录更改后必须更新设置。例如,重新定位数据目录后,必须在重新启动服务器之前更新 --datadir 设置。

可以在启动命令或 MySQL 选项文件中指定 innodb_directories 变量。由于某些命令解释器将分号 (;) 解释为特殊字符,因此参数值周围使用引号。(例如,Unix shell 将其视为命令终止符。)

启动命令

mysqld --innodb-directories="directory_path_1;directory_path_2"

MySQL 选项文件

[mysqld]
innodb_directories="directory_path_1;directory_path_2"

以下过程适用于移动单个 每表文件通用表空间 文件、系统表空间 文件、撤消表空间 文件或数据目录。在移动文件或目录之前,请查看以下使用注意事项。

  1. 停止服务器。

  2. 将表空间文件或目录移动到所需位置。

  3. InnoDB 了解新目录。

  4. 重新启动服务器。

使用注意事项
  • 通配符表达式不能用在innodb_directories参数值中。

  • innodb_directories扫描还会遍历指定目录的子目录。重复的目录和子目录将从要扫描的目录列表中丢弃。

  • innodb_directories支持移动InnoDB表空间文件。不支持移动属于InnoDB以外的存储引擎的文件。此限制也适用于移动整个数据目录。

  • innodb_directories支持在将文件移动到扫描目录时重命名表空间文件。它还支持将表空间文件移动到其他受支持的操作系统。

  • 将表空间文件移动到不同的操作系统时,请确保表空间文件名不包含禁止的字符或在目标系统上具有特殊含义的字符。

  • 将数据目录从 Windows 操作系统移动到 Linux 操作系统时,请修改二进制日志索引文件中的二进制日志文件路径,以使用反斜杠而不是正斜杠。默认情况下,二进制日志索引文件具有与二进制日志文件相同的基名,扩展名为“.index”。二进制日志索引文件的位置由--log-bin定义。默认位置是数据目录。

  • 如果将表空间文件移动到不同的操作系统引入了跨平台复制,则数据库管理员有责任确保包含平台特定目录的 DDL 语句的正确复制。允许指定目录的语句包括CREATE TABLE ... DATA DIRECTORYCREATE TABLESPACE ... ADD DATAFILE

  • 将使用绝对路径或在数据目录之外的位置创建的文件级表和常规表空间的目录添加到innodb_directories设置中。否则,InnoDB在恢复期间将无法找到这些文件。有关相关信息,请参见崩溃恢复期间的表空间发现

    要查看表空间文件位置,请查询信息模式FILES

    mysql> SELECT TABLESPACE_NAME, FILE_NAME FROM INFORMATION_SCHEMA.FILES \G