文件首頁
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 叢集管理用戶端中的命令

25.6.1 NDB 叢集管理用戶端中的命令

除了中央組態檔之外,還可以透過管理用戶端 ndb_mgm提供的命令列介面來控制叢集。這是執行中叢集的主要管理介面。

事件日誌的命令在第 25.6.3 節,「在 NDB 叢集中產生的事件報告」中給出;建立備份和從備份還原的命令在第 25.6.8 節,「NDB 叢集的線上備份」中提供。

將 ndb_mgm 與 MySQL Cluster Manager 搭配使用。  MySQL Cluster Manager 處理啟動和停止程序,並在內部追蹤其狀態,因此對於受 MySQL Cluster Manager 控制的 NDB 叢集,不需要使用 ndb_mgm 來執行這些工作。建議不要使用 NDB 叢集發行版本隨附的 ndb_mgm 命令列用戶端來執行涉及啟動或停止節點的操作。這些操作包括但不限於 STARTSTOPRESTARTSHUTDOWN 命令。如需更多資訊,請參閱 MySQL Cluster Manager 程序命令

管理用戶端具有下列基本命令。在下列清單中,node_id 表示資料節點 ID 或關鍵字 ALL,表示該命令應套用至叢集的所有資料節點。

  • CONNECT 連線字串

    連線至連線字串指示的管理伺服器。如果用戶端已連線至此伺服器,則用戶端會重新連線。

  • CREATE NODEGROUP nodeid[, nodeid, ...]

    建立新的 NDB 叢集節點群組,並導致資料節點加入其中。

    此命令用於將新的資料節點線上新增至 NDB 叢集之後,並導致它們加入新的節點群組,從而開始完全參與叢集。該命令將逗號分隔的節點 ID 清單作為其唯一參數 — 這些是剛新增並啟動且要加入新節點群組的節點 ID。該清單不得包含重複的 ID;任何重複項的存在都會導致命令傳回錯誤。清單中的節點數必須與叢集中已存在的每個節點群組中的節點數相同(每個 NDB 叢集節點群組必須具有相同數量的節點)。換句話說,如果 NDB 叢集由 2 個各具有 2 個資料節點的節點群組組成,則新的節點群組也必須有 2 個資料節點。

    此命令建立的新節點群組的節點群組 ID 會自動決定,且永遠是叢集中下一個最高未使用的節點群組 ID;無法手動設定。

    如需更多資訊,請參閱第 25.6.7 節,「線上新增 NDB 叢集資料節點」

  • DROP NODEGROUP nodegroup_id

    移除具有指定 nodegroup_id 的 NDB 叢集節點群組。

    此命令可用於從 NDB 叢集中移除節點群組。DROP NODEGROUP 將要移除的節點群組的節點群組 ID 作為其唯一引數。

    DROP NODEGROUP 的作用僅是將受影響節點群組中的資料節點從該節點群組中移除。它不會停止資料節點、將其指派給不同的節點群組或從叢集的組態中移除它們。不屬於節點群組的資料節點會在管理用戶端 SHOW 命令的輸出中以 no nodegroup 取代節點群組 ID 來指示,如下所示(以粗體文字表示)

    id=3    @10.100.2.67  (8.4.0-ndb-8.4.0, no nodegroup)

    DROP NODEGROUP 只有在要移除的節點群組中的所有資料節點完全沒有任何表格資料和表格定義時才會運作。由於目前無法使用 ndb_mgmmysql 用戶端從特定的資料節點或節點群組移除所有資料,這表示該命令僅在下列兩種情況下成功

    1. ndb_mgm 用戶端中發出 CREATE NODEGROUP 之後,但在 mysql 用戶端中發出任何 ALTER TABLE ... REORGANIZE PARTITION 陳述式之前。

    2. 在使用 DROP TABLE 移除所有 NDBCLUSTER 表格之後。

      TRUNCATE TABLE 對於此目的不起作用,因為這只會移除表格資料;資料節點會繼續儲存 NDBCLUSTER 表格的定義,直到發出導致移除表格中繼資料的 DROP TABLE 陳述式。

    如需有關 DROP NODEGROUP 的更多資訊,請參閱第 25.6.7 節,「線上新增 NDB 叢集資料節點」

  • ENTER SINGLE USER MODE node_id

    進入單一使用者模式,在此模式下,只允許由節點 ID node_id 識別的 MySQL 伺服器存取資料庫。

    ndb_mgm 用戶端會提供明確的確認,表明已發出此命令且已生效,如下所示

    ndb_mgm> ENTER SINGLE USER MODE 100
    Single user mode entered
    Access is granted for API node 100 only.

    此外,在單一使用者模式下具有獨佔存取權的 API 或 SQL 節點會在 SHOW 命令的輸出中指出,如下所示

    ndb_mgm> SHOW
    Cluster Configuration
    ---------------------
    [ndbd(NDB)]     2 node(s)
    id=5    @127.0.0.1  (mysql-8.4.0 ndb-8.4.0, single user mode, Nodegroup: 0, *)
    id=6    @127.0.0.1  (mysql-8.4.0 ndb-8.4.0, single user mode, Nodegroup: 0)
    
    [ndb_mgmd(MGM)] 1 node(s)
    id=50   @127.0.0.1  (mysql-8.4.0 ndb-8.4.0)
    
    [mysqld(API)]   2 node(s)
    id=100  @127.0.0.1  (mysql-8.4.0 ndb-8.4.0, allowed single user)
    id=101 (not connected, accepting connect from any host)
  • EXIT SINGLE USER MODE

    結束單一使用者模式,使所有 SQL 節點(即所有執行中的 mysqld 程序)都可以存取資料庫。

    注意

    即使不在單一使用者模式下也可以使用 EXIT SINGLE USER MODE,但此命令在此情況下無效。

  • HELP

    顯示所有可用命令的相關資訊。

  • 節點ID NODELOG DEBUG {ON|OFF}

    切換節點日誌中的除錯記錄,效果如同使用 --verbose 選項啟動受影響的資料節點一樣。NODELOG DEBUG ON 開啟除錯記錄;NODELOG DEBUG OFF 關閉除錯記錄。

  • PROMPT [提示字元]

    ndb_mgm 顯示的提示字元變更為字串文字 提示字元

    提示字元 不應使用引號 (除非您希望提示字元包含引號)。與 mysql 用戶端不同,特殊字元序列和跳脫字元不被識別。如果未帶任何引數呼叫,此命令會將提示字元重設為預設值 (ndb_mgm>)。

    此處顯示一些範例

    ndb_mgm> PROMPT mgm#1:
    mgm#1: SHOW
    Cluster Configuration
    ...
    mgm#1: PROMPT mymgm >
    mymgm > PROMPT 'mymgm:'
    'mymgm:' PROMPT  mymgm:
    mymgm: PROMPT
    ndb_mgm> EXIT
    $>

    請注意,提示字元 字串中開頭的空格和內部的空格不會被刪除。尾隨的空格會被刪除。

  • QUIT, EXIT

    終止管理用戶端。

    此命令不影響任何連接到叢集的節點。

  • 節點ID REPORT 報告類型

    顯示由 節點ID 識別的資料節點,或使用 ALL 顯示所有資料節點的 報告類型 報告。

    目前,報告類型 接受三個值

    • BackupStatus 提供正在進行的叢集備份的狀態報告

    • MemoryUsage 顯示每個資料節點正在使用的資料記憶體和索引記憶體數量,如下例所示

      ndb_mgm> ALL REPORT MEMORY
      
      Node 1: Data usage is 5%(177 32K pages of total 3200)
      Node 1: Index usage is 0%(108 8K pages of total 12832)
      Node 2: Data usage is 5%(177 32K pages of total 3200)
      Node 2: Index usage is 0%(108 8K pages of total 12832)

      此資訊也可從 ndbinfo.memoryusage 資料表取得。

    • EventLog 報告來自一個或多個資料節點的事件日誌緩衝區中的事件。

    報告類型 不區分大小寫,且是模糊;對於 MemoryUsage,您可以使用 MEMORY(如先前範例所示)、memory 甚至是簡單的 MEM(或 mem)。您可以使用類似的方式縮寫 BackupStatus

  • 節點ID RESTART [-n] [-i] [-a] [-f]

    重新啟動由 節點ID 識別的資料節點(或所有資料節點)。

    -i 選項與 RESTART 一起使用會導致資料節點執行初始重新啟動;也就是說,節點的檔案系統會被刪除並重新建立。其效果與停止資料節點程序,然後使用系統 Shell 中的 ndbd --initial 重新啟動它所獲得的效果相同。

    注意

    使用此選項時,不會移除備份檔案和磁碟資料檔案。

    使用 -n 選項會導致重新啟動資料節點程序,但直到發出適當的 START 命令後,資料節點才會實際連線。此選項的效果與停止資料節點,然後使用系統 Shell 中的 ndbd --nostartndbd -n 重新啟動它所獲得的效果相同。

    使用 -a 會導致中止所有目前依賴此節點的交易。節點重新加入叢集時,不會執行 GCP 檢查。

    通常,如果讓節點離線會導致叢集不完整,RESTART 會失敗。-f 選項會強制節點重新啟動,而不檢查此情況。如果使用此選項且結果是叢集不完整,則會重新啟動整個叢集。

  • SHOW

    顯示關於叢集和叢集節點的基本資訊。對於所有節點,輸出會包括節點的 ID、類型和 NDB 軟體版本。如果節點已連線,也會顯示其 IP 位址;否則輸出會顯示 not connected, accepting connect from ip_address,對於允許從任何位址連線的節點,則使用 any host

    此外,對於資料節點,如果節點尚未啟動,輸出會包括 starting,並顯示節點所屬的節點群組。如果資料節點作為主要節點,則會以星號 (*) 表示。

    考慮一個其組態檔案包含此處所示資訊的叢集 (為了清楚起見,省略了其他可能的設定)

    [ndbd default]
    DataMemory= 128G
    NoOfReplicas= 2
    
    [ndb_mgmd]
    NodeId=50
    HostName=198.51.100.150
    
    [ndbd]
    NodeId=5
    HostName=198.51.100.10
    DataDir=/var/lib/mysql-cluster
    
    [ndbd]
    NodeId=6
    HostName=198.51.100.20
    DataDir=/var/lib/mysql-cluster
    
    [ndbd]
    NodeId=7
    HostName=198.51.100.30
    DataDir=/var/lib/mysql-cluster
    
    [ndbd]
    NodeId=8
    HostName=198.51.100.40
    DataDir=/var/lib/mysql-cluster
    
    [mysqld]
    NodeId=100
    HostName=198.51.100.100
    
    [api]
    NodeId=101

    在啟動此叢集 (包括一個 SQL 節點) 之後,SHOW 會顯示以下輸出

    ndb_mgm> SHOW
    Connected to Management Server at: localhost:1186 (using cleartext)
    Cluster Configuration
    ---------------------
    [ndbd(NDB)]     4 node(s)
    id=5    @198.51.100.10  (mysql-8.4.0 ndb-8.4.0, Nodegroup: 0, *)
    id=6    @198.51.100.20  (mysql-8.4.0 ndb-8.4.0, Nodegroup: 0)
    id=7    @198.51.100.30  (mysql-8.4.0 ndb-8.4.0, Nodegroup: 1)
    id=8    @198.51.100.40  (mysql-8.4.0 ndb-8.4.0, Nodegroup: 1)
    
    [ndb_mgmd(MGM)] 1 node(s)
    id=50   @198.51.100.150  (mysql-8.4.0 ndb-8.4.0)
    
    [mysqld(API)]   2 node(s)
    id=100  @198.51.100.100  (mysql-8.4.0 ndb-8.4.0)
    id=101 (not connected, accepting connect from any host)

    此命令的輸出也會指出叢集何時處於單一使用者模式 (請參閱 ENTER SINGLE USER MODE 命令以及 第 25.6.6 節「NDB 叢集單一使用者模式」 的描述)。它也會指出當此模式生效時,哪個 API 或 SQL 節點具有獨佔存取權。

  • SHUTDOWN

    關閉所有叢集資料節點和管理節點。完成此操作後,若要結束管理用戶端,請使用 EXITQUIT

    此命令不會關閉任何連線到叢集的 SQL 節點或 API 節點。

  • 節點ID START

    使由 節點ID 識別的資料節點(或所有資料節點)連線。

    ALL START 僅適用於所有資料節點,且不影響管理節點。

    重要事項

    若要使用此命令讓資料節點連線,必須使用 --nostart-n 啟動資料節點。

  • 節點ID STATUS

    顯示由 節點ID 識別的資料節點(或所有資料節點)的狀態資訊。

    可能的節點狀態值包括 UNKNOWNNO_CONTACTNOT_STARTEDSTARTINGSTARTEDSHUTTING_DOWNRESTARTING

    此命令的輸出也會指出叢集何時處於單一使用者模式。

  • 節點ID STOP [-a] [-f]

    停止由 節點ID 識別的資料節點或管理節點。

    注意

    ALL STOP 僅適用於停止所有資料節點,且不影響管理節點。

    受此命令影響的節點會從叢集中斷連線,且其相關聯的 ndbdndb_mgmd 程序會終止。

    -a 選項會導致立即停止節點,而不等待任何擱置交易完成。

    通常,如果結果會導致叢集不完整,STOP 會失敗。-f 選項會強制節點關閉,而不檢查此情況。如果使用此選項且結果是叢集不完整,則會立即關閉叢集。

    警告

    使用 -a 選項也會停用在呼叫 STOP 時執行,以確保停止節點不會導致叢集不完整的安全檢查。換句話說,您在使用具有 STOP 命令的 -a 選項時應格外小心,因為此選項可能會導致叢集強制關閉,因為它不再具有儲存在 NDB 中的所有資料的完整副本。

  • TLS INFO

    顯示叢集 TLS 資訊,例如目前連線是否使用 TLS、管理節點目前已知的 TLS 憑證,以及管理節點的總連線數、升級至 TLS 的連線數和授權失敗次數。此處顯示範例輸出

    ndb_mgm> TLS INFO
    
    Session ID:          1
    Peer address:        127.0.0.1
    Certificate name:    NDB Management Node Jun 2023
    Certificate serial:  B5:23:8F:D1:11:85:E5:93:ED
    Certificate expires: 23-Nov-2023
    
    Server statistics since restart
    Total accepted connections:        6
    Total connections upgraded to TLS: 2
    Current connections:               3
    Current connections using TLS:     2
    Authorization failures:            0
    
    ndb_mgm>

    如需詳細資訊,請參閱第 25.6.15 節「NDB 叢集的 TLS 連結加密」

其他命令。ndb_mgm 用戶端中可用的許多其他命令會在其他地方說明,如下列清單所示