表元数据修复
概述
在 GreptimeDB 分布式环境中,系统采用了分层的元数据管理架构:
- Metasrv:作为元数据管理层,负责维护集群中所有表的元信息
- Datanode:负责实际的数据存储和查询执行,同时会持久化部分表元信息
在理想情况下,Metasrv 和 Datanode 的表元信息应该保持完全一致。但在实际生产环境中,从元数据备份恢复集群的操作可能会导致元数据不一致。
Table Reconciliation 是 GreptimeDB 提供的表元数据修复机制,用于:
- 检测 Metasrv 与 Datanode 之间的元信息差异
- 根据预定义的策略修复不一致问题
- 确保系统能够从异常状态恢复到一致、可用的状态
在开始之前
在开始表元数据修复之前,你需要:
修复场景
Table not found
错误
当集群从特定元数据恢复后,写入和查询可能出现 Table not found
错误。
-
场景一:原集群在备份元数据后新增了表,导致新增表的元数据没有包含在备份中,从而查询这些新增表时出现
Table not found
错误。这种情况下,新建表将丢失,同时你必须手动设置 待分配表 ID,确保恢复后的集群在新创建表时不会因为表 ID 冲突导致创建失败。 -
场景二:原集群在备份元数据后将原有表重命名,这种情况下新表名将丢失。