自建PostgreSQL迁移至RDS PostgreSQL
本文主要介绍自建 PostgreSQL 实例和云数据库 RDS PostgreSQL 实例之间的数据迁移。
前提条件
- 自建 PostgreSQL 数据库版本为 9.4、10.10 及以上版本。
- 已创建存储空间大于自建 PostgreSQL 数据库占用存储空间的目标 RDS PostgreSQL 实例。创建方式,请参见 创建 PostgreSQL 实例。
限制说明
类型 | 说明 |
---|---|
源端限制 |
|
其他限制 |
|
特殊情况 | 当目标库为 RDS PostgreSQL 时:
|
支持的SQL操作
操作类型 | SQL操作语句 |
---|---|
DML | INSERT、UPDATE、DELETE |
数据库账号权限要求
数据库 | 结构迁移 | 全量迁移 | 增量迁移 |
---|---|---|---|
源端 | pg_catalog 的 usage 权限 | 迁移对象的 select 权限 | superuser |
目标端 | 迁移对象的 create、usage 权限 | schema 的 owner 权限 | schema 的 owner 权限 |
说明
- 自建 PostgreSQL 数据库,数据库账号创建及授权方法请参见 CREATE USER 和 GRANT 语法。
准备工作
网络准备
将 DTS 的 IP 地址加入至自建 PostgreSQL 的配置文件 pg_hba.conf 中,并启用复制和套接字连接。
# Replication Instance
host all all 10.1.4.56/00 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
host replication dms 10.1.4.56/00 md5
迁移准备
PostgreSQL 的 pg_hba.conf 配置文件控制客户端身份验证。文件通常存储在数据库集群的数据目录中。
-
安装逻辑流复制插件
登录自建 PostgreSQL 所属的服务器,下载 wal2json 逻辑流复制插件,下载地址如下: https://github.com/eulerto/wal2json 按照官方指导安装 wal2json 插件。
-
修改 PostgreSQL postgresql.conf 配置文件中的如下参数:
- 将 max_replication_slots 设置为大于 1 的整数,max_replication_slots 的值应根据您需要同时运行的任务数进行设置。例如,要同时运行十二个任务,您需要设置至少十二个 slot。
示例:
max_replication_slots = 12
- 将 wal_level 设置为 logical,开启 wal 逻辑日志。
示例:
wal_level = logical
- 将 wal_sender_timeout 设置为 0,复制连接处于不活跃状态的时间超过 wal_sender_timeout 时,会被源端库终止。该参数的默认值为 60 秒,但我们建议您将该参数设置为零,这样会禁用超时机制。
示例:
wal_sender_timeout = 0
- 将 max_wal_senders 设置为大于 10 的整数,max_wal_senders 参数用于设置可以运行的并发任务数,建议和 max_replication_slots 设置的值一致。
示例:
max_wal_senders = 12
- 重启 PostgreSQL 数据库
-
将要迁移表的 replica identity 设置为 FULL
ALTER TABLE TABLENAME REPLICA IDENTITY FULL;
操作步骤
- 登录 DTS 控制台。
- 点击 创建数据传输任务 进入 DTS 创建任务页面,详情参见 购买流程。
- 创建任务成功后自动返回任务列表页面,选择新创建的任务,点击 更多操作—>配置任务。
-
在配置任务页面,配置源库及目标库信息,本文以 公网 接入方式为例介绍配置流程。
配置流程 类别 配置 说明 任务基本属性 任务名称 DTS 会自动生成一个任务名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。 源端连接设置 IP/端口 填入源端 PostgreSQL 数据库的访问 IP 与端口,本示例中填入公网地址。 数据库 选择默认连接的数据库。 账号 填入源端 PostgreSQL 数据库的账号。 密码 填入该数据库账号对应的密码。 目标端连接设置 实例 ID 选择目标 RDS PostgreSQL 实例 ID。 数据库 选择默认连接的数据库。 -
配置完成后,点击页面下方的 授权白名单进入下一步。
如果源或目标数据库是 BCC/BBC/DCC 自建或 IDC 自建数据库或其他云数据库,则需要您手动添加对应地区 DTS 服务的 IP 地址,以允许来自 DTS 服务器的访问。
警告:
DTS 自动添加或您手动添加 DTS 服务的 IP 地址段可能会存在安全风险,一旦使用本产品代表您已理解和确认其中可能存在的安全风险,并且需要您做好基本的安全防护,包括但不限于加强账号密码强度防范、限制各网段开放的端口号、内部各 API 使用鉴权方式通信、定期检查并限制不需要的网段等等。
-
配置任务对象映射。
配置 说明 迁移类型 根据需求及各引擎对迁移类型的支持情况,选择迁移类型。 限制传输速度 根据实际情况,选择是否对全量迁移和增量同步任务进行更细粒度的限流策略设置(设置 每秒迁移的行数 和 每秒迁移的数据量),以缓解目标库压力。详情参见:迁移限速。 传输对象 手动选择:选择此选项时,在页面左侧选择需要迁移的库表,库表信息将会被自动添加到页面右侧。模式匹配:详情参见:模式匹配。 -
上述配置完成后,点击页面下方的 保存并预检查。
说明
- 在迁移任务正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动迁移任务。
- 如果预检查失败,请查看失败检查项的提示,并根据提示修复后重新进行预检查。
-
如果预检查产生警告:
- 对于不可以忽略的检查项,请查看失败检查项的提示,并根据提示修复后重新进行预检查。
- 对于可以忽略无需修复的检查项,您可以点击 强制通过,在弹出的窗口中勾选风险确认信息并点击 确定,跳过告警检查项重新进行预检查。如果选择屏蔽告警检查项,可能会导致数据不一致等问题,给业务带来风险。
- 前置校验提示校验成功后,点击 立即开启任务。
- 迁移任务正式开始,您可以在任务列表页面查看具体进度。
后续操作(可选)
业务切换
详情参见 业务切换流程。