此工具可用於檢查並從 NDB
資料表中移除孤立的 BLOB 欄位部分,以及產生一個檔案列出任何孤立的部分。它有時在診斷和修復包含 BLOB
或 TEXT
欄位的損壞或毀損的 NDB
資料表時非常有用。
此處顯示 ndb_blob_tool 的基本語法
ndb_blob_tool [options] table [column, ...]
除非您使用 --help
選項,否則您必須指定要執行的動作,方法是包含一個或多個選項 --check-orphans
、--delete-orphans
或 --dump-file
。這些選項會導致 ndb_blob_tool 分別檢查孤立的 BLOB 部分、移除任何孤立的 BLOB 部分,以及產生一個傾印檔案列出孤立的 BLOB 部分,並在本節稍後詳細說明。
您也必須在叫用 ndb_blob_tool 時指定資料表的名稱。此外,您可以選擇在資料表名稱之後加上該資料表的一個或多個 BLOB
或 TEXT
欄位的(逗號分隔)名稱。如果未列出任何欄位,則該工具會處理該資料表的所有 BLOB
和 TEXT
欄位。如果您需要指定資料庫,請使用 --database
(-d
) 選項。
--verbose
選項會在輸出中提供關於工具進度的其他資訊。
以下表格顯示所有可以與 ndb_mgmd 一起使用的選項。表格之後會提供額外的說明。
-
命令列格式 --add-missing
對於 NDB 叢集資料表中每個沒有對應 BLOB 部分的內嵌部分,寫入一個由空格組成的所需長度的虛擬 BLOB 部分。
-
命令列格式 --character-sets-dir=path
包含字元集的目錄。
-
命令列格式 --check-missing
檢查 NDB 叢集資料表中沒有對應 BLOB 部分的內嵌部分。
-
命令列格式 --check-orphans
檢查 NDB 叢集資料表中沒有對應內嵌部分的 BLOB 部分。
-
命令列格式 --connect-retries=#
型別 整數 預設值 12
最小值 0
最大值 12
放棄連線前重試連線的次數。
-
命令列格式 --connect-retry-delay=#
型別 整數 預設值 5
最小值 0
最大值 5
嘗試連線管理伺服器時等待的秒數。
-
命令列格式 --connect-string=connection_string
型別 字串 預設值 [無]
與
--ndb-connectstring
相同。 -
命令列格式 --core-file
發生錯誤時寫入核心檔案;用於除錯。
-
命令列格式 --database=name
型別 字串 預設值 [無]
指定要尋找資料表的資料庫。
-
命令列格式 --defaults-extra-file=path
型別 字串 預設值 [無]
讀取全域檔案後讀取給定的檔案。
-
命令列格式 --defaults-file=path
型別 字串 預設值 [無]
只從給定的檔案讀取預設選項。
-
命令列格式 --defaults-group-suffix=string
型別 字串 預設值 [無]
也讀取具有 concat(群組, 字尾) 的群組。
-
命令列格式 --delete-orphans
從 NDB 叢集資料表中移除沒有對應內嵌部分的 BLOB 部分。
-
命令列格式 --dump-file=file
型別 檔案名稱 預設值 [無]
將孤立的 BLOB 欄位部分清單寫入
file
。寫入檔案的資訊包括每個孤立的 BLOB 部分的資料表索引鍵和 BLOB 部分編號。 -
命令列格式 --help
顯示說明文字並結束。
-
命令列格式 --login-path=path
型別 字串 預設值 [無]
從登入檔案讀取給定的路徑。
-
命令列格式 --no-login-paths
略過從登入路徑檔案讀取選項。
-
命令列格式 --ndb-connectstring=connection_string
型別 字串 預設值 [無]
設定連線字串以連線至 ndb_mgmd。語法:
[nodeid=
。覆寫id
;][host=]hostname
[:port
]NDB_CONNECTSTRING
和my.cnf
中的項目。 -
命令列格式 --ndb-mgm-tls=level
型別 列舉 預設值 relaxed
有效值 relaxed
strict
設定連線至管理伺服器所需的 TLS 支援層級;為
relaxed
或strict
之一。relaxed
(預設值) 表示會嘗試 TLS 連線,但不需要成功;strict
表示必須使用 TLS 連線。 -
命令列格式 --ndb-mgmd-host=connection_string
型別 字串 預設值 [無]
與
--ndb-connectstring
相同。 -
命令列格式 --ndb-nodeid=#
型別 整數 預設值 [無]
設定此節點的節點 ID,覆寫 --ndb-connectstring 設定的任何 ID。
--ndb-optimized-node-selection
命令列格式 --ndb-optimized-node-selection
啟用交易的節點選取最佳化。預設為啟用;使用
--skip-ndb-optimized-node-selection
停用。-
命令列格式 --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 Cluster 來覆寫此值。 -
命令列格式 --no-defaults
除了登入檔之外,不要從任何選項檔案讀取預設選項。
-
命令列格式 --print-defaults
列印程式引數清單並結束。
-
命令列格式 --usage
顯示說明文字並結束;與 --help 相同。
-
命令列格式 --verbose
在工具的輸出中提供有關其進度的額外資訊。
-
命令列格式 --version
顯示版本資訊並結束。
範例
首先,我們在 test
資料庫中建立一個 NDB
資料表,使用此處顯示的 CREATE TABLE
陳述式
USE test;
CREATE TABLE btest (
c0 BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
c1 TEXT,
c2 BLOB
) ENGINE=NDB;
然後,我們使用一系列類似於此的陳述式,將一些列插入此資料表
INSERT INTO btest VALUES (NULL, 'x', REPEAT('x', 1000));
當使用 --check-orphans
針對此資料表執行時,ndb_blob_tool 會產生以下輸出
$> ndb_blob_tool --check-orphans --verbose -d test btest
connected
processing 2 blobs
processing blob #0 c1 NDB$BLOB_19_1
NDB$BLOB_19_1: nextResult: res=1
total parts: 0
orphan parts: 0
processing blob #1 c2 NDB$BLOB_19_2
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=1
total parts: 10
orphan parts: 0
disconnected
該工具報告說,沒有與 c1
欄相關聯的 NDB
BLOB 欄部分,即使 c1
是一個 TEXT
欄。這是因為,在 NDB
資料表中,只有 BLOB
或 TEXT
欄值的前 256 個位元組會內嵌儲存,只有多出的部分(如果有)會單獨儲存;因此,如果給定欄位中沒有任何值超過 256 個位元組,則 NDB
不會為此欄建立 BLOB
欄部分。如需更多資訊,請參閱第 13.7 節「資料類型儲存需求」。