開始備份之前,請確認叢集已正確配置以執行備份。(請參閱第 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
設定空密碼 (''
或 ""
),但不建議這樣做。
可以使用以下任何命令解密加密備份
ndbxfrm
--decrypt-password=
password
input_file
output_file
ndb_print_backup_file
-P
password
file_name
ndbxfrm
--decrypt-password-from-stdin
input_file
output_file
ndb_print_backup_file
--backup-password-from-stdin
file_name
ndb_mgm
--backup-password-from-stdin
--execute "START BACKUP ..."
請參閱這些程式的說明,以取得更多資訊,例如可能需要的其他選項。
可以使用 wait_option
來決定在發出 START BACKUP
命令後,何時將控制權返回管理客戶端,如下所示
WAIT COMPLETED
是預設值。
可以使用 snapshot_option
來決定備份是否符合發出 START BACKUP
時的叢集狀態,還是完成時的叢集狀態。SNAPSHOTSTART
會使備份符合備份開始時的叢集狀態;SNAPSHOTEND
會使備份反映備份完成時的叢集狀態。SNAPSHOTEND
是預設值,並且符合先前 NDB Cluster 版本中的行為。
如果您將 SNAPSHOTSTART
選項與 START BACKUP
一起使用,並且啟用了 CompressedBackup
參數,則只會壓縮資料和控制檔案,而不會壓縮記錄檔。
如果同時使用了 wait_option
和 snapshot_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
建立備份的程序包括以下步驟
啟動管理客戶端 (ndb_mgm),如果它尚未執行。
執行
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>
Backup backup_id started from node node_id
backup_id
是此特定備份的唯一識別碼。此識別碼會儲存在叢集記錄檔中,如果沒有其他設定。node_id
是與資料節點協調備份的管理伺服器的識別碼。在備份程序的這一點,叢集已收到並處理備份請求。這並不表示備份已完成。此陳述式的範例如下所示Node 2: Backup 1 started from node 1
管理客戶端會顯示類似此訊息的消息,表示備份已開始
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。
叢集備份預設會建立在每個資料節點的 DataDir
的 BACKUP
子目錄中。可以使用 BackupDataDir
配置參數,針對一個或多個資料節點個別覆寫此設定,或針對 config.ini
檔案中的所有叢集資料節點覆寫此設定。針對具有給定 backup_id
的備份建立的備份檔案會儲存在備份目錄中名為 BACKUP-
的子目錄中。backup_id
取消備份。 若要取消或中止已在進行中的備份,請執行下列步驟:
啟動管理用戶端。
執行此命令:
ndb_mgm> ABORT BACKUP backup_id
數字
backup_id
是備份的識別碼,該識別碼包含在管理用戶端啟動備份時的回應中(訊息為備份
)。backup_id
從節點management_node_id
開始管理用戶端會以
已下令中止備份
來確認中止請求。backup_id
注意此時,管理用戶端尚未收到叢集資料節點對此請求的回應,並且備份實際上尚未中止。
備份中止後,管理用戶端會以類似於此處所示的方式報告此事實:
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
的備份正在執行,則管理用戶端不會做出回應,叢集日誌中也不會指示發送了無效的中止命令。