NineData 内置 MetaDB 空间检查与元数据清理
本文介绍内置 MetaDB 的空间检查和元数据表清理方法,适用于 NineData 社区版(含历史版本)及专属集群各版本。外置 MetaDB 不在本文范围内。清理方法会清空整张表,不按单个任务筛选记录;执行前必须确认目标实例、备份和清理条件。
获取 MetaDB 账号和密码
在有权限访问部署主机的终端中,按部署形态读取 MetaDB 用户名和密码。以下命令适用于使用项目文档所述标准容器和命名空间的部署;如果容器名或命名空间经过修改,先按实际部署配置调整命令。
社区版
docker exec -it ninedata sh -lc "kubectl get cm jzcloud-console-config -n ninedata -o jsonpath='{.data.spring\.datasource\.druid\.username}'"
docker exec -it ninedata sh -lc "kubectl get secret ninedata-secret -n ninedata -o jsonpath='{.data.mysqlPassword}' | base64 -d"
专属集群
docker exec -it ninedata sh -lc "kubectl get secret mysql-privsecrets -n ninedata -o jsonpath='{.data.clusterAdminUsername}' | base64 -d"
docker exec -it ninedata sh -lc "kubectl get secret mysql-privsecrets -n ninedata -o jsonpath='{.data.clusterAdminPassword}' | base64 -d"
密码读取命令会在终端输出密码。请只在受控终端中运行,不要把密码复制到工单、聊天、文档、截图或日志中。
通过控制台访问 MetaDB
使用已录入控制台的 MetaDB 数据源访问内置 MetaDB,不需要在 SQL 窗口中重新输入密码。
登录 NineData 控制台。
在左侧导航栏单击"SQL 窗口"。
在 SQL 窗口中打开已有的
MetaDB标签页。数据库列表中包含information_schema和replication_metastore。确认当前数据库为
information_schema,在 SQL 编辑器中运行只读查询,查看replication_metastore各表的数据与索引空间值。结果单位为 MiB:SELECT TABLE_NAME,
ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS SIZE_MIB
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'replication_metastore'
ORDER BY DATA_LENGTH + INDEX_LENGTH DESC;
查询结果来自 MySQL information_schema 的表元数据,不等同于主机文件系统的可用空间。不同实例和不同时间的空间占用会变化;不要把其他环境的截图数值当作本实例的清理阈值。
如需通过命令行直接连接 MySQL,请先按目标主机的实际部署配置确认 MetaDB 服务地址和端口。本文不提供通用的 mysql -h 命令。
清理元数据表
以下步骤是整表清理,不会只删除已终止或已删除任务对应的记录。TRUNCATE 会清空目标表的全部数据;不要将它当作按任务筛选的删除操作。
确认连接的是内置 MetaDB,并在
replication_metastore中确认目标表存在。外置 MetaDB 不使用本文步骤。通过适用于该部署形态的 MetaDB 备份方案,备份
replication_metastore,并确认备份可恢复后再继续。空间不足、需要回收列元数据时,执行:
TRUNCATE TABLE replication_metastore.capture_meta_column;执行后核对该表已清空:
SELECT COUNT(*) AS row_count
FROM replication_metastore.capture_meta_column;只有在确认所有复制任务均已终止或删除后,且仍需回收索引元数据空间时,才执行:
TRUNCATE TABLE replication_metastore.capture_meta_index;执行后核对该表已清空:
SELECT COUNT(*) AS row_count
FROM replication_metastore.capture_meta_index;不要清理
capture_meta_ddl、capture_meta_table_revision和capture_meta_table。清理后重新运行本文的空间查询,核对目标表行数为
0且空间值有相应变化;如结果与预期不符或任务出现异常,停止后续操作并按备份恢复流程处理。
清理规则适用于本文范围内的内置 MetaDB 版本。不同版本的表结构可能有差异;执行前核对目标表存在并复核备份。不要对其他 capture_meta_* 表套用上述命令。