此工具從多個來源之一擷取資料節點、SQL 節點和 API 節點的目前組態資訊:NDB 叢集管理節點,或其 config.ini
或 my.cnf
檔案。依預設,管理節點是組態資料的來源;若要覆寫預設值,請使用 --config-file
或 --mycnf
選項執行 ndb_config。也可以使用資料節點作為來源,方法是使用 --config_from_node=
指定其節點 ID。node_id
ndb_config 也可以提供所有可用的組態參數的離線傾印,以及其預設值、最大值和最小值及其他資訊。傾印可以用文字或 XML 格式產生;如需更多資訊,請參閱本節稍後的 --configinfo
和 --xml
選項的討論。
您可以使用 --nodes
、--system
或 --connections
選項之一,依區段 (DB
、SYSTEM
或 CONNECTIONS
) 篩選結果。
下表顯示所有可用於 ndb_config 的選項。其他說明在表格之後。
-
命令列格式 --character-sets-dir=path
包含字元集的目錄。
-
命令列格式 --cluster-config-suffix=name
類型 字串 預設值 [無]
讀取
my.cnf
中的叢集組態區段時,覆寫預設群組後置字元;用於測試。 --configinfo
選項會讓 ndb_config 傾印 ndb_config 所屬 NDB 叢集散佈支援的每個 NDB 叢集組態參數的清單,包括下列資訊每個參數的用途、效果和用法的簡短說明
可以使用參數的
config.ini
檔案區段參數的資料類型或測量單位
在適用的情況下,參數的預設值、最小值和最大值
NDB 叢集發行版本與組建資訊
依預設,此輸出為文字格式。此處顯示部分輸出
$> ndb_config --configinfo ****** SYSTEM ****** Name (String) Name of system (NDB Cluster) MANDATORY PrimaryMGMNode (Non-negative Integer) Node id of Primary ndb_mgmd(MGM) node Default: 0 (Min: 0, Max: 4294967039) ConfigGenerationNumber (Non-negative Integer) Configuration generation number Default: 0 (Min: 0, Max: 4294967039) ****** DB ****** MaxNoOfSubscriptions (Non-negative Integer) Max no of subscriptions (default 0 == MaxNoOfTables) Default: 0 (Min: 0, Max: 4294967039) MaxNoOfSubscribers (Non-negative Integer) Max no of subscribers (default 0 == 2 * MaxNoOfTables) Default: 0 (Min: 0, Max: 4294967039) …
將此選項與
--xml
選項一起使用,以取得 XML 格式的輸出。--config-binary-file=
path-to-file
命令列格式 --config-binary-file=path/to/file
類型 檔案名稱 預設值 提供管理伺服器的快取二進位組態檔案的路徑 (
ndb_
)。這可能是相對或絕對路徑。如果管理伺服器和使用的 ndb_config 二進位檔案位於不同的主機上,您必須使用絕對路徑。nodeID
_config.bin.seqno
此範例示範結合
--config-binary-file
與其他 ndb_config 選項以取得有用的輸出$> ndb_config --config-binary-file=../mysql-cluster/ndb_50_config.bin.1 --diff-default --type=ndbd config of [DB] node id 5 that is different from default CONFIG_PARAMETER,ACTUAL_VALUE,DEFAULT_VALUE NodeId,5,(mandatory) BackupDataDir,/local/data/8.4,(null) DataDir,/local/data/8.4,. DataMemory,2G,98M FileSystemPath,/local/data/8.4,(null) HostName,127.0.0.1,localhost Nodegroup,0,(null) ThreadConfig,,(null) config of [DB] node id 6 that is different from default CONFIG_PARAMETER,ACTUAL_VALUE,DEFAULT_VALUE NodeId,6,(mandatory) BackupDataDir,/local/data/8.4,(null) DataDir,/local/data/8.4. DataMemory,2G,98M FileSystemPath,/local/data/8.4,(null) HostName,127.0.0.1,localhost Nodegroup,0,(null) ThreadConfig,,(null) $> ndb_config --config-binary-file=../mysql-cluster/ndb_50_config.bin.1 --diff-default --system config of [SYSTEM] system CONFIG_PARAMETER,ACTUAL_VALUE,DEFAULT_VALUE Name,MC_20220906060042,(mandatory) ConfigGenerationNumber,1,0 PrimaryMGMNode,50,0
此處顯示
config.ini
檔案的相關部分[ndbd default] DataMemory= 2G NoOfReplicas= 2 [ndb_mgmd] NodeId= 50 HostName= 127.0.0.1 [ndbd] NodeId= 5 HostName= 127.0.0.1 DataDir= /local/data/8.4 [ndbd] NodeId= 6 HostName= 127.0.0.1 DataDir= /local/data/8.4
藉由比較輸出與組態檔案,您可以看到檔案中的所有設定都已由管理伺服器寫入二進位快取,因此已套用至叢集。
-
命令列格式 --config-file=file_name
類型 檔案名稱 預設值 提供叢集組態檔案 (
config.ini
) 的路徑。這可能是相對或絕對路徑。如果管理伺服器和使用的 ndb_config 二進位檔案位於不同的主機上,您必須使用絕對路徑。 -
命令列格式 --config-from-node=#
類型 數值 預設值 無
最小值 1
最大值 48
從具有此 ID 的資料節點取得叢集的組態資料。
如果具有此 ID 的節點不是資料節點,ndb_config 將會失敗並出現錯誤。(若要改為從管理節點取得組態資料,只需省略此選項即可。)
-
命令列格式 --connect-retries=#
類型 整數 預設值 12
最小值 0
最大值 12
放棄前重新嘗試連線的次數。
-
命令列格式 --connect-retry-delay=#
類型 整數 預設值 5
最小值 0
最大值 5
嘗試聯絡管理伺服器之間等待的秒數。
-
命令列格式 --connect-string=connection_string
類型 字串 預設值 [無]
與
--ndb-connectstring
相同。 -
命令列格式 --connections
告訴 ndb_config 只列印
CONNECTIONS
資訊,也就是位於叢集組態檔之[tcp]
、[tcp default]
、[shm]
或[shm default]
區段中的參數的相關資訊 (如需詳細資訊,請參閱第 25.4.3.10 節「NDB 叢集 TCP/IP 連線」和第 25.4.3.12 節「NDB 叢集共用記憶體連線」)。 -
命令列格式 --core-file
錯誤時寫入核心檔案;用於除錯。
-
命令列格式 --defaults-extra-file=path
類型 字串 預設值 [無]
讀取全域檔案後讀取指定檔案。
-
命令列格式 --defaults-file=path
類型 字串 預設值 [無]
僅從指定檔案讀取預設選項。
-
命令列格式 --defaults-group-suffix=string
類型 字串 預設值 [無]
也讀取 concat(群組, 後置字元) 的群組。
-
命令列格式 --diff-default
僅列印具有非預設值的組態參數。
--fields=
、delimiter
-f
delimiter
命令列格式 --fields=string
類型 字串 預設值 指定用於分隔結果中欄位的
delimiter
字串。預設值為,
(逗號字元)。注意如果
delimiter
包含空格或逸出字元 (例如換行字元的\n
),則必須以引號括住。-
命令列格式 --help
顯示說明文字並結束。
-
命令列格式 --host=名稱
類型 字串 預設值 指定要獲取組態資訊的節點的主機名稱。
注意雖然主機名稱
localhost
通常會解析為 IP 位址127.0.0.1
,但在所有作業平台和組態中可能不一定如此。這表示當localhost
用於config.ini
時,若 ndb_config--host=localhost
在不同的主機上執行,而該主機的localhost
解析為不同的位址(例如,在某些版本的 SUSE Linux 上,此位址為127.0.0.2
),則可能會失敗。一般而言,為了獲得最佳結果,您應該對所有與主機相關的 NDB Cluster 組態值使用數字 IP 位址,或驗證所有 NDB Cluster 主機都以相同的方式處理localhost
。 -
命令列格式 --login-path=路徑
類型 字串 預設值 [無]
從登入檔案讀取給定的路徑。
-
命令列格式 --mycnf
從
my.cnf
檔案讀取組態資料。 --ndb-connectstring=
,connection_string
-c
connection_string
命令列格式 --ndb-connectstring=連線字串
類型 字串 預設值 [無]
指定用於連線到管理伺服器的連線字串。連線字串的格式與第 25.4.3.3 節「NDB Cluster 連線字串」中描述的相同,且預設為
localhost:1186
。-
命令列格式 --ndb-mgm-tls=層級
類型 列舉 預設值 寬鬆
有效值 寬鬆
嚴格
設定連線到管理伺服器所需的 TLS 支援層級;可以是
寬鬆
或嚴格
。寬鬆
(預設) 表示會嘗試 TLS 連線,但並非必要;嚴格
表示必須使用 TLS 連線。 -
命令列格式 --ndb-mgmd-host=連線字串
類型 字串 預設值 [無]
與
--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=清單
類型 路徑名稱 預設值 (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
除了登入檔案之外,不從任何選項檔案讀取預設選項。
-
命令列格式 --no-login-paths
略過從登入路徑檔案讀取選項。
-
命令列格式 --ndb-nodeid=#
類型 整數 預設值 [無]
指定要獲取組態資訊的節點的節點 ID。
-
命令列格式 --nodes
告知 ndb_config 僅列印與叢集組態檔案的
[ndbd]
或[ndbd default]
區段中定義的參數相關的資訊 (請參閱第 25.4.3.6 節「定義 NDB Cluster 資料節點」)。此選項與
--connections
和--system
互斥;只能使用這 3 個選項中的一個。 -
命令列格式 --print-defaults
列印程式引數清單並結束。
--query=
,query-options
-q
query-options
命令列格式 --query=字串
類型 字串 預設值 這是以逗號分隔的 查詢選項清單,也就是要傳回的一個或多個節點屬性清單。這些屬性包括
nodeid
(節點 ID)、類型 (節點類型,也就是ndbd
、mysqld
或ndb_mgmd
) 以及要取得其值的任何組態參數。例如,
--query=nodeid,type,datamemory,datadir
會傳回每個節點的節點 ID、節點類型、DataMemory
和DataDir
。注意如果給定的參數不適用於某種類型的節點,則會針對對應的值傳回空字串。如需更多資訊,請參閱本節稍後的範例。
--query-all
,-a
命令列格式 --query-all
類型 字串 預設值 傳回所有查詢選項 (節點屬性) 的逗號分隔清單;請注意,此清單是單一字串。
--rows=
,separator
-r
separator
命令列格式 --rows=字串
類型 字串 預設值 指定用來分隔結果中各列的
分隔符號
字串。預設值是空格字元。注意如果
分隔符號
包含空格或跳脫字元 (例如,換行字元的\n
),則必須加上引號。-
命令列格式 --system
告知 ndb_config 僅列印
SYSTEM
資訊。這包含無法在執行時間變更的系統變數;因此,叢集組態檔案中沒有它們的對應區段。可以在 ndb_config--configinfo
的輸出中看到它們 (前綴為****** SYSTEM ******
)。此選項與
--nodes
和--connections
互斥;只能使用這 3 個選項中的一個。 -
命令列格式 --type=名稱
類型 列舉 預設值 [無]
有效值 ndbd
mysqld
ndb_mgmd
篩選結果,以便僅傳回適用於指定
節點類型
(ndbd
、mysqld
或ndb_mgmd
) 的節點的組態值。 --usage
,--help
, 或-?
命令列格式 --help
讓 ndb_config 列印可用選項的清單,然後結束。
--version
,-V
命令列格式 --version
讓 ndb_config 列印版本資訊字串,然後結束。
--configinfo
--xml
命令列格式 --configinfo --xml
讓 ndb_config
--configinfo
通過新增此選項來以 XML 格式提供輸出。此範例中顯示了這類輸出的一部分$> ndb_config --configinfo --xml <configvariables protocolversion="1" ndbversionstring="5.7.44-ndb-7.5.35" ndbversion="460032" ndbversionmajor="7" ndbversionminor="5" ndbversionbuild="0"> <section name="SYSTEM"> <param name="Name" comment="Name of system (NDB Cluster)" type="string" mandatory="true"/> <param name="PrimaryMGMNode" comment="Node id of Primary ndb_mgmd(MGM) node" type="unsigned" default="0" min="0" max="4294967039"/> <param name="ConfigGenerationNumber" comment="Configuration generation number" type="unsigned" default="0" min="0" max="4294967039"/> </section> <section name="MYSQLD" primarykeys="NodeId"> <param name="wan" comment="Use WAN TCP setting as default" type="bool" default="false"/> <param name="HostName" comment="Name of computer for this node" type="string" default=""/> <param name="Id" comment="NodeId" type="unsigned" mandatory="true" min="1" max="255" deprecated="true"/> <param name="NodeId" comment="Number identifying application node (mysqld(API))" type="unsigned" mandatory="true" min="1" max="255"/> <param name="ExecuteOnComputer" comment="HostName" type="string" deprecated="true"/> … </section> … </configvariables>
注意通常,由 ndb_config
--configinfo
--xml
產生的 XML 輸出會使用每元素一行的方式格式化;我們已在前一個範例以及下一個範例中新增額外的空白字元,以方便閱讀。這不應對使用此輸出的應用程式造成任何影響,因為大多數 XML 處理器通常會忽略非必要的空白字元,或者可以指示它們這麼做。XML 輸出也指出,當變更特定參數時,需要使用
--initial
選項重新啟動資料節點。這會透過對應的<param>
元素中存在initial="true"
屬性來表示。此外,也會顯示重新啟動類型 (system
或node
);如果特定參數需要系統重新啟動,這會透過對應的<param>
元素中存在restart="system"
屬性來表示。例如,變更Diskless
參數設定的值需要系統初始重新啟動,如下所示 (為了方便檢視,restart
和initial
屬性已醒目提示)<param name="Diskless" comment="Run wo/ disk" type="bool" default="false" restart="system" initial="true"/>
目前,對於不需要初始重新啟動的參數,對應的
<param>
元素的 XML 輸出中不包含initial
屬性;換句話說,initial="false"
是預設值,如果屬性不存在,則應假設其值為false
。同樣地,預設重新啟動類型為node
(也就是叢集的線上或「滾動」重新啟動),但只有當重新啟動類型為system
時才會包含restart
屬性 (表示所有叢集節點都必須同時關閉,然後重新啟動)。XML 輸出中會透過
deprecated
屬性指示已棄用的參數,如下所示<param name="NoOfDiskPagesToDiskAfterRestartACC" comment="DiskCheckpointSpeed" type="unsigned" default="20" min="1" max="4294967039" deprecated="true"/>
在這種情況下,
comment
指的是一個或多個取代已棄用參數的參數。與initial
類似,只有當參數已棄用時,才會指示deprecated
屬性,並使用deprecated="true"
,對於未棄用的參數則根本不會出現。(錯誤 #21127135)需要的參數會以
mandatory="true"
表示,如下所示<param name="NodeId" comment="Number identifying application node (mysqld(API))" type="unsigned" mandatory="true" min="1" max="255"/>
與僅針對需要初始重新啟動或已棄用的參數顯示
initial
或deprecated
屬性大致相同,只有在給定的參數確實是必要時,才會包含mandatory
屬性。重要事項--xml
選項只能與--configinfo
選項一起使用。在沒有--configinfo
的情況下使用--xml
將會失敗並產生錯誤。與此程式用來取得目前組態資料的選項不同,
--configinfo
和--xml
使用 ndb_config 編譯時從 NDB 叢集來源取得的資訊。因此,這兩個選項不需要連線至執行中的 NDB 叢集,也不需要存取config.ini
或my.cnf
檔案。
不支援將其他 ndb_config 選項 (例如 --query
或 --type
) 與 --configinfo
(無論是否搭配 --xml
選項) 結合使用。目前,如果您嘗試這樣做,通常的結果是,除了 --configinfo
或 --xml
之外的所有其他選項都會被忽略。然而,無法保證此行為,且隨時可能變更。此外,由於 ndb_config 在與 --configinfo
選項一起使用時,不會存取 NDB 叢集或讀取任何檔案,因此嘗試使用 --configinfo
指定其他選項 (例如 --ndb-connectstring
或 --config-file
) 並沒有任何作用。
範例
取得叢集中每個節點的節點 ID 和類型
$> ./ndb_config --query=nodeid,type --fields=':' --rows='\n' 1:ndbd 2:ndbd 3:ndbd 4:ndbd 5:ndb_mgmd 6:mysqld 7:mysqld 8:mysqld 9:mysqld
在此範例中,我們使用
--fields
選項以冒號字元 (:
) 分隔每個節點的 ID 和類型,並使用--rows
選項將每個節點的值放置在輸出中的新行上。產生資料、SQL 和 API 節點可用來連線至管理伺服器的連線字串
$> ./ndb_config --config-file=usr/local/mysql/cluster-data/config.ini \ --query=hostname,portnumber --fields=: --rows=, --type=ndb_mgmd 198.51.100.179:1186
此 ndb_config 呼叫僅檢查資料節點 (使用
--type
選項),並顯示每個節點的 ID 和主機名稱的值,以及其DataMemory
和DataDir
參數所設定的值$> ./ndb_config --type=ndbd --query=nodeid,host,datamemory,datadir -f ' : ' -r '\n' 1 : 198.51.100.193 : 83886080 : /usr/local/mysql/cluster-data 2 : 198.51.100.112 : 83886080 : /usr/local/mysql/cluster-data 3 : 198.51.100.176 : 83886080 : /usr/local/mysql/cluster-data 4 : 198.51.100.119 : 83886080 : /usr/local/mysql/cluster-data
在此範例中,我們分別使用短選項
-f
和-r
來設定欄位分隔符號和列分隔符號,並使用短選項-q
來傳遞要取得的參數清單。若要排除特定主機以外的任何主機的結果,請使用
--host
選項$> ./ndb_config --host=198.51.100.176 -f : -r '\n' -q id,type 3:ndbd 5:ndb_mgmd
在此範例中,我們也使用了短格式
-q
來判斷要查詢的屬性。同樣地,您可以使用
--nodeid
選項將結果限制為具有特定 ID 的節點。