文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  在伺服器離線時移動表空間檔案

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

    若要檢視表格空間檔案位置,請查詢資訊綱要 FILES 表格。

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