• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 在服务器离线时移动表空间文件

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

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

    innodb_directories选项可以在启动命令或MySQL选项文件中指定。在参数值周围使用引号,因为否则某些命令解释器会将分号(;)解释为特殊字符。(例如,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

      • 如果移动单个文件的每个表或一般的表空间文件,添加未知目录的innodb_directories价值。

        • 由定义的目录innodb_data_home_dirinnodb_undo_directory以及datadir配置选项自动追加到innodb_directories参数值,所以你不需要指定这些。
        • 每表文件表空间文件只能移动到与架构同名的目录中。例如,如果actor表属于sakila架构,则actor.ibd数据文件只能移动到名为的目录sakila
        • 常规表空间文件无法移动到数据目录或数据目录的子目录。
      • 如果移动系统表空间文件,还原表或数据目录,更新innodb_data_home_dirinnodb_undo_directorydatadir设置,是必要的。
    4. 重新启动服务器。

    使用说明

    • 无法在innodb_directories参数值中使用通配符表达式。
    • innodb_directories扫描还穿越指定目录的子目录。重复的目录和子目录将从要扫描的目录列表中丢弃。
    • innodb_directories选项仅支持移动InnoDB表空间文件。InnoDB不支持移动属于存储引擎的文件。当移动整个数据目录时,此限制也适用。
    • innodb_directories选项支持在将文件移动到扫描目录时重命名表空间文件。它还支持将表空间文件移动到其他受支持的操作系统。
    • 将表空间文件移动到其他操作系统时,请确保表空间文件名不包含禁止的字符或目标系统上具有特殊含义的字符。
    • 将数据目录从Windows操作系统移动到Linux操作系统时,请修改二进制日志索引文件中的二进制日志文件路径,以使用反斜杠而不是正斜杠。默认情况下,二进制日志索引文件的名称与二进制日志文件的名称相同,扩展名为“.index”。二进制日志索引文件的位置由定义--log-bin。默认位置是数据目录。
    • 如果将表空间文件移动到其他操作系统上会引入跨平台复制,则数据库管理员有责任确保正确复制包含特定于平台的目录的DDL语句。允许指定目录的语句包括CREATE TABLE ... DATA DIRECTORYCREATE TABLESPACE
    • 使用绝对路径或在数据目录之外的位置创建的每表文件和常规表空间文件的目录应添加到innodb_directories参数值。否则,InnoDB将无法在恢复过程中找到这些文件。CREATE TABLE ... DATA DIRECTORYCREATE TABLESPACE允许创建具有绝对路径的表空间文件。CREATE TABLESPACE还允许表空间文件目录相对于数据目录。要参见表空间文件位置,请查询INFORMATION_SCHEMA.FILES表:

      mysql> SELECT TABLESPACE_NAME, FILE_NAME FROM INFORMATION_SCHEMA.FILES \G
      
    • CREATE TABLESPACE要求目标目录存在并且是已知的InnoDB。已知目录包括该innodb_directories选项隐式和显式定义的目录。