文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  ndb_config — 擷取 NDB 叢集組態資訊

25.5.7 ndb_config — 擷取 NDB 叢集組態資訊

此工具從多個來源之一擷取資料節點、SQL 節點和 API 節點的目前組態資訊:NDB 叢集管理節點,或其 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 叢集散佈支援的每個 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_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/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=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 叢集 TCP/IP 連線」第 25.4.3.12 節「NDB 叢集共用記憶體連線」)。

    此選項與 --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=string
    類型 字串
    預設值 [無]

    也讀取 concat(群組, 後置字元) 的群組。

  • --diff-default

    命令列格式 --diff-default

    僅列印具有非預設值的組態參數。

  • --fields=delimiter-f delimiter

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

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

    注意

    如果 delimiter 包含空格或逸出字元 (例如換行字元的 \n),則必須以引號括住。

  • --help

    命令列格式 --help

    顯示說明文字並結束。

  • --host=hostname

    命令列格式 --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=connection_string, -c connection_string

    命令列格式 --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=node_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=query-options, -q query-options

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

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

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

    注意

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

  • --query-all, -a

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

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

  • --rows=separator, -r separator

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

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

    注意

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

  • --system

    命令列格式 --system

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

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

  • --type=node_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 的節點。