元数据不一致类问题 本页介绍天翼云TeleDB数据库数据不一致类问题。 单节点内部元数据不一致类问题 问题描述 单个CN或DN主节点内部元数据不一致问题,对应pgcheck()元数据检查返回类型“intercheck”,例如:pgclass.relhasindex标识该表是否有索引,如果和索引不一致,则会检测出来;有表,但是pgattribute中没有表记录。 例如,以下select from pgcheck(); 查询结果: 产生元数据不一致的主要原因:在元数据缺失的节点上,主节点和备节点不同步,DDL语句在备节点未应用时,发起了主备切换,备升主后,该备节点元数据与其它主节点不一致。 可能影响 索引不准确,可能会导致执行计划生成不准; 元数据不一致,可能会导致对象访问出错,例如表缺少字段,访问表时会出错。 解决步骤 1. 元数据不一致检查及分析 首先根据select from pgcheck();结果梳理和分析元数据不一致情况,第一列checktypeintercheck,表示为节点内存部元数据不一致,然后根据查询结果再进一步分析,常见的情况: 1)pgclass.relhasindex与表的实际索引情况不一致,例如上面查询结果,cn001节点pgclass.relhasindex和pgindex的元数据不一致。 检查办法: a、根据检查结果,拼出SQL如下,得到testvarchar2表索引testvarhcar2ididex; teledb select indexrelid::regclass,indrelid::regclass from pgindex where indexrelid34461; indexrelid indrelid + testvarchar2ididx testvarchar2 (1 row) b、拼出SQL如下,得到pgclass.relhasindexf,表示该表上没有索引; teledb