元数据不一致类问题 主备节点之间元数据不一致问题 问题描述 同一组CN、DN的主备节点之间元数据不同步,可以理解为在主节点上执行的DDL语句,还没有同步到备节点,或者WAL日志已同步但未应用。 注意:该问题通过pgcheck()无法检测,pgcheck()只检测主节点内部、主节点之间元数据一致性;但主备节点之间元数据不一致出现后,再发生主备切换,就会导致节点之间的元数据不一致。 可能影响 只读平面的数据因延迟较大而不准确;主节点异常后,可能有丢失数据的风险; 异步复制状态下,如果手动发起切换,可能造成元数据不一致,数据丢失风险; 特别提醒:应定期检查主备节点同步情况,不应有主备同步复制断连、同步延迟过大的问题。 解决步骤 1. 定期巡检,检查主备节点同步延迟情况;可执行以下SQL: select currentsetting('synchronousstandbynames') as synchronousstandbynames,clientaddr,applicationname, pgwallsndiff(pgcurrentwallsn(), replaylsn)/1024/1024 as diff,syncstate from pgstatreplication; 2. 如果备节点未连接、或连接异常,先解决备节点异常问题; 3. 如果备节点与主节点之间复制状态正常,只是同步或应用WAL有延迟,则需要排查解决同步延迟问题。