文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  使用 NDB Cluster 管理用戶端建立備份

25.6.8.2 使用 NDB Cluster 管理用戶端建立備份

在開始備份之前,請確保叢集已正確設定以執行備份。(請參閱章節 25.6.8.3, “NDB Cluster 備份的設定”。)

START BACKUP 命令用於建立備份,其語法如下所示

START BACKUP [backup_id]
    [encryption_option]
    [wait_option]
    [snapshot_option]

encryption_option:
ENCRYPT [PASSWORD=password]

password:
{'password_string' | "password_string"}

wait_option:
WAIT {STARTED | COMPLETED} | NOWAIT

snapshot_option:
SNAPSHOTSTART | SNAPSHOTEND

連續備份會自動依序識別,因此 backup_id(大於或等於 1 的整數)為選用;如果省略,則會使用下一個可用值。如果使用現有的 backup_id 值,備份會失敗,並出現錯誤 備份失敗:檔案已存在。如果使用,backup_id 必須緊接在 START BACKUP 關鍵字之後,才能使用其他選項。

START BACKUP 支援使用 ENCRYPT PASSWORD=password 建立加密備份。password 必須滿足以下所有要求

  • 使用任何可列印的 ASCII 字元,但 !'"$%\^ 除外

  • 長度不得超過 256 個字元

  • 以單引號或雙引號括住

當使用 ENCRYPT PASSWORD='password' 時,每個資料節點寫入的備份資料記錄和日誌檔案會使用從使用者提供的 password 和隨機產生的 salt 衍生的金鑰進行加密,並使用金鑰衍生函式 (KDF),該函式使用 PBKDF2-SHA256 演算法為該檔案產生對稱加密金鑰。此函式的形式如下所示

key = KDF(random_salt, password)

然後使用產生的金鑰,使用 AES 256 CBC inline 加密備份資料,並使用對稱加密來加密備份檔案集(使用產生的金鑰)。

注意

NDB Cluster 絕不儲存使用者提供的密碼或產生的加密金鑰。

可以從 encryption_option 中省略 PASSWORD 選項。在這種情況下,管理用戶端會提示使用者輸入密碼。

可以使用 PASSWORD 設定空密碼 (''""),但不建議這麼做。

可以使用以下任何命令來解密加密的備份

如需更多資訊,例如可能需要的其他選項,請參閱這些程式的說明。

可以使用 wait_option 來判斷在發出 START BACKUP 命令後,控制權何時返回給管理用戶端,如下列表所示

  • 如果指定了 NOWAIT,管理用戶端會立即顯示提示,如此處所示

    ndb_mgm> START BACKUP NOWAIT
    ndb_mgm>

    在這種情況下,即使管理用戶端從備份程序列印進度資訊時,也可以使用它。

  • 使用 WAIT STARTED,管理用戶端會等到備份開始後,才會將控制權返回給使用者,如此處所示

    ndb_mgm> START BACKUP WAIT STARTED
    Waiting for started, this may take several minutes
    Node 2: Backup 3 started from node 1
    ndb_mgm>
  • WAIT COMPLETED 會讓管理用戶端等到備份程序完成後,才會將控制權返回給使用者。

WAIT COMPLETED 為預設值。

可以使用 snapshot_option 來判斷備份是否符合發出 START BACKUP 時的叢集狀態,或完成時的狀態。SNAPSHOTSTART 會讓備份符合備份開始時的叢集狀態;SNAPSHOTEND 會讓備份反映備份完成時的叢集狀態。SNAPSHOTEND 為預設值,且符合先前 NDB Cluster 版本中的行為。

注意

如果您將 SNAPSHOTSTART 選項與 START BACKUP 一起使用,且啟用 CompressedBackup 參數,則只會壓縮資料和控制檔案,不會壓縮日誌檔案。

如果同時使用 wait_optionsnapshot_option,則可以按任何順序指定它們。例如,假設沒有現有的備份 ID 為 4,則以下所有命令均有效

START BACKUP WAIT STARTED SNAPSHOTSTART
START BACKUP SNAPSHOTSTART WAIT STARTED
START BACKUP 4 WAIT COMPLETED SNAPSHOTSTART
START BACKUP SNAPSHOTEND WAIT COMPLETED
START BACKUP 4 NOWAIT SNAPSHOTSTART

建立備份的程序包括以下步驟

  1. 啟動管理用戶端 (ndb_mgm),如果尚未執行。

  2. 執行 START BACKUP 命令。這會產生幾行輸出,指示備份進度,如下所示

    ndb_mgm> START BACKUP
    Waiting for completed, this may take several minutes
    Node 2: Backup 1 started from node 1
    Node 2: Backup 1 started from node 1 completed
     StartGCP: 177 StopGCP: 180
     #Records: 7362 #LogRecords: 0
     Data: 453648 bytes Log: 0 bytes
    ndb_mgm>
  3. 當備份開始時,管理用戶端會顯示此訊息

    Backup backup_id started from node node_id

    backup_id 是此特定備份的唯一識別碼。如果未以其他方式設定,此識別碼會儲存在叢集日誌中。node_id 是與資料節點協調備份的管理伺服器的識別碼。在備份程序的此時,叢集已收到並處理備份請求。這並不表示備份已完成。此陳述式的範例如下所示

    Node 2: Backup 1 started from node 1
  4. 管理用戶端會顯示類似這樣的訊息,表示備份已開始

    Backup backup_id started from node node_id completed

    與備份已開始的通知一樣,backup_id 是此特定備份的唯一識別碼,而 node_id 是與資料節點協調備份的管理伺服器的節點 ID。此輸出會伴隨其他資訊,包括相關的全域檢查點、備份的記錄數以及資料大小,如下所示

    Node 2: Backup 1 started from node 1 completed
     StartGCP: 177 StopGCP: 180
     #Records: 7362 #LogRecords: 0
     Data: 453648 bytes Log: 0 bytes

也可以透過在系統 Shell 中叫用 ndb_mgm 並搭配 -e--execute 選項來執行備份,如此範例所示

$> ndb_mgm -e "START BACKUP 6 WAIT COMPLETED SNAPSHOTSTART"

以此方式使用 START BACKUP 時,您必須指定備份 ID。

預設情況下,叢集備份會在每個資料節點上的 DataDirBACKUP 子目錄中建立。可以使用 BackupDataDir 組態參數,個別為一個或多個資料節點,或為 config.ini 檔案中的所有叢集資料節點覆寫此設定。使用指定 backup_id 建立的備份檔案會儲存在備份目錄中名為 BACKUP-backup_id 的子目錄中。

取消備份。  若要取消或中止已在進行中的備份,請執行下列步驟

  1. 啟動管理用戶端。

  2. 執行此命令

    ndb_mgm> ABORT BACKUP backup_id

    數字 backup_id 是在備份開始時管理用戶端的響應中包含的備份識別碼 (在訊息 從節點 management_node_id 開始的備份 backup_id)。

  3. 管理用戶端會使用 已訂購取消備份 backup_id 來確認中止請求。

    注意

    此時,管理用戶端尚未收到來自叢集資料節點對此請求的回應,且尚未實際中止備份。

  4. 在中止備份後,管理用戶端會以類似如下的方式報告此事實

    Node 1: Backup 3 started from 5 has been aborted.
      Error: 1321 - Backup aborted by user request: Permanent error: User defined error
    Node 3: Backup 3 started from 5 has been aborted.
      Error: 1323 - 1323: Permanent error: Internal error
    Node 2: Backup 3 started from 5 has been aborted.
      Error: 1323 - 1323: Permanent error: Internal error
    Node 4: Backup 3 started from 5 has been aborted.
      Error: 1323 - 1323: Permanent error: Internal error

    在此範例中,我們展示了一個具有 4 個資料節點的叢集範例輸出,其中要中止的備份序號為 3,且叢集管理客戶端連線的管理節點的節點 ID 為 5。第一個完成中止備份的節點報告說,中止的原因是使用者要求。(其餘節點報告說,備份由於未指定的內部錯誤而中止。)

    注意

    叢集節點不保證會以任何特定順序回應 ABORT BACKUP 命令。

    訊息 Backup backup_id started from node management_node_id has been aborted 表示備份已終止,且所有與此備份相關的檔案已從叢集檔案系統中移除。

也可以使用此命令,從系統 Shell 中中止正在進行的備份

$> ndb_mgm -e "ABORT BACKUP backup_id"
注意

如果發出 ABORT BACKUP 時沒有具有 ID backup_id 的備份正在執行,則管理客戶端不會做出回應,叢集日誌中也不會指出已傳送無效的中止命令。