集群管理
集群管理客户端工具(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