文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊

MySQL 9.0 參考手冊  /  ...  /  ndb_config — 提取 NDB Cluster 組態資訊

25.5.7 ndb_config — 提取 NDB Cluster 組態資訊

此工具會從數個來源之一提取資料節點、SQL 節點和 API 節點的目前組態資訊:NDB Cluster 管理節點,或是其 config.inimy.cnf 檔案。依預設,管理節點是組態資料的來源;若要覆寫預設值,請使用 --config-file--mycnf 選項來執行 ndb_config。也可以使用資料節點作為來源,方法是使用 --config_from_node=node_id 指定其節點 ID。

ndb_config 也可以提供所有組態參數的離線傾印,這些參數可搭配其預設值、最大值、最小值和其他資訊一起使用。傾印可以文字或 XML 格式產生;如需更多資訊,請參閱本節稍後有關 --configinfo--xml 選項的討論。

您可以使用 --nodes--system--connections 其中一個選項,依區段 (DBSYSTEMCONNECTIONS) 篩選結果。

以下表格顯示所有可與 ndb_config 搭配使用的選項。表格後面接著其他描述。

  • --character-sets-dir

    命令列格式 --character-sets-dir=path

    包含字元集的目錄。

  • cluster-config-suffix

    命令列格式 --cluster-config-suffix=name
    類型 字串
    預設值 [無]

    my.cnf 中讀取叢集組態區段時,覆寫預設值群組後綴;用於測試。

  • --configinfo

    --configinfo 選項會使 ndb_config 傾印 ndb_config 所屬 NDB Cluster 發行版本支援的每個 NDB Cluster 組態參數的清單,其中包含下列資訊

    • 每個參數用途、效果和用法簡短描述

    • 可使用參數的 config.ini 檔案區段

    • 參數的資料類型或度量單位

    • 在適用的情況下,參數的預設值、最小值和最大值

    • NDB Cluster 發行版本和組建資訊

    依預設,此輸出為文字格式。此處顯示部分輸出

    $> 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_nodeID_config.bin.seqno) 的路徑。這可能是相對路徑或絕對路徑。如果管理伺服器和使用的 ndb_config 二進位檔位於不同的主機上,則必須使用絕對路徑。

    此範例示範將 --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/9.0,(null) 
    DataDir,/local/data/9.0,. 
    DataMemory,2G,98M 
    FileSystemPath,/local/data/9.0,(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/9.0,(null) 
    DataDir,/local/data/9.0. 
    DataMemory,2G,98M 
    FileSystemPath,/local/data/9.0,(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/9.0
    
    [ndbd]
    NodeId= 6
    HostName= 127.0.0.1
    DataDir= /local/data/9.0

    藉由比較輸出與組態檔案,您可以看到檔案中的所有設定都已由管理伺服器寫入二進位快取,因此已套用至叢集。

  • --config-file=path-to-file

    命令列格式 --config-file=file_name
    類型 檔案名稱
    預設值

    提供叢集組態檔案 (config.ini) 的路徑。這可能是相對路徑或絕對路徑。如果管理伺服器和使用的 ndb_config 二進位檔位於不同的主機上,則必須使用絕對路徑。

  • --config_from_node=#

    命令列格式 --config-from-node=#
    類型 數值
    預設值
    最小值 1
    最大值 48

    從具有此 ID 的資料節點取得叢集的組態資料。

    如果具有此 ID 的節點不是資料節點,ndb_config 會失敗並顯示錯誤。(若要改為從管理節點取得組態資料,只需省略此選項即可。)

  • --connect-retries

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

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

  • --connect-retry-delay

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

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

  • --connect-string

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

    --ndb-connectstring 相同。

  • --connections

    命令列格式 --connections

    告知 ndb_config 僅列印 CONNECTIONS 資訊,也就是叢集組態檔案的 [tcp][tcp default][shm][shm default] 區段中找到的參數相關資訊 (如需更多資訊,請參閱第 25.4.3.10 節,「NDB Cluster TCP/IP 連線」第 25.4.3.12 節,「NDB Cluster 共用記憶體連線」)。

    此選項與 --nodes--system 互斥;只能使用這 3 個選項中的其中一個。

  • --core-file

    命令列格式 --core-file

    發生錯誤時寫入核心檔案;用於除錯。

  • --defaults-extra-file

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

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

  • --defaults-file

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

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

  • --defaults-group-suffix

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

    同時讀取 concat(群組, 後綴) 的群組。

  • --diff-default

    命令列格式 --diff-default

    僅列印具有非預設值的配置參數。

  • --fields=分隔符號, -f 分隔符號

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

    指定用於分隔結果中欄位的分隔符號字串。預設值為,(逗號字元)。

    注意

    如果分隔符號包含空格或跳脫字元(例如換行字元的\n),則必須使用引號括起來。

  • --help

    命令列格式 --help

    顯示說明文字並結束。

  • --host=主機名稱

    命令列格式 --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

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

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

  • --mycnf

    命令列格式 --mycnf

    my.cnf 檔案讀取配置資料。

  • --ndb-connectstring=連線字串, -c 連線字串

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

    指定連線到管理伺服器時要使用的連線字串。連線字串的格式與第 25.4.3.3 節,「NDB Cluster 連線字串」中所述的相同,預設值為 localhost:1186

  • --ndb-mgm-tls

    命令列格式 --ndb-mgm-tls=層級
    類型 列舉
    預設值 寬鬆
    有效值

    寬鬆

    嚴格

    設定連線到管理伺服器所需的 TLS 支援層級;寬鬆嚴格之一。寬鬆(預設)表示會嘗試 TLS 連線,但成功並非必要;嚴格表示必須使用 TLS 才能連線。

  • --ndb-mgmd-host

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

    --ndb-connectstring 相同。

  • --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=清單
    類型 路徑名稱
    預設值(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-defaults

    除了登入檔案之外,不要從任何選項檔案讀取預設選項。

  • --no-login-paths

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

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

  • --nodeid=節點_id

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

    指定要取得配置資訊的節點節點 ID。

  • --nodes

    命令列格式 --nodes

    告知 ndb_config 僅列印與叢集配置檔案的 [ndbd][ndbd default] 區段中定義的參數相關的資訊(請參閱第 25.4.3.6 節,「定義 NDB Cluster 資料節點」)。

    此選項與 --connections--system 互斥;只能使用這 3 個選項中的一個。

  • --print-defaults

    命令列格式 --print-defaults

    列印程式引數清單並結束。

  • --query=查詢選項, -q 查詢選項

    命令列格式 --query=字串
    類型 字串
    預設值

    這是以逗號分隔的查詢選項清單,也就是要傳回的一個或多個節點屬性清單。這些包括 nodeid(節點 ID)、type(節點類型,即 ndbdmysqldndb_mgmd)和任何要取得其值的配置參數。

    例如,--query=nodeid,type,datamemory,datadir 會傳回每個節點的節點 ID、節點類型、DataMemoryDataDir

    注意

    如果給定的參數不適用於某種節點類型,則會針對對應的值傳回空字串。請參閱本節稍後的範例以取得更多資訊。

  • --query-all, -a

    命令列格式 --query-all
    類型 字串
    預設值

    傳回所有查詢選項(節點屬性)的逗號分隔清單;請注意,此清單是單一字串。

  • --rows=分隔符號, -r 分隔符號

    命令列格式 --rows=字串
    類型 字串
    預設值

    指定用於分隔結果中列的分隔符號字串。預設值為空格字元。

    注意

    如果分隔符號包含空格或跳脫字元(例如換行字元的\n),則必須使用引號括起來。

  • --system

    命令列格式 --system

    告知 ndb_config 僅列印 SYSTEM 資訊。這包含無法在執行階段變更的系統變數;因此,它們沒有叢集配置檔案的對應區段。它們可以在 ndb_config --configinfo 的輸出中看到(以 ****** SYSTEM ****** 為前綴)。

    此選項與 --nodes--connections 互斥;只能使用這 3 個選項中的一個。

  • --type=節點_類型

    命令列格式 --type=名稱
    類型 列舉
    預設值 [無]
    有效值

    ndbd

    mysqld

    ndb_mgmd

    篩選結果,以便僅傳回套用於指定 節點_類型ndbdmysqldndb_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" 屬性來表示。此外,還會顯示重新啟動類型(systemnode);如果給定參數需要系統重新啟動,則會在對應的 <param> 元素中顯示 restart="system" 屬性。例如,變更 Diskless 參數設定的值需要系統初始重新啟動,如下所示(restartinitial 屬性已醒目標示以便於檢視)

    <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"/>

    就像 initialdeprecated 屬性僅針對需要初始重新啟動或已棄用的參數顯示一樣,mandatory 屬性僅在給定參數實際上為必要時才會包含。

    重要事項

    --xml 選項只能與 --configinfo 選項一起使用。在沒有 --configinfo 的情況下使用 --xml 會失敗並顯示錯誤。

    與使用此程式取得目前組態資料的選項不同,--configinfo--xml 使用在編譯 ndb_config 時從 NDB 叢集來源取得的資訊。因此,這兩個選項不需要連線到正在執行的 NDB 叢集或存取 config.inimy.cnf 檔案。

不支援將其他 ndb_config 選項(例如 --query--type)與 --configinfo(無論有無 --xml 選項)結合使用。目前,如果您嘗試這樣做,通常的結果是除了 --configinfo--xml 之外的所有其他選項都會被忽略。但是,此行為不保證,並且隨時可能會變更。此外,由於 ndb_config--configinfo 選項一起使用時,不會存取 NDB 叢集或讀取任何檔案,因此嘗試使用 --configinfo 指定額外選項(例如 --ndb-connectstring--config-file)沒有任何作用。

範例

  1. 要取得叢集中每個節點的節點 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 選項將每個節點的值放在輸出中的新行上。

  2. 產生一個連線字串,資料、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
  3. ndb_config 呼叫僅檢查資料節點(使用 --type 選項),並顯示每個節點的 ID 和主機名稱值,以及其 DataMemoryDataDir 參數設定的值

    $> ./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 來傳遞要取得的參數清單。

  4. 要排除特定主機以外的任何主機的結果,請使用 --host 選項

    $> ./ndb_config --host=198.51.100.176 -f : -r '\n' -q id,type
    3:ndbd
    5:ndb_mgmd

    在此範例中,我們也使用了短格式 -q 來確定要查詢的屬性。

    同樣地,您可以使用 --nodeid 選項將結果限制為具有特定 ID 的節點。