MetaDB 状态检查与基础维护
本文档介绍如何在高可用版 NineData 部署中查看 MetaDB 状态,并获取后续维护所需的关键信息。
当前 HA 部署中的 MetaDB 运行在 Kubernetes 中,日常检查通常通过 kubectl 配合 mysql、mysqlsh 完成。
步骤一:确认 Kubernetes 访问正常
登录一台可访问 NineData Kubernetes 集群的 Master 节点。
执行以下命令,确认
kubectl可用:kubectl version --client确认
jz-component命名空间存在:kubectl get ns jz-component
步骤二:确认 MetaDB 凭据与实例状态
查看 MetaDB 凭据 Secret 是否存在:
kubectl get secret -n jz-component ninedata-pwds查看 MetaDB Pod 状态:
kubectl get pods -n jz-component -o wide | grep ninedata-meta-cluster如需同时查看 MetaDB 实例数与当前集群状态,可执行:
kubectl get innodbcluster -n jz-component ninedata-meta-cluster -o yaml参数说明instances表示 MetaDB 规划的实例数。onlineInstances表示当前在线实例数。status用于查看当前集群状态,例如ONLINE。
步骤三:获取 MetaDB 管理账号密码
执行以下命令,将 root 密码写入当前会话的环境变量:
ROOT_PWD=$(kubectl get secret -n jz-component ninedata-pwds -o jsonpath='{.data.rootPassword}' | base64 -d)
后续命令可直接复用该变量,无需手工复制密码。
步骤四:通过 MySQL 检查实例基础信息
执行以下命令,查看实例主机名、实例 UUID 和读写状态:
kubectl exec -n jz-component ninedata-meta-cluster-0 -c mysql -- sh -lc \
"MYSQL_PWD='$ROOT_PWD' mysql -uroot -Nse \"select @@hostname as host, @@server_uuid as server_uuid, @@read_only as read_only;\""
返回结果中:
host表示当前 MetaDB 实例名。server_uuid表示该实例的唯一标识。read_only为0表示当前实例可写。
步骤五:通过 MySQL Shell 查看集群状态
执行以下命令,获取 InnoDBCluster 的详细状态信息:
kubectl exec -n jz-component ninedata-meta-cluster-0 -c sidecar -- sh -lc \
"mysqlsh --js --user=root --password='$ROOT_PWD' --host=127.0.0.1 --port=3306 -e 'var s=dba.getCluster().status(); print(JSON.stringify(s, null, 2))'"
重点关注以下字段:
defaultReplicaSet.status:当前集群状态。statusText:当前集群状态说明。primary:当前 Primary 实例地址。topology:各实例的角色、状态和版本信息。
步骤六:结束检查并清理本地变量
检查完成后,建议清理当前会话中的密码变量:
unset ROOT_PWD
维护建议
- 建议所有 MetaDB 检查操作都在可执行
kubectl的 Master 节点上完成。 - 在执行任何高风险维护动作前,建议先查看
innodbcluster当前实例数和mysqlsh返回的集群状态。 - 当 MetaDB 处于单实例部署时,不具备故障容忍能力,建议在维护窗口内进行相关操作。
- 如需进行多实例切换、节点重建或拓扑调整,请先确认当前 MetaDB 的实际部署方式,再执行对应的维护流程。