文件首頁
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 參考手冊  /  ...  /  使用 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 failed: file already exists。如果使用,backup_id 必須緊接在 START BACKUP 關鍵字之後,並且在任何其他選項使用之前。

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

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

  • 長度不超過 256 個字元

  • 以單引號或雙引號括住

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

key = KDF(random_salt, password)

如此產生的金鑰隨後用於使用 AES 256 CBC 行內加密備份資料,並使用對稱加密來加密備份檔案集(使用產生的金鑰)。

注意

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

也可以透過叫用具有 -e--execute 選項的 ndb_mgm,從系統殼層執行備份,如本範例所示

$> 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 是備份的識別碼,該識別碼包含在管理用戶端啟動備份時的回應中(訊息為 備份 backup_id 從節點 management_node_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_id 從節點 management_node_id 開始已中止 訊息表示備份已終止,並且與此備份相關的所有檔案已從叢集檔案系統中移除。

也可以使用以下命令從系統 shell 中止正在進行中的備份:

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

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