跳到主要内容

Amazon RDS PostgreSQL

Doris 持续导入支持从 Amazon RDS PostgreSQL 14 及以上版本 同步数据。在启动同步任务之前,需要在 RDS 实例上启用 逻辑复制(Logical Replication),并完成同步用户、权限与 Publication 的配置。

本文档面向 RDS PostgreSQL 实例管理员,介绍 Doris 持续导入所需的前置准备步骤。

前置检查清单

在开始配置前,请确认以下条件:

检查项要求
RDS PostgreSQL 版本14 及以上
操作权限拥有修改参数组、重启实例的 AWS 权限
数据库权限拥有创建用户、授权及创建 Publication 的权限
维护窗口已规划业务低峰期(修改逻辑复制参数需要重启实例)

配置流程总览

整体配置流程如下:

  1. 检查 rds.logical_replication 当前状态
  2. 创建并配置自定义参数组(若未开启)
  3. 将参数组应用到实例并重启
  4. 创建 Doris 同步用户并授权
  5. 创建供 Doris 订阅的 Publication

步骤一:检查当前配置

目的:确认 RDS 实例当前是否已启用逻辑复制,决定是否需要修改参数组。

连接到 RDS 实例后,执行以下 SQL:

SHOW rds.logical_replication;

根据结果选择后续路径:

返回值含义后续步骤
on已启用逻辑复制跳转到 步骤四:创建同步用户
off未启用逻辑复制继续执行 步骤二

步骤二:配置参数组

目的:创建自定义参数组并将 rds.logical_replication 设置为开启状态。

操作步骤:

  1. 登录 AWS RDS 控制台

  2. 在左侧导航栏选择 Parameter groups,点击 Create parameter group

  3. 选择与目标实例匹配的 PostgreSQL 版本族,创建新的参数组。

  4. 编辑参数组,搜索 rds.logical_replication,将其值设置为 1

    PostgreSQL WAL Setting

  5. 点击 Save Changes 保存。

关键参数说明:

参数设置值说明
rds.logical_replication1启用逻辑复制;等价于将 wal_level 设为 logical

步骤三:应用参数组并重启

目的:将新参数组绑定到 RDS 实例,并通过重启使配置生效。

操作步骤:

  1. 在 RDS 控制台选择目标实例,点击 Modify
  2. DB parameter group 中选择 步骤二 中创建的参数组。
  3. 选择 Apply immediately,立即应用变更。
  4. 重启 RDS 实例使配置生效。
警告

修改 rds.logical_replication 参数需要重启 RDS 实例才能生效,请在业务低峰期进行操作。


步骤四:创建同步用户

目的:创建专用于 Doris 持续导入的数据库账号,并授予所需的读权限与复制权限。

1. 创建用户

CREATE USER doris_sync PASSWORD '<password>';

2. 授予 Schema 访问权限

public Schema 为例,请根据实际需要替换为目标 Schema:

GRANT USAGE ON SCHEMA "public" TO doris_sync;
GRANT SELECT ON ALL TABLES IN SCHEMA "public" TO doris_sync;
ALTER DEFAULT PRIVILEGES IN SCHEMA "public" GRANT SELECT ON TABLES TO doris_sync;

3. 授予复制权限

GRANT rds_replication TO doris_sync;
提示

Amazon RDS PostgreSQL 使用 rds_replication 角色来授予复制权限,而非标准 PostgreSQL 的 REPLICATION 属性。

权限一览:

权限项作用
USAGE ON SCHEMA允许访问指定 Schema
SELECT ON ALL TABLES允许读取 Schema 下所有现有表
ALTER DEFAULT PRIVILEGES ... SELECT自动对未来新增的表赋予 SELECT 权限
rds_replication在 RDS 中执行逻辑复制所需的角色

步骤五:创建 Publication

目的:创建 Doris 订阅所使用的 Publication。

执行以下 SQL:

CREATE PUBLICATION dbz_publication FOR ALL TABLES;
警告

目前 Doris 仅支持名为 dbz_publication 的 Publication,且必须为 FOR ALL TABLES,暂不支持自定义 Publication 名称或仅指定部分表。

备注:如果同步用户拥有 superuser 权限(如 rds_superuser 角色),Doris 会在任务启动时自动创建该 Publication,无需手动执行此步骤。


FAQ

Q1:执行 SHOW rds.logical_replication; 返回 on,是否还需要重启实例?

不需要。on 表示逻辑复制已经生效,可以直接跳到 步骤四:创建同步用户

Q2:可以使用其他名称的 Publication 吗?

不可以。Doris 当前仅支持名为 dbz_publication 的 Publication,且必须为 FOR ALL TABLES

Q3:是否必须使用 rds_replication 角色?

是的。RDS PostgreSQL 出于安全限制不允许使用标准 PostgreSQL 的 REPLICATION 属性,必须通过 GRANT rds_replication 授权。

Q4:是否一定要手动创建 Publication?

不一定。如果同步用户拥有 rds_superuser 等 superuser 权限,Doris 会自动创建 dbz_publication,可省略 步骤五


Troubleshooting

现象可能原因解决方案
SHOW rds.logical_replication; 仍为 off参数组未绑定到实例 / 未重启检查实例是否使用了新的参数组,并执行重启
创建用户报权限错误当前账号权限不足使用具有创建用户权限的管理员账号执行
GRANT rds_replication 报错当前账号无权授予该角色使用 rds_superuser 账号或具备授予权限的账号执行
Doris 任务报 Publication 不存在未创建 dbz_publication 或权限不足手动执行 步骤五,或为同步用户授予 superuser 权限
修改参数后未生效未选择 Apply immediately 或未重启重新执行 步骤三