云数据库 RDS-最滞后副本滞后量和复制时延高问题定位及处理方法:排查及解决方法

时间:2024-09-06 14:25:14

排查及解决方法

  1. 排查主机业务压力大。

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

    在主机查看管理控制台的监控平台中事务日志生成速率监控项,观察目标时间段事务日志生成速率是否超过40MB/s(一般只读实例回放wal日志的速率大概为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));
    • 若未超过指标阈值,可进行后续步骤排查。
  2. 排查只读副本回放延迟高。

    只读实例上复制延迟出现原因是,当只读实例有长事务或者业务繁忙时,只读上的查询与日志回放出现冲突,只读副本没有将其查询信息反馈给主机,导致回放被延迟。此时可以下载只读实例的错误日志,查看错误日志中是否包含此类报错。

    ERROR: canceling statement due to conflict with recovery
    Detail:  User query might have needed to see row versions that must be removed
    • 若日志中包含此类报错,建议业务按如下方式排查处理。
    • 若无此类报错,可进行后续步骤排查。
  3. 排查主机和只读副本之间网络延迟。

    主机和只读副本之间网络延迟高的表现一般为如下情况,若符合以下现象,可联系华为云客服进行问题具体原因定位。

    在主机上查询sent_lsn和只读副本上pg_last_wal_receive_lsn接收位点的查询结果差异较大,可通过如下SQL来查看。

    1. 在主机上执行以下SQL,并重点关注sent_lsn列的值,记为lsn1。
      select * from pg_stat_replication;
    2. 在只读上查询pg_last_wal_receive_lsn(),接收位点的值,记为lsn2。
      select pg_last_wal_receive_lsn();
    3. 计算主机当前发送位点和只读当前接收位点的距离。
      select  pg_size_pretty(pg_wal_lsn_diff(lsn1,lsn2));
support.huaweicloud.com/usermanual-rds/rds_pg_08_00012.html