You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS DMS任务失败:无法访问pglogical文件问题排查求助

问题描述

AWS DMS全量加载+持续复制任务稳定运行2个月后突发故障,DMS任务报错:

Last failure message
Last Error Stream Component Fatal error. Task error notification received from subtask 0, thread 0 [reptask/replicationtask.c:2880] [1020101] Error executing source loop; Stream component failed at subtask 0, component; Stream component terminated [reptask/replicationtask.c:2888] [1020101] Stop Reason FATAL_ERROR Error Level FATAL

CloudWatch日志中发现以下错误:

  • NativeError: 1 Message: ERROR: could not access file "pglogical": No such file or directory; Error while executing the query
  • ERROR: relation "pglogical.replication_set" does not exist; No query has been executed with that handle

尝试在postgresql.conf中设置shared_preload_libraries = 'pglogical'后,PostgreSQL无法启动。

环境信息:

  • 源库:PostgreSQL 13.4 (Ubuntu 13.4-1.pgdg18.04+1)
  • 目标库:Aurora PostgreSQL 13.7
  • 源库postgresql.conf相关配置:
wal_level = logical
max_wal_senders = 10            # max number of walsender processes
wal_sender_timeout = 0          # in milliseconds; 0 disables
max_replication_slots = 10      # max number of replication slots
排查解决方法

1. 确认pglogical扩展是否已安装

PostgreSQL启动失败大概率是因为pglogical扩展未实际安装到系统中。执行以下命令检查:

# 查看已安装的PostgreSQL扩展
psql -c "SELECT * FROM pg_extension;"
# 检查系统中是否存在pglogical相关文件
find / -name "pglogical.so" 2>/dev/null

如果未找到,针对Ubuntu系统安装对应版本的pglogical扩展:

sudo apt update
sudo apt install postgresql-13-pglogical

安装完成后再重启PostgreSQL服务。

2. 检查DMS源端点的pglogical配置

确认DMS源端点是否被误启用了pglogical相关设置:

  • 登录AWS控制台进入DMS源端点配置页,检查Use pglogical选项状态
  • 若此前任务未使用pglogical,该选项被开启会导致DMS尝试调用pglogical函数引发报错,关闭后重启DMS任务

3. 核查源库账号的复制权限

确认DMS使用的源库账号权限是否有变更,执行以下SQL检查:

-- 查看账号的复制权限
SELECT usename, userepl FROM pg_user WHERE usename = 'dms_user';
-- 检查是否拥有pglogical相关权限(仅当需要使用pglogical时执行)
SELECT * FROM pg_roles WHERE rolname = 'dms_user';

若权限不足,重新授予必要权限:

ALTER USER dms_user WITH REPLICATION;
GRANT ALL ON SCHEMA pglogical TO dms_user; -- 按需执行

4. 分析PostgreSQL启动失败的具体原因

查看PostgreSQL日志文件(通常位于/var/log/postgresql/目录)定位启动失败细节:

tail -n 50 /var/log/postgresql/postgresql-13-main.log

常见触发原因:

  • pglogical版本与PostgreSQL版本不兼容
  • shared_preload_libraries配置存在扩展冲突
  • pglogical相关文件的所有者不是postgres用户

5. 回退配置并排查故障触发点

先将shared_preload_libraries恢复为之前的有效配置,确保PostgreSQL正常启动,再做以下检查:

  • 查看故障时间点的源库操作日志,确认是否有schema变更、扩展操作、参数修改等行为
  • 检查源库复制槽状态:
SELECT * FROM pg_replication_slots;

若复制槽异常,可尝试删除并重新创建DMS对应的复制槽(操作前需确认无数据丢失风险)

6. 检查DMS任务的配置变更

确认DMS任务的迁移类型、表映射规则是否被修改,是否新增了需要pglogical支持的表或操作,导致DMS调用pglogical组件

内容的提问来源于stack exchange,提问作者Gosia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 04:35:31