MySQL-NDB集群管理

集群管理

集群管理客户端工具(ndb_mgm)

用法

ndb_mgm> help
---------------------------------------------------------------------------
 NDB Cluster -- Management Client -- Help
---------------------------------------------------------------------------
HELP                                   Print help text
HELP COMMAND                           Print detailed help for COMMAND(e.g. SHOW)
SHOW                                   Print information about cluster
CREATE NODEGROUP <id>,<id>...          Add a Nodegroup containing nodes
DROP NODEGROUP <NG>                    Drop nodegroup with id NG
START BACKUP [NOWAIT | WAIT STARTED | WAIT COMPLETED]
START BACKUP [<backup id>] [NOWAIT | WAIT STARTED | WAIT COMPLETED]
START BACKUP [<backup id>] [SNAPSHOTSTART | SNAPSHOTEND] [NOWAIT | WAIT STARTED | WAIT COMPLETED]
                                       Start backup (default WAIT COMPLETED,SNAPSHOTEND)
ABORT BACKUP <backup id>               Abort backup
SHUTDOWN                               Shutdown all processes in cluster
PROMPT [<prompt-string>]               Toggle the prompt between string specified
                                       or default prompt if no string specified
CLUSTERLOG ON [<severity>] ...         Enable Cluster logging
CLUSTERLOG OFF [<severity>] ...        Disable Cluster logging
CLUSTERLOG TOGGLE [<severity>] ...     Toggle severity filter on/off
CLUSTERLOG INFO                        Print cluster log information
<id> START                             Start data node (started with -n)
<id> RESTART [-n] [-i] [-a] [-f]       Restart data or management server node
<id> STOP [-a] [-f]                    Stop data or management server node
<id> NODELOG DEBUG ON                  Enable Debug logging in node log
<id> NODELOG DEBUG OFF                 Disable Debug logging in node log
ENTER SINGLE USER MODE <id>            Enter single user mode
EXIT SINGLE USER MODE                  Exit single user mode
<id> STATUS                            Print status
<id> CLUSTERLOG {<category>=<level>}+  Set log level for cluster log
PURGE STALE SESSIONS                   Reset reserved nodeid's in the mgmt server
CONNECT [<connectstring>]              Connect to management server (reconnect if already connected)
<id> REPORT <report-type>              Display report for <report-type>
QUIT                                   Quit management client

<severity> = ALERT | CRITICAL | ERROR | WARNING | INFO | DEBUG
<category> = STARTUP | SHUTDOWN | STATISTICS | CHECKPOINT | NODERESTART | CONNECTION | INFO | ERROR | CONGESTION | DEBUG | BACKUP | SCHEMA
<report-type> = BACKUPSTATUS | MEMORYUSAGE | EVENTLOG
<level>    = 0 - 15
<id>       = ALL | Any database node id

For detailed help on COMMAND, use HELP COMMAND.

启动集群

启动服务进程顺序

  • 首先, 在 management node 启动进程

  • 其次,在data nodes 启动进程

  • 最后,在 sql nodes 启动进程

启动命令

Management host
${SOFT_LINK_DIR}/bin/ndb_mgmd -f ${SOFT_LINK_DIR}/config.ini
data node hosts

每个 data node 执行

${SOFT_LINK_DIR}/bin/ndbd
sql node hosts

每个 sql node 启动MySQL server 服务进程

${SOFT_LINK_DIR}/bin/mysqld 

安全的关闭集群

关闭顺序

  • 关闭管理节点(同时停止管理节点和数据节点)
  • 关闭SQL 节点

关闭命令

在 management node 上执行命令

${SOFT_LINK_DIR}/bin/ndb_mgm -e shutdown

在SQL节点执行命令

service mysqld stop

重启集群

  • 在 management node 上执行命令
${SOFT_LINK_DIR}/bin/ndb_mgmd -f ${SOFT_LINK_DIR}/config.ini
  • 在每个 data node hosts 执行命令
${SOFT_LINK_DIR}/bin/ndbd
  • 在每个 sql node hosts 执行命令
${SOFT_LINK_DIR}/bin/mysqld_safe &

检查集群状态

${SOFT_LINK_DIR}/bin/ndb_mgm -e "show"

${SOFT_LINK_DIR}/bin/ndb_mgm -e "status"

数据存储路径

在数据节点上执行lsof -c ndb命令

  • 存储数据的位置在mysql/data/ndb_3_fs/下面(3数字是config.ini的节点id)
  • 各个文件夹中的文件是以16.7M为单位存储的,临时文件达到16.7M后新建一个文件

水平扩展

增加数据节点

下面使用192.168.10.205,192.168.10.206作为数据节点为例说明

检查确认副本数
# 管理节点
grep 'NoOfReplicas' ${SOFT_LINK_DIR}/config.ini
  • 数据节点数量必须要是NoOfReplicas的整数倍

[# 每次增加数据节点数量]= [# NoOfReplicas] * N

  • 节点组是隐式形成的。第一节点组,由具有最低节点ID的数据节点集合形成,下一个节点组,由下一个最低节点标识的集合形成,以此类推。举个例子,假设我们有4个数据节点并且NoOfReplicas设置为2,四个数据节点具有节点ID 2,3,4和5,那么第一个节点组就由节点2和3形成,而第二个节点组由节点4和5组成。同一节点组中的节点不会放在同一台计算机上,因为单个硬件故障会导致整个集群发生故障。如果未提供节点ID,则数据节点的顺序将是节点组的决定因素。如果未提供节点ID,则数据节点的顺序将是节点组的决定因素。
  • 虽然此参数的最大可能值为4,但生产中不支持将NoOfReplicas的值设置为大于2
在管理节点上修改全局配置文件(config.ini)

在${SOFT_LINK_DIR}/config.ini 文件中添加 [ndbd] 标签配置

[ndbd]
HostName=192.168.10.205
NodeId=5
DataDir=${DATA_DIR}

[ndbd]
HostName=192.168.10.206
NodeId=6
DataDir=${DATA_DIR}
在新增的数据节点上安装软件
# 1. 从现有数据节点中复制 ndbd 和 ndbmtd 文件到新数据节点上
scp -r ${SOFT_LINK_DIR} ${SOFT_INSTALL_DIR}
关闭管理节点
ndb_mgm -e "1 stop"
重新加载配置启动管理节点
${SOFT_LINK_DIR}/bin/ndb_mgmd -f ${SOFT_LINK_DIR}/config.ini --initial
  • 用initial或者reload参数重新加载
检查确认集群状态
ndb_mgm -e "show"
配置新增数据节点的配置文件
cat > /etc/my.cnf <<EOF
[mysqld]
ndbcluster                          #运行NDB存储引擎
ndb-connectstring=192.168.10.200    #定位管理节点
[mysql_cluster]
ndb-connectstring=192.168.10.200    #定位管理节点
EOF
轮流重新启动已连接的数据节点
# 停止
ndb_mgm -e "2 stop"

# 启动
${SOFT_LINK_DIR}/bin/ndbd

# 重启
ndb_mgm -e "2 restart"
轮流重新启动连接的sql节点
service mysql restart
初始化新的数据节点
# 在新增数据节点上执行
${SOFT_LINK_DIR}/bin/ndbd  --initial --ndb-connectstring=192.168.10.200
创建一个新的节点组
ndb_mgm>CREATE NODEGROUP 5,6
数据重新分配(可选)

对于新增的数据节点一些访问量较高的数据和比较重要的数据需要从新分配

alter online table test reorganize partition;

-- # 查看数据的分配情况
ndb_mgm>ALL REPORT MEMORY

增加管理节点

编辑全局配置文件(config.ini)
vi ${SOFT_LINK_DIR}/config.ini
# 增加管理节点配置
[ndb_mgmd]
HostName=192.168.10.210
DataDir=${SOFT_LOG_DIR}
从原有管理节点复制文件到新增管理节点
scp 
启动管理节点
${SOFT_LINK_DIR}/bin/ndb_mgmd -f ${SOFT_LINK_DIR}/config.ini --reload
检查集群状态
${SOFT_LINK_DIR}/bin/ndb_mgm -e "show"
修改数据节点和SQL节点(my.cnf)文件
vi /etc/my.cnf
# ndb-connectstring配置,添加一个管理节点信息(以逗号隔开)
ndb-connectstring=192.168.10.200,192.168.10.210
重新启动各个SQL节点和数据节点
# 依次重启管理节点
${SOFT_LINK_DIR}/bin/ndb_mgm -e "2 restart"
${SOFT_LINK_DIR}/bin/ndb_mgm -e "3 restart"

# 重启SQL节点
service mysql restart
posted @ 2021-03-10 13:31  KuBee  阅读(513)  评论(0编辑  收藏  举报