更新时间:2025-11-11 GMT+08:00
分享

最滞后副本滞后量和复制时延高问题定位及处理方法

指标异常说明(影响)

  • 最滞后副本滞后量:多个副本中最滞后副本(依据接收到的WAL数据)滞后量。可以通过如下SQL查看多个副本使用复制槽的滞后量情况。
    select slot_name, temporary, active,restart_lsn, confirmed_flush_lsn, master_lsn, pg_size_pretty(pg_wal_lsn_diff(master_lsn, a.restart_lsn)) as latency from pg_replication_slots a, pg_current_wal_lsn() as master_lsn;
  • 复制时延:副本滞后时延,即数据写入主数据库和复制到副本之间的时间延迟。

当数据库最滞后副本滞后量或复制时延高时,可能会产生以下影响:

  • 数据库主服务器会保留所需要的wal日志,使得该部分wal日志无法被清理,从而导致wal日志积压,占用更多的磁盘空间,严重时会导致磁盘满。
  • 复制时延高,说明回放速度落后主机,影响数据实时性。

问题排查思路

TaurusDB for PostgreSQL中,引起指标异常的原因一般是主机业务压力大。

排查及解决方法

排查主机上是否存在大的业务写入或者更新。

在主机查看管理控制台的监控平台中事务日志生成速率监控项,观察目标时间段事务日志生成速率是否超过40MB/s。

  • 若长时间超过指标阈值,说明主机业务压力较大,此时建议优化业务量大小。

    若存在主机业务压力大时,典型的现象还有pg_stat_replication中的sent_lsn和主机上select pg_current_wal_lsn();的查询结果差异较大,可通过如下SQL来查看:

    1. 在主机上执行以下SQL,并重点关注sent_lsn列的值,记为lsn1。
      select * from pg_stat_replication;
    2. 主机上查询当前位点信息,记为lsn2。
      select pg_current_wal_lsn();
    3. 计算主机当前位点和发送的位点的距离。
      select  pg_size_pretty(pg_wal_lsn_diff(lsn1,lsn2));
  • 若未超过指标阈值,可提交工单进行问题具体原因定位。

相关文档