文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
手冊頁 (TGZ) - 258.2Kb
手冊頁 (Zip) - 365.3Kb
資訊 (Gzip) - 4.0Mb
資訊 (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 設定。

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 知道新的目錄位置。

  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 無法在復原期間找到這些檔案。有關相關資訊,請參閱 當機復原期間的表空間探索

    要檢視表空間檔案位置,請查詢 Information Schema 的 FILES 表格

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