文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0參考手冊  /  ...  /  NDB叢集管理用戶端中的命令

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

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

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

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

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

  • CONNECT connection-string

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

  • 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  (9.0.0-ndb-9.0.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-9.0.0 ndb-9.0.0, single user mode, Nodegroup: 0, *)
    id=6    @127.0.0.1  (mysql-9.0.0 ndb-9.0.0, single user mode, Nodegroup: 0)
    
    [ndb_mgmd(MGM)] 1 node(s)
    id=50   @127.0.0.1  (mysql-9.0.0 ndb-9.0.0)
    
    [mysqld(API)]   2 node(s)
    id=100  @127.0.0.1  (mysql-9.0.0 ndb-9.0.0, allowed single user)
    id=101 (not connected, accepting connect from any host)
  • EXIT SINGLE USER MODE

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

    注意

    即使不在單一使用者模式下,也可以使用EXIT SINGLE USER MODE,儘管在這種情況下該命令沒有任何作用。

  • HELP

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

  • node_id NODELOG DEBUG {ON|OFF}

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

  • PROMPT [prompt]

    ndb_mgm 顯示的提示符號變更為字串常值 prompt

    prompt 不應加上引號(除非您希望提示符號包含引號)。與 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
    $>

    請注意,前導空格和 prompt 字串內的空格不會被修剪。尾隨空格會被移除。

  • QUIT, EXIT

    終止管理用戶端。

    此指令不會影響連線到叢集的任何節點。

  • node_id REPORT report-type

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

    目前,report-type 接受三個值

    • 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 從一或多個資料節點的事件日誌緩衝區報告事件。

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

  • node_id RESTART [-n] [-i] [-a] [-f]

    重新啟動由 node_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-9.0.0 ndb-9.0.0, Nodegroup: 0, *)
    id=6    @198.51.100.20  (mysql-9.0.0 ndb-9.0.0, Nodegroup: 0)
    id=7    @198.51.100.30  (mysql-9.0.0 ndb-9.0.0, Nodegroup: 1)
    id=8    @198.51.100.40  (mysql-9.0.0 ndb-9.0.0, Nodegroup: 1)
    
    [ndb_mgmd(MGM)] 1 node(s)
    id=50   @198.51.100.150  (mysql-9.0.0 ndb-9.0.0)
    
    [mysqld(API)]   2 node(s)
    id=100  @198.51.100.100  (mysql-9.0.0 ndb-9.0.0)
    id=101 (not connected, accepting connect from any host)

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

  • SHUTDOWN

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

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

  • node_id START

    將由 node_id 識別的資料節點(或所有資料節點)上線。

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

    重要

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

  • node_id STATUS

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

    可能的節點狀態值包括 UNKNOWNNO_CONTACTNOT_STARTEDSTARTINGSTARTEDSHUTTING_DOWNRESTARTING

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

  • node_id STOP [-a] [-f]

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

    注意

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

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

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

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

    警告

    使用 -a 選項也會停用在呼叫 STOP 時執行的安全檢查,以確保停止節點不會導致叢集不完整。換句話說,當將 -a 選項與 STOP 指令搭配使用時,應格外小心,因為此選項可能會強制叢集關閉,原因是它不再具有儲存在 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 用戶端中提供的許多其他指令會在其他地方說明,如下列清單所示