文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 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_restore — 還原 NDB 叢集備份

25.5.23 ndb_restore — 還原 NDB 叢集備份

NDB 叢集還原程式實作為獨立的命令列工具 ndb_restore,通常可以在 MySQL 的 bin 目錄中找到。此程式會讀取備份建立的檔案,並將儲存的資訊插入資料庫。

對於由 START BACKUP 命令建立的每個備份檔案,都必須執行一次 ndb_restore(請參閱 第 25.6.8.2 節,「使用 NDB 叢集管理用戶端建立備份」)。這等於建立備份時叢集中資料節點的數量。

注意

除非您平行還原多個資料節點,否則在使用 ndb_restore 之前,建議叢集在單一使用者模式下執行。如需詳細資訊,請參閱第 25.6.6 節,「NDB 叢集單一使用者模式」

下表顯示可以與 ndb_restore 一起使用的選項。其他說明如下表所示。

  • --allow-pk-changes

    命令列格式 --allow-pk-changes[=0|1]
    類型 整數
    預設值 0
    最小值 0
    最大值 1

    當此選項設定為 1 時,ndb_restore 允許資料表定義中的主鍵與備份中相同資料表的主鍵不同。當在一個或多個資料表上具有主鍵變更的不同綱要版本之間進行備份和還原時,這可能是理想的,而且使用 ndb_restore 執行還原操作似乎比在還原資料表綱要和資料後發出許多 ALTER TABLE 陳述式更簡單或更有效率。

    --allow-pk-changes 支援下列主鍵定義變更

    • 延伸主鍵:備份中資料表綱要中存在的非 Null 欄會成為資料表在資料庫中的主鍵。

      重要

      當延伸資料表的主鍵時,任何成為主鍵一部分的欄在備份時都不得更新;ndb_restore 發現的任何此類更新都會導致還原操作失敗,即使沒有發生值變更也是如此。在某些情況下,可以使用 --ignore-extended-pk-updates 選項覆寫此行為;如需詳細資訊,請參閱此選項的說明。

    • 縮減主鍵 (1):已在備份綱要中資料表的主鍵一部分的欄不再是主鍵的一部分,但保留在資料表中。

    • 縮減主鍵 (2):已在備份綱要中資料表的主鍵一部分的欄從資料表中完全移除。

    這些差異可以與 ndb_restore 支援的其他綱要差異合併使用,包括需要使用暫存資料表的 blob 和文字欄的變更。

    以下列出使用主鍵綱要變更的一般案例中的基本步驟

    1. 使用 ndb_restore --restore-meta 還原資料表綱要

    2. 變更綱要為所需的綱要,或建立綱要

    3. 備份所需的綱要

    4. 使用上一步驟中的備份執行 ndb_restore --disable-indexes,以捨棄索引和限制

    5. 執行 ndb_restore --allow-pk-changes(可能與 --ignore-extended-pk-updates--disable-indexes 以及可能需要的其他選項一起使用)來還原所有資料

    6. 使用所需綱要建立的備份執行 ndb_restore --rebuild-indexes,以重建索引和限制

    當延伸主鍵時,ndb_restore 可能需要在還原操作期間使用暫時性的次要唯一索引,以將舊的主鍵對應到新的主鍵。只有在將備份日誌中的事件套用到具有延伸主鍵的資料表時,才會建立此類索引。此索引名為 NDB$RESTORE_PK_MAPPING,並在每個需要它的資料表上建立;如果有必要,可以在平行執行的多個 ndb_restore 執行個體之間共用。(在還原過程結束時執行 ndb_restore --rebuild-indexes 會導致捨棄此索引。)

  • --append

    命令列格式 --append

    當與 --tab--print-data 選項一起使用時,這會導致將資料附加到任何具有相同名稱的現有檔案中。

  • --backup-path=dir_name

    命令列格式 --backup-path=路徑
    類型 目錄名稱
    預設值 ./

    需要備份目錄的路徑;此路徑使用 --backup-path 選項提供給 ndb_restore,而且必須包含對應於要還原的備份 ID 備份的子目錄。例如,如果資料節點的 DataDir/var/lib/mysql-cluster,則備份目錄為 /var/lib/mysql-cluster/BACKUP,而 ID 為 3 的備份的備份檔案可以在 /var/lib/mysql-cluster/BACKUP/BACKUP-3 中找到。該路徑可以是絕對路徑或相對於 ndb_restore 可執行檔所在目錄的相對路徑,並且可以選擇性地加上 backup-path= 前置詞。

    備份可以還原至與建立時配置不同的資料庫。例如,假設一個備份 ID 為 12 的備份,是在具有節點 ID 23 的兩個儲存節點的叢集中建立的,現在要將其還原到具有四個節點的叢集。那麼必須執行兩次 ndb_restore—針對備份所在叢集中的每個儲存節點各執行一次。但是,ndb_restore 並非總是可以將從執行某個 MySQL 版本的叢集建立的備份,還原到執行不同 MySQL 版本的叢集。請參閱第 25.3.7 節「升級和降級 NDB 叢集」以取得更多資訊。

    重要

    無法使用舊版本的 ndb_restore 還原從較新版本的 NDB 叢集建立的備份。您可以將從較新版本的 MySQL 建立的備份還原到較舊的叢集,但是您必須使用來自較新 NDB 叢集版本的 ndb_restore 副本來執行此操作。

    例如,要將從執行 NDB 叢集 8.4.0 的叢集取得的叢集備份還原到執行 NDB 叢集 8.0.38 的叢集,您必須使用 NDB 叢集 8.0.38 發行版附帶的 ndb_restore

    為了更快速地還原,可以在有多個可用的叢集連線時平行還原資料。也就是說,當平行還原到多個節點時,您必須在叢集 config.ini 檔案中,為每個並行的 ndb_restore 處理程序提供一個 [api][mysqld] 區段。但是,資料檔案必須始終在記錄之前套用。

  • --backup-password=password

    命令列格式 --backup-password=password
    類型 字串
    預設值 [無]

    此選項指定在使用 --decrypt 選項解密加密備份時要使用的密碼。這必須是加密備份時使用的相同密碼。

    密碼長度必須為 1 到 256 個字元,並且必須以單引號或雙引號括住。它可以包含字元碼為 32、35、38、40-91、93、95 和 97-126 的任何 ASCII 字元;換句話說,它可以使用除 !'"$%\^ 之外的任何可列印的 ASCII 字元。

    可以省略密碼,在這種情況下,ndb_restore 會等待從 stdin 提供密碼,就像使用 --backup-password-from-stdin 時一樣。

  • --backup-password-from-stdin[=TRUE|FALSE]

    命令列格式 --backup-password-from-stdin

    當用來代替 --backup-password 時,此選項可以從系統 shell (stdin) 輸入備份密碼,類似於在不於命令列上提供密碼的情況下,使用 --password 時,以互動方式將密碼提供給 mysql 的方式。

  • --backupid=#-b

    命令列格式 --backupid=#
    類型 數值
    預設值

    此選項是必要的;它用於指定備份的 ID 或序號,並且與管理用戶端在備份完成時顯示的 備份 backup_id 已完成 訊息中顯示的數字相同。(請參閱第 25.6.8.2 節「使用 NDB 叢集管理用戶端建立備份」。)

    重要

    還原叢集備份時,您必須確定從具有相同備份 ID 的備份中還原所有資料節點。使用來自不同備份的檔案,充其量會導致將叢集還原到不一致的狀態,並且很可能完全失敗。

  • --character-sets-dir

    命令列格式 --character-sets-dir=路徑

    包含字元集的目錄。

  • --connect-c

    命令列格式 --connect=連線字串
    類型 字串
    預設值 localhost:1186

    --ndb-connectstring 的別名。

  • --connect-retries

    命令列格式 --connect-retries=#
    類型 整數
    預設值 12
    最小值 0
    最大值 12

    在放棄之前重試連線的次數。

  • --connect-retry-delay

    命令列格式 --connect-retry-delay=#
    類型 整數
    預設值 5
    最小值 0
    最大值 5

    嘗試連絡管理伺服器之間等待的秒數。

  • --connect-string

    命令列格式 --connect-string=連線字串
    類型 字串
    預設值 [無]

    --ndb-connectstring 相同。

  • --core-file

    命令列格式 --core-file

    在錯誤時寫入核心檔案;用於偵錯。

  • --decrypt

    命令列格式 --decrypt

    使用 --backup-password 選項提供的密碼解密加密的備份。

  • --defaults-extra-file

    命令列格式 --defaults-extra-file=路徑
    類型 字串
    預設值 [無]

    在讀取全域檔案之後,讀取給定的檔案。

  • --defaults-file

    命令列格式 --defaults-file=路徑
    類型 字串
    預設值 [無]

    僅從給定檔案讀取預設選項。

  • --defaults-group-suffix

    命令列格式 --defaults-group-suffix=字串
    類型 字串
    預設值 [無]

    也讀取具有 concat(group, suffix) 的群組。

  • --disable-indexes

    命令列格式 --disable-indexes

    在從原生 NDB 備份還原資料期間,停用索引的還原。之後,您可以使用 --rebuild-indexes,以多執行緒方式建立索引來一次還原所有資料表的索引,這應該比同時為非常大的資料表重建索引更快。

    此選項也會捨棄備份中指定的任何外部索引鍵。

    如果查詢未使用任何受影響的索引,MySQL 可以開啟找不到一個或多個索引的 NDB 資料表;否則,查詢會遭到拒絕,並出現 ER_NOT_KEYFILE 錯誤。在後一種情況下,您可以暫時執行如下的 ALTER TABLE 陳述式來解決問題

    ALTER TABLE tbl ALTER INDEX idx INVISIBLE;

    這會導致 MySQL 忽略資料表 tbl 上的索引 idx。如需更多資訊,請參閱主要索引鍵和索引,以及第 10.3.12 節「隱形索引」

  • --dont-ignore-systab-0-f

    命令列格式 --dont-ignore-systab-0

    通常,在還原資料表資料和中繼資料時,ndb_restore 會忽略備份中存在的 NDB 系統資料表的副本。--dont-ignore-systab-0 會導致還原系統資料表。此選項僅適用於實驗和開發用途,不建議在生產環境中使用

  • --exclude-databases=db-list

    命令列格式 --exclude-databases=清單
    類型 字串
    預設值

    一個或多個不應還原之資料庫的逗號分隔清單。

    此選項通常與 --exclude-tables 結合使用;如需更多資訊和範例,請參閱該選項的說明。

  • --exclude-intermediate-sql-tables[=TRUE|FALSE]

    命令列格式 --exclude-intermediate-sql-tables[=TRUE|FALSE]
    類型 布林值
    預設值 真 (TRUE)

    當執行複製 ALTER TABLE 操作時,mysqld 會建立中間資料表(其名稱會加上 #sql- 前綴)。當設定為 TRUE 時,--exclude-intermediate-sql-tables 選項會阻止 ndb_restore 還原這些可能在這些操作中遺留下來的資料表。此選項預設為 TRUE

  • --exclude-missing-columns

    命令列格式 --exclude-missing-columns

    可以使用此選項僅還原選定的資料表欄位,這會導致 ndb_restore 忽略要還原的資料表中,與備份中的資料表版本相比缺少的任何欄位。此選項適用於所有要還原的資料表。如果您希望僅將此選項應用於選定的資料表或資料庫,您可以將其與本節其他地方描述的一個或多個 --include-*--exclude-* 選項結合使用,然後使用一組互補的選項將資料還原到其餘的資料表。

  • --exclude-missing-tables

    命令列格式 --exclude-missing-tables

    可以使用此選項僅還原選定的資料表,這會導致 ndb_restore 忽略備份中在目標資料庫中找不到的任何資料表。

  • --exclude-tables=table-list

    命令列格式 --exclude-tables=清單
    類型 字串
    預設值

    要排除的一個或多個資料表清單;每個資料表參考必須包含資料庫名稱。通常與 --exclude-databases 一起使用。

    當使用 --exclude-databases--exclude-tables 時,只會排除選項中命名的那些資料庫或資料表;所有其他資料庫和資料表都會由 ndb_restore 還原。

    此表格顯示了使用 --exclude-* 選項的 ndb_restore 的數個呼叫 (為了清楚起見,省略了其他可能需要的選項),以及這些選項在從 NDB Cluster 備份還原時的效果

    表 25.23 使用 --exclude-* 選項的 ndb_restore 的數個呼叫,以及這些選項在從 NDB Cluster 備份還原時的效果。

    選項 結果
    --exclude-databases=db1 會還原 db1 以外的所有資料庫中的所有資料表;db1 中不會還原任何資料表
    --exclude-databases=db1,db2 (或 --exclude-databases=db1 --exclude-databases=db2) 會還原 db1db2 以外的所有資料庫中的所有資料表;db1db2 中不會還原任何資料表
    --exclude-tables=db1.t1 會還原資料庫 db1t1 以外的所有資料表;會還原 db1 中的所有其他資料表;會還原所有其他資料庫中的所有資料表
    --exclude-tables=db1.t2,db2.t1 (或 --exclude-tables=db1.t2 --exclude-tables=db2.t1) 會還原資料庫 db1 中除了 t2 之外的所有資料表,以及資料庫 db2 中除了資料表 t1 之外的所有資料表;db1db2 中不會還原其他資料表;會還原所有其他資料庫中的所有資料表

    您可以一起使用這兩個選項。例如,以下程式碼會導致還原所有資料庫中除了資料庫 db1db2 以及資料庫 db3 中的資料表 t1t2 之外的所有資料表

    $> ndb_restore [...] --exclude-databases=db1,db2 --exclude-tables=db3.t1,db3.t2

    (再次說明,為了清楚起見,我們從剛剛顯示的範例中省略了其他可能需要的選項。)

    您可以一起使用 --include-*--exclude-* 選項,但須遵守以下規則

    • 所有 --include-*--exclude-* 選項的動作都是累積的。

    • 所有 --include-*--exclude-* 選項都會按照傳遞給 ndb_restore 的順序,由右至左進行評估。

    • 如果選項發生衝突,則第一個(最右邊)選項優先。換句話說,第一個(從右至左)與給定資料庫或資料表符合的選項會「勝出」。

    例如,以下選項集會導致 ndb_restore 還原資料庫 db1 中的所有資料表,除了 db1.t1 之外,同時不會還原任何其他資料庫中的其他資料表

    --include-databases=db1 --exclude-tables=db1.t1

    但是,反轉剛剛給出的選項順序只會導致還原資料庫 db1 中的所有資料表(包括 db1.t1,但不包括任何其他資料庫中的資料表),因為最右邊的 --include-databases 選項是針對資料庫 db1 的第一個符合項,因此優先於任何其他符合 db1db1 中任何資料表的選項

    --exclude-tables=db1.t1 --include-databases=db1
  • --fields-enclosed-by=char

    命令列格式 --fields-enclosed-by=字元
    類型 字串
    預設值

    每個欄位值都會以傳遞給此選項的字串括住 (不論資料類型為何;請參閱 --fields-optionally-enclosed-by 的說明)。

  • --fields-optionally-enclosed-by

    命令列格式 --fields-optionally-enclosed-by
    類型 字串
    預設值

    傳遞給此選項的字串會用來括住包含字元資料的欄位值 (例如 CHARVARCHARBINARYTEXTENUM)。

  • --fields-terminated-by=char

    命令列格式 --fields-terminated-by=字元
    類型 字串
    預設值 \t (跳格)

    傳遞給此選項的字串會用來分隔欄位值。預設值為跳格字元 (\t)。

  • --help

    命令列格式 --help

    顯示說明文字並結束。

  • --hex

    命令列格式 --hex

    如果使用此選項,則所有二進位值都會以十六進位格式輸出。

  • --ignore-extended-pk-updates

    命令列格式 --ignore-extended-pk-updates[=0|1]
    類型 整數
    預設值 0
    最小值 0
    最大值 1

    當使用 --allow-pk-changes 時,在進行備份時,屬於資料表主索引鍵一部分的欄位不得更新;這些欄位從將值插入它們時開始到包含這些值的列刪除為止,應保持相同的值。如果 ndb_restore 在還原備份時遇到對這些欄位的更新,則還原會失敗。由於某些應用程式可能會在更新列時設定所有欄位的值,即使某些欄位值未變更,備份也可能會包含看起來會更新實際上未修改欄位的記錄事件。在這種情況下,您可以將 --ignore-extended-pk-updates 設定為 1,強制 ndb_restore 忽略這類更新。

    重要

    當導致忽略這些更新時,使用者有責任確保不會更新任何屬於主索引鍵一部分的欄位的值。

    如需更多資訊,請參閱 --allow-pk-changes 的說明。

  • --include-databases=db-list

    命令列格式 --include-databases=清單
    類型 字串
    預設值

    要還原的一個或多個資料庫的逗號分隔清單。通常與 --include-tables 一起使用;如需更多資訊和範例,請參閱該選項的說明。

  • --include-stored-grants

    命令列格式 --include-stored-grants

    ndb_restore 預設不會將共用使用者和授權 (請參閱 章節 25.6.13,「權限同步處理和 NDB_STORED_USER」) 還原到 ndb_sql_metadata 資料表。指定此選項會使其執行此動作。

  • --include-tables=table-list

    命令列格式 --include-tables=清單
    類型 字串
    預設值

    要還原的資料表逗號分隔清單;每個資料表參考必須包含資料庫名稱。

    當使用 --include-databases--include-tables 時,只會還原選項中命名的那些資料庫或資料表;ndb_restore 會排除所有其他資料庫和資料表,因此不會還原。

    下表顯示使用 --include-* 選項(為了清楚起見,省略了其他可能需要的選項)多次調用 ndb_restore 的情況,以及這些選項對於從 NDB 叢集備份還原的影響。

    表 25.24 使用 --include-* 選項多次調用 ndb_restore,及其對從 NDB 叢集備份還原的影響。

    選項 結果
    --include-databases=db1 僅還原資料庫 db1 中的資料表;忽略所有其他資料庫中的所有資料表
    --include-databases=db1,db2(或 --include-databases=db1 --include-databases=db2 僅還原資料庫 db1db2 中的資料表;忽略所有其他資料庫中的所有資料表
    --include-tables=db1.t1 僅還原資料庫 db1 中的資料表 t1;不還原 db1 或任何其他資料庫中的其他資料表
    --include-tables=db1.t2,db2.t1(或 --include-tables=db1.t2 --include-tables=db2.t1 僅還原資料庫 db1 中的資料表 t2 和資料庫 db2 中的資料表 t1;不還原 db1db2 或任何其他資料庫中的其他資料表

    您也可以將這兩個選項一起使用。例如,以下操作會還原資料庫 db1db2 中的所有資料表,以及資料庫 db3 中的資料表 t1t2(不還原其他資料庫或資料表)

    $> ndb_restore [...] --include-databases=db1,db2 --include-tables=db3.t1,db3.t2

    (再次強調,我們在剛才展示的範例中省略了其他可能需要的選項。)

    也可以只還原選定的資料庫,或只還原單一資料庫中選定的資料表,而不使用任何 --include-*(或 --exclude-*)選項,方法是使用這裡顯示的語法

    ndb_restore other_options db_name,[db_name[,...] | tbl_name[,tbl_name][,...]]

    換句話說,您可以指定還原以下其中一項

    • 一個或多個資料庫中的所有資料表

    • 單一資料庫中的一個或多個資料表

  • --lines-terminated-by=char

    命令列格式 --lines-terminated-by=char
    類型 字串
    預設值 \n (換行符號)

    指定用於結束每一行輸出的字串。預設值為換行符號 (\n)。

  • --login-path

    命令列格式 --login-path=path
    類型 字串
    預設值 [無]

    從登入檔案讀取指定的路徑。

  • --no-login-paths

    命令列格式 --no-login-paths

    略過從登入路徑檔案讀取選項。

  • --lossy-conversions, -L

    命令列格式 --lossy-conversions

    此選項旨在補充 --promote-attributes 選項。使用 --lossy-conversions 允許在從備份還原資料時,有損地轉換欄位值(類型降級或符號變更)。在某些例外情況下,管理降級的規則與 MySQL 複寫相同;請參閱第 19.5.1.9.2 節「複寫具有不同資料類型的欄位」,以取得目前屬性降級支援的特定類型轉換的資訊。

    此選項也允許將 NULL 欄位還原為 NOT NULL。此欄位不得包含任何 NULL 項目;否則 ndb_restore 會停止並顯示錯誤。

    ndb_restore 會針對它在有損轉換期間執行的任何資料截斷,每個屬性和欄位報告一次。

  • --no-binlog

    命令列格式 --no-binlog

    此選項會防止任何已連線的 SQL 節點將 ndb_restore 還原的資料寫入其二進位記錄檔。

  • --no-restore-disk-objects, -d

    命令列格式 --no-restore-disk-objects

    此選項會停止 ndb_restore 還原任何 NDB 叢集磁碟資料物件,例如表格空間和記錄檔群組;請參閱第 25.6.11 節「NDB 叢集磁碟資料表格」,以取得關於這些物件的更多資訊。

  • --no-upgrade, -u

    命令列格式 --no-upgrade

    當使用 ndb_restore 還原備份時,使用舊固定格式建立的 VARCHAR 欄位會調整大小並使用目前使用的可變寬度格式重新建立。可以透過指定 --no-upgrade 來覆寫此行為。

  • --ndb-connectstring

    命令列格式 --ndb-connectstring=connection_string
    類型 字串
    預設值 [無]

    設定連線字串以連線至 ndb_mgmd。語法:[nodeid=id;][host=]hostname[:port]。覆寫 NDB_CONNECTSTRINGmy.cnf 中的項目。

  • --ndb-mgm-tls

    命令列格式 --ndb-mgm-tls=level
    類型 列舉
    預設值 relaxed
    有效值

    relaxed

    strict

    設定連線至管理伺服器所需的 TLS 支援層級;為 relaxedstrict 其中之一。relaxed(預設值)表示會嘗試 TLS 連線,但不要求成功;strict 表示需要 TLS 才能連線。

  • --ndb-mgmd-host

    命令列格式 --ndb-mgmd-host=connection_string
    類型 字串
    預設值 [無]

    --ndb-connectstring 相同。

  • --ndb-nodegroup-map=map, -z

    命令列格式 --ndb-nodegroup-map=map

    系統會忽略為此選項設定的任何值,並且該選項本身不做任何事。

  • --ndb-nodeid

    命令列格式 --ndb-nodeid=#
    類型 整數
    預設值 [無]

    設定此節點的節點 ID,覆寫 --ndb-connectstring 設定的任何 ID。

  • --ndb-optimized-node-selection

    命令列格式 --ndb-optimized-node-selection

    啟用交易節點選取的最佳化。預設為啟用;使用 --skip-ndb-optimized-node-selection 來停用。

  • --ndb-tls-search-path

    命令列格式 --ndb-tls-search-path=list
    類型 路徑名稱
    預設值 (Unix) $HOME/ndb-tls
    預設值 (Windows) $HOMEDIR/ndb-tls

    指定要搜尋 CA 檔案的目錄清單。在 Unix 平台上,目錄名稱以冒號 (:) 分隔;在 Windows 系統上,分號字元 (;) 用作分隔符號。目錄參照可以是相對的或絕對的;它可以包含一個或多個環境變數,每個變數都以附加的錢字號 ($) 表示,並在使用前展開。

    搜尋從最左邊命名的目錄開始,並從左到右繼續,直到找到檔案。空字串表示空搜尋路徑,這會導致所有搜尋失敗。由單一點 (.) 組成的字串表示搜尋路徑僅限於目前的工作目錄。

    如果未提供搜尋路徑,則會使用編譯的預設值。此值取決於所使用的平台:在 Windows 上,此值為 \ndb-tls;在其他平台(包括 Linux)上,此值為 $HOME/ndb-tls。可以使用 -DWITH_NDB_TLS_SEARCH_PATH 編譯 NDB 叢集來覆寫此值。

  • --no-defaults

    命令列格式 --no-defaults

    不要從登入檔案以外的任何選項檔案讀取預設選項。

  • --nodeid=#, -n

    命令列格式 --nodeid=#
    類型 數值
    預設值

    指定備份所在的資料節點的節點 ID;為必要選項。

    當還原到資料節點數與建立備份的叢集不同的叢集時,此資訊有助於識別要還原到指定節點的正確檔案集。(在這種情況下,通常需要將多個檔案還原到單一資料節點。)請參閱還原到不同數量的資料節點,以取得其他資訊和範例。

  • --num-slices=#

    命令列格式 --num-slices=#
    類型 整數
    預設值 1
    最小值 1
    最大值 1024

    當以切片方式還原備份時,此選項設定將備份分割成的切片數量。這允許 ndb_restore 的多個實例平行還原不相交的子集,可能減少執行還原操作所需的時間。

    一個切片是給定備份中資料的子集;也就是說,它是具有相同切片 ID 的一組片段,使用 --slice-id 選項指定。這兩個選項必須始終一起使用,且 --slice-id 設定的值必須始終小於切片數量。

    ndb_restore 會遇到片段並為每個片段分配一個片段計數器。當以切片方式還原時,會為每個片段分配一個切片 ID;此切片 ID 的範圍從 0 到小於切片數量的 1。對於不是 BLOB 表的表格,特定片段所屬的切片是使用此處顯示的公式確定的。

    [slice_ID] = [fragment_counter] % [number_of_slices]

    對於 BLOB 表格,不使用片段計數器;而是使用片段編號,以及 BLOB 表格的主表格 ID(回想一下,NDB 在內部將 BLOB 值儲存在單獨的表格中)。在這種情況下,給定片段的切片 ID 計算方式如下所示

    [slice_ID] =
    ([main_table_ID] + [fragment_ID]) % [number_of_slices]

    因此,以 N 個切片還原表示執行 Nndb_restore 實例,全部都帶有 --num-slices=N(以及任何其他必要的選項),以及每個分別帶有 --slice-id=1--slice-id=2--slice-id=3,依此類推到 slice-id=N-1

    範例。假設您想要將名為 BACKUP-1 的備份還原到具有節點 ID 為 1、2、3 和 4 的四個資料節點的叢集中,該備份位於每個資料節點上的節點檔案系統上的預設目錄 /var/lib/mysql-cluster/BACKUP/BACKUP-3 中。若要使用五個切片執行此操作,請執行以下清單中顯示的命令集。

    1. 使用 ndb_restore 還原叢集元資料,如下所示

      $> ndb_restore -b 1 -n 1 -m --disable-indexes --backup-path=/home/ndbuser/backups
    2. 如下所示,調用 ndb_restore 將叢集資料還原到資料節點

      $> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=0 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=1 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=2 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=3 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=4 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      
      $> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=0 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=1 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=2 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=3 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=4 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      
      $> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=0 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=1 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=2 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=3 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=4 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      
      $> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=0 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=1 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=2 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=3 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=4 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1

      只要有足夠的叢集連線插槽,此步驟中剛顯示的所有命令都可以平行執行(請參閱 --backup-path 選項的說明)。

    3. 照常還原索引,如下所示

      $> ndb_restore -b 1 -n 1 --rebuild-indexes --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
    4. 最後,使用此處顯示的命令還原紀元

      $> ndb_restore -b 1 -n 1 --restore-epoch --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1

    您應該只使用切片來還原叢集資料;還原元資料、索引或紀元資訊時,不需要使用 --num-slices--slice-id。如果將其中一個或兩個選項與控制這些還原的 ndb_restore 選項一起使用,程式會忽略它們。

    使用 --parallelism 選項對還原速度的影響,與使用 ndb_restore 多個實例進行切片或平行還原所產生的影響無關(--parallelism 指定 單個 ndb_restore 執行緒執行的平行交易數),但它可以與其中一個或兩個選項一起使用。您應該注意,增加 --parallelism 會導致 ndb_restore 對叢集施加更大的負載;如果系統可以處理,還原應該會更快完成。

    --num-slices 的值不直接依賴於與硬體相關的值,例如 CPU 或 CPU 核心數、RAM 容量等等,也不依賴於 LDM 的數量。

    在同一個還原作業中,可以在不同的資料節點上使用此選項的不同值;這樣做本身不應產生任何不良影響。

  • --parallelism=#-p

    命令列格式 --parallelism=#
    類型 數值
    預設值 128
    最小值 1
    最大值 1024

    ndb_restore 使用單列交易來同時套用許多列。此參數決定 ndb_restore 實例嘗試使用的平行交易(同時處理的列)數量。預設值為 128;最小值為 1,最大值為 1024。

    執行插入的工作會在所涉及的資料節點中的執行緒之間平行處理。此機制用於從 .Data 檔案還原大量資料,也就是資料的模糊快照;它不適用於建立或重建索引。變更記錄會循序套用;索引的刪除和建立是 DDL 操作,並單獨處理。還原用戶端端沒有執行緒層級的平行處理。

  • --preserve-trailing-spaces-P

    命令列格式 --preserve-trailing-spaces

    當將固定寬度的字元資料類型升級為其可變寬度等效類型時(也就是,當將 CHAR 資料行值升級為 VARCHAR,或將 BINARY 資料行值升級為 VARBINARY 時),保留尾隨空格。否則,當將尾隨空格插入新資料行時,會從這些資料行值中捨棄。

    注意

    雖然您可以將 CHAR 資料行升級為 VARCHAR,並將 BINARY 資料行升級為 VARBINARY,但您無法將 VARCHAR 資料行升級為 CHAR,或將 VARBINARY 資料行升級為 BINARY

  • --print

    命令列格式 --print

    使 ndb_restore 將所有資料、元資料和記錄輸出到 stdout。相當於同時使用 --print-data--print-meta--print-log 選項。

    注意

    使用 --print 或任何 --print_* 選項實際上是在執行試執行。包含一個或多個這些選項會將任何輸出重新導向至 stdout;在這種情況下,ndb_restore 不會嘗試將資料或元資料還原到 NDB 叢集。

  • --print-data

    命令列格式 --print-data

    使 ndb_restore 將其輸出導向至 stdout。通常與 --tab--fields-enclosed-by--fields-optionally-enclosed-by--fields-terminated-by--hex--append 中的一個或多個選項一起使用。

    TEXTBLOB 資料行值始終會被截斷。此類值在輸出中會截斷為前 256 個位元組。目前使用 --print-data 時無法覆寫此設定。

  • --print-defaults

    命令列格式 --print-defaults

    列印程式引數列表並結束。

  • --print-log

    命令列格式 --print-log

    使 ndb_restore 將其日誌輸出至 stdout

  • --print-meta

    命令列格式 --print-meta

    將所有中繼資料列印至 stdout

  • print-sql-log

    命令列格式 --print-sql-log

    將 SQL 陳述式記錄到 stdout。使用此選項啟用;通常此行為為停用。此選項會在嘗試記錄之前檢查所有要還原的資料表是否已明確定義主索引鍵;僅由 NDB 實作的隱藏主索引鍵上的查詢無法轉換為有效的 SQL。

    此選項不適用於具有 BLOB 資料行的資料表。

  • --progress-frequency=N

    命令列格式 --progress-frequency=#
    類型 數值
    預設值 0
    最小值 0
    最大值 65535

    在備份進行期間,每隔 N 秒列印一次狀態報告。0 (預設值) 不會列印任何狀態報告。最大值為 65535。

  • --promote-attributes, -A

    命令列格式 --promote-attributes

    ndb_restore 支援有限的屬性提升,其方式與 MySQL 複寫所支援的方式大致相同;也就是說,從給定類型的資料行備份的資料通常可以還原到使用「較大、相似」類型的資料行。例如,來自 CHAR(20) 資料行的資料可以還原到宣告為 VARCHAR(20)VARCHAR(30)CHAR(30) 的資料行;來自 MEDIUMINT 資料行的資料可以還原到類型為 INTBIGINT 的資料行。如需屬性提升目前支援的類型轉換表格,請參閱第 19.5.1.9.2 節〈複寫具有不同資料類型的資料行〉

    此選項也可以將 NOT NULL 資料行還原為 NULL

    必須明確啟用 ndb_restore 的屬性提升,如下所示

    1. 準備要還原備份的資料表。ndb_restore 無法用與原始定義不同的定義來重新建立資料表;這表示您必須手動建立資料表,或者在還原資料表的中繼資料之後,但在還原資料之前,使用 ALTER TABLE 來變更您想要提升的資料行。

    2. 在還原資料表資料時,使用 --promote-attributes 選項 (簡短形式 -A) 叫用 ndb_restore。如果未使用此選項,則不會發生屬性提升;反之,還原作業會失敗並出現錯誤。

    在字元資料類型與 TEXTBLOB 之間轉換時,只能同時執行字元類型 (CHARVARCHAR) 與二進位類型 (BINARYVARBINARY) 之間的轉換。例如,您無法在同一次叫用 ndb_restore 中將 INT 資料行提升至 BIGINT,同時將 VARCHAR 資料行提升至 TEXT

    不支援使用不同字元集在 TEXT 資料行之間進行轉換,且明確禁止此操作。

    當使用 ndb_restore 將字元或二進位類型轉換為 TEXTBLOB 時,您可能會注意到它會建立並使用一個或多個名為 資料表名稱$ST節點 ID 的暫存資料表。這些資料表之後不需要,而且通常在成功還原後由 ndb_restore 刪除。

  • --rebuild-indexes

    命令列格式 --rebuild-indexes

    在還原原生 NDB 備份時,啟用多執行緒重建已排序的索引。使用此選項,ndb_restore 用於建置已排序索引的執行緒數由 BuildIndexThreads 資料節點組態參數和 LDM 數控制。

    只有在第一次執行 ndb_restore 時才需要使用此選項;這會導致重建所有已排序索引,而當還原後續節點時,不必再次使用 --rebuild-indexes。您應該在將新列插入資料庫之前使用此選項;否則,有可能會插入一列,而該列稍後在嘗試重建索引時會導致唯一約束違規。

    預設會使用 LDM 數來平行化建置已排序索引。可以使用 BuildIndexThreads 資料節點組態參數來加快在節點和系統重新啟動期間執行的離線索引建置;此參數對 ndb_restore 捨棄和重建索引沒有影響,後者是以線上方式執行。

    重建唯一索引會使用磁碟寫入頻寬進行重做記錄和本機檢查點。此頻寬不足可能導致重做緩衝區溢位或記錄溢位錯誤。在這種情況下,您可以再次執行 ndb_restore --rebuild-indexes;處理序會在發生錯誤的位置繼續。您也可以在遇到暫時性錯誤時執行此動作。您可以無限次重複執行 ndb_restore --rebuild-indexes;您可以藉由降低 --parallelism 的值來停止此類錯誤。如果問題是空間不足,您可以增加重做記錄的大小 (FragmentLogFileSize 節點組態參數),或者您可以加快執行 LCP 的速度 (MaxDiskWriteSpeed 和相關參數),以便更快釋放空間。

  • --remap-column=資料庫.資料表.資料行:函式:引數

    命令列格式 --remap-column=字串
    類型 字串
    預設值 [無]

    當與 --restore-data 一起使用時,此選項會將函式套用至指定資料行的值。引數字串中的值會列於此處

    • 資料庫:資料庫名稱,遵循 --rewrite-database 執行的任何重新命名。

    • 資料表:資料表名稱。

    • 資料行:要更新的資料行名稱。此資料行的類型必須為 INTBIGINT。此資料行也可以是但不一定要是 UNSIGNED

    • 函式:函式名稱;目前,唯一支援的名稱是 offset

    • args:提供給函式的引數。目前僅支援單一引數,即 offset 函式要加入的偏移量大小。支援負值。引數的大小不能超過欄位型別的有號變體大小;例如,如果 colINT 欄位,則傳遞給 offset 函式的引數允許範圍為 -21474836482147483647(請參閱第 13.1.2 節「整數型別 (精確值) - INTEGER、INT、SMALLINT、TINYINT、MEDIUMINT、BIGINT」)。

      如果將偏移值套用至欄位會導致溢位或下溢,則還原作業會失敗。例如,如果欄位是 BIGINT,而選項嘗試在欄位值為 4294967291 的資料列上套用偏移值 8,就會發生這種情況,因為 4294967291 + 8 = 4294967299 > 4294967295

    當您希望使用 NDB 原生備份(請參閱第 25.6.8.2 節「使用 NDB Cluster 管理用戶端建立備份」)和 ndb_restore 將多個 NDB Cluster 來源執行個體(全部使用相同結構描述)中儲存的資料合併到單一目標 NDB Cluster 時,此選項非常有用。在來源叢集之間主要索引鍵和唯一索引鍵的值重疊,且作為程序的一部分,必須將這些值重新對應至不重疊的範圍。也可能需要保留表格之間的其他關係。為了滿足這些需求,可以在同一次調用 ndb_restore 時多次使用此選項來重新對應不同表格的欄位,如下所示

    $> ndb_restore --restore-data --remap-column=hr.employee.id:offset:1000 \
        --remap-column=hr.manager.id:offset:1000 --remap-column=hr.firstaiders.id:offset:1000

    (這裡未顯示其他選項。)

    --remap-column 也可用於更新同一表格的多個欄位。可以組合多個表格和欄位。也可以為同一表格的不同欄位使用不同的偏移值,如下所示

    $> ndb_restore --restore-data --remap-column=hr.employee.salary:offset:10000 \
        --remap-column=hr.employee.hours:offset:-10

    當來源備份包含不應合併的重複表格時,您可以透過使用 --exclude-tables--exclude-databases 或在您的應用程式中使用其他方法來處理。

    可以使用 SHOW CREATE TABLEndb_desc 工具;以及 MAX()MIN()LAST_INSERT_ID() 和其他 MySQL 函式,取得要合併表格的結構和其他特性資訊。

    不支援在不同的 NDB Cluster 執行個體中,將變更從已合併的表格複寫到未合併的表格,或從未合併的表格複寫到已合併的表格。

  • --restore-data-r

    命令列格式 --restore-data

    輸出 NDB 表格資料和記錄。

  • --restore-epoch-e

    命令列格式 --restore-epoch

    將 epoch 資訊新增 (或還原) 至叢集複寫狀態表格。這對於在 NDB Cluster 複本上啟動複寫很有用。使用此選項時,如果 mysql.ndb_apply_status 中的資料列在 id 欄位中具有 0,則會更新該資料列(如果已存在);如果該資料列不存在,則會插入該資料列。(請參閱第 25.7.9 節「使用 NDB Cluster 複寫的 NDB Cluster 備份」。)

  • --restore-meta-m

    命令列格式 --restore-meta

    此選項會導致 ndb_restore 列印 NDB 表格中繼資料。

    第一次執行 ndb_restore 還原程式時,您也需要還原中繼資料。換句話說,您必須重新建立資料庫表格—這可以透過使用 --restore-meta (-m) 選項執行。還原中繼資料只需要在單一資料節點上完成;這足以將中繼資料還原至整個叢集。

    ndb_restore 會使用目標叢集的預設分割區數,除非本機資料管理員執行緒數也從原始叢集中資料節點的數目變更。

    使用此選項時,建議停用自動同步,方法是設定 ndb_metadata_check=OFF,直到 ndb_restore 完成還原中繼資料為止,之後可以再次開啟以同步在 NDB 字典中新建立的物件。

    注意

    開始還原備份時,叢集應具有空的資料庫。(換句話說,您應該在執行還原之前,先使用 --initial 啟動資料節點。)

  • --restore-privilege-tables

    命令列格式 --restore-privilege-tables
    已過時

    不再使用。

  • --rewrite-database=olddb,newdb

    命令列格式 --rewrite-database=string
    類型 字串
    預設值

    此選項可讓還原至資料庫的名稱與備份中使用的名稱不同。例如,如果製作名為 products 的資料庫的備份,您可以使用此選項將其中包含的資料還原至名為 inventory 的資料庫,如下所示(省略可能需要的任何其他選項)

    $> ndb_restore --rewrite-database=product,inventory

    可以在單次調用 ndb_restore 時多次使用此選項。因此,可以使用 --rewrite-database=db1,db2 --rewrite-database=db3,db4 同時從名為 db1 的資料庫還原到名為 db2 的資料庫,以及從名為 db3 的資料庫還原到名為 db4 的資料庫。可以在多次出現 --rewrite-database 之間使用其他 ndb_restore 選項。

    如果多個 --rewrite-database 選項之間發生衝突,則最後使用的 --rewrite-database 選項(從左到右讀取)會生效。例如,如果使用 --rewrite-database=db1,db2 --rewrite-database=db1,db3,則僅會採用 --rewrite-database=db1,db3,而會忽略 --rewrite-database=db1,db2。也可以從多個資料庫還原到單一資料庫,因此 --rewrite-database=db1,db3 --rewrite-database=db2,db3 會將資料庫 db1db2 中的所有表格和資料還原到資料庫 db3 中。

    重要

    使用 --rewrite-database 從多個備份資料庫還原到單一目標資料庫時,不會檢查表格或其他物件名稱之間是否有衝突,且不保證還原資料列的順序。這表示在此類情況下,可能會覆寫資料列,並遺失更新。

  • --skip-broken-objects

    命令列格式 --skip-broken-objects

    此選項會導致 ndb_restore 在讀取原生 NDB 備份時忽略損毀的表格,並繼續還原任何其餘的表格(且這些表格也未損毀)。目前,--skip-broken-objects 選項僅適用於遺失 blob 部件表格的情況。

  • --skip-table-check-s

    命令列格式 --skip-table-check

    可以還原資料而不安裝表格中繼資料。預設情況下,當這樣做時,如果發現表格資料和表格結構描述之間不符,則 ndb_restore 會失敗並顯示錯誤;此選項會覆寫該行為。

    使用 ndb_restore 還原資料時,放寬了對欄位定義中不符的一些限制;當遇到這些類型的不符時,ndb_restore 不會像之前一樣停止並顯示錯誤,而是接受資料並將其插入目標表格,同時向使用者發出警告,表示正在執行此操作。無論是否使用 --skip-table-check--promote-attributes 選項,都會發生此行為。欄位定義中的這些差異屬於下列類型

    • 不同的 COLUMN_FORMAT 設定 (FIXEDDYNAMICDEFAULT)

    • 不同的 STORAGE 設定 (MEMORYDISK)

    • 不同的預設值

    • 不同的分佈索引鍵設定

  • --skip-unknown-objects

    命令列格式 --skip-unknown-objects

    此選項會導致 ndb_restore 在讀取原生 NDB 備份時忽略它不辨識的任何結構描述物件。這可以用於將從執行 (例如) NDB 7.6 的叢集製作的備份還原至執行 NDB Cluster 7.5 的叢集。

  • --slice-id=#

    命令列格式 --slice-id=#
    類型 整數
    預設值 0
    最小值 0
    最大值 1023

    當使用切片還原時,這是要還原的切片 ID。此選項總是與 --num-slices 一起使用,且其值必須永遠小於 --num-slices 的值。

    如需更多資訊,請參閱本節其他地方對 --num-slices 的描述。

  • --tab=dir_name, -T dir_name

    命令列格式 --tab=路徑
    類型 目錄名稱

    使 --print-data 為每個資料表建立一個傾印檔,每個檔案名稱為 tbl_name.txt。它需要一個路徑作為參數,指定檔案應儲存的目錄;使用 . 表示目前目錄。

  • --timestamp-printouts

    命令列格式 --timestamp-printouts{=true|false}
    類型 布林值
    預設值 true

    使 info、error 和 debug 記錄訊息以時間戳記為前綴。

    預設情況下啟用此選項。使用 --timestamp-printouts=false 停用它。

  • --usage

    命令列格式 --usage

    顯示說明文字並結束;與 --help 相同。

  • --verbose=#

    命令列格式 --verbose=#
    類型 數值
    預設值 1
    最小值 0
    最大值 255

    設定輸出詳細程度的層級。最小值為 0;最大值為 255。預設值為 1。

  • --version

    命令列格式 --version

    顯示版本資訊並結束。

  • --with-apply-status

    命令列格式 --with-apply-status

    從備份的 ndb_apply_status 資料表還原所有列(除了使用 --restore-epoch 產生的 server_id = 0 的列)。此選項需要同時使用 --restore-data

    如果備份中的 ndb_apply_status 資料表已包含 server_id = 0 的列,ndb_restore --with-apply-status 會將其刪除。因此,我們建議您在使用 --with-apply-status 選項調用 ndb_restore 之後,使用 ndb_restore --restore-epoch。您也可以在還原叢集使用的最後一次調用 ndb_restore --with-apply-status 時,同時使用 --restore-epoch

    如需更多資訊,請參閱 ndb_apply_status 資料表

此工具的典型選項如下所示

ndb_restore [-c connection_string] -n node_id -b backup_id \
      [-m] -r --backup-path=/path/to/backup/files

通常,從 NDB Cluster 備份還原時,ndb_restore 至少需要 --nodeid(簡寫:-n)、--backupid(簡寫:-b)和 --backup-path 選項。

-c 選項用於指定連線字串,告知 ndb_restore 管理伺服器所在的位置(請參閱 第 25.4.3.3 節,「NDB Cluster 連線字串」)。如果未使用此選項,則 ndb_restore 會嘗試連線至 localhost:1186 上的管理伺服器。此工具的作用類似叢集 API 節點,因此需要一個空閒的連線插槽才能連線至叢集管理伺服器。這表示在叢集 config.ini 檔案中,必須至少有一個 [api][mysqld] 區段可供其使用。基於此原因,最好在 config.ini 中保留至少一個未被 MySQL 伺服器或其他應用程式使用的空 [api][mysqld] 區段(請參閱 第 25.4.3.7 節,「在 NDB Cluster 中定義 SQL 和其他 API 節點」)。

ndb_restore 可以使用 --decrypt--backup-password 解密加密的備份。必須同時指定這兩個選項才能執行解密。如需建立加密備份的資訊,請參閱 START BACKUP 管理用戶端命令的文件。

您可以使用 SHOW 命令,在 ndb_mgm 管理用戶端中驗證 ndb_restore 是否已連線至叢集。您也可以從系統 shell 完成此操作,如下所示

$> ndb_mgm -e "SHOW"

錯誤報告。 ndb_restore 會報告暫時性和永久性錯誤。在發生暫時性錯誤的情況下,它可能會從中恢復,並在這種情況下報告 還原成功,但遇到暫時性錯誤,請檢閱設定

重要

在使用 ndb_restore 初始化 NDB Cluster 以用於循環複寫之後,不會自動建立作為複本的 SQL 節點上的二進位記錄,您必須手動建立它們。若要讓二進位記錄建立,請在執行 START REPLICA 之前,在該 SQL 節點上發出 SHOW TABLES 陳述式。這是 NDB Cluster 中已知問題。