注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它对 Oracle Cloud Infrastructure 身份证明、租户和区间使用示例值。完成实验室后,请使用特定于云环境的那些值替换这些值。
使用 OCI GoldenGate 将内部部署 PostgreSQL 数据库迁移到 OCI 数据库 PostgreSQL
简介
Oracle Cloud Infrastructure Database with PostgreSQL (OCI Database with PostgreSQL) 是一项全托管式服务,可在创建或删除数据库表时自动扩展存储。这样可以简化管理并优化存储成本。传输中数据和静态数据都进行加密。
OCI GoldenGate 支持逻辑联机迁移,支持使用 PostgreSQL 服务数据库的 OCI 数据库实现无缝转换和几乎零停机迁移。此功能支持使用 PostgreSQL 服务版本 14、15 个数据库和未来发行版将 VM 上的内部部署 PostgreSQL 数据库迁移到 OCI 数据库。
本教程概述了 OCI GoldenGate 如何帮助将 VM 版本 14 上的内部部署 PostgreSQL 数据库迁移到具有 PostgreSQL 服务数据库版本 14 的 OCI 数据库。初始加载使用 pg_dump
(pg_dumpall
)/pg_restore
备份实用程序执行。这将创建源数据库的备份或快照,该备份或快照将在目标系统上还原,然后进行 OCI GoldenGate 更改数据捕获 (CDC) 复制以同步源(内部部署 VM PostgreSQL 数据库)和目标(使用 PostgreSQL 服务的 OCI 数据库)。
下图显示了使用 OCI GoldenGate 将 VM 上的内部部署 PostgreSQL 数据库迁移到 OCI 数据库的体系结构。
目标
- 使用 OCI GoldenGate 迁移至 OCI Database with PostgreSQL 服务。
先决条件
注:这些先决条件适用于 VM(源)上的内部部署 PostgreSQL 数据库。
-
test_decoding
插件: OCI GoldenGate 要求在 PostgreSQL 数据库上安装test_decoding
数据库插件。默认情况下,此插件可能无法安装。 -
PostgreSQL Contrib Package(内容包):确保在数据库服务器上安装了
postgresqlversion#-contrib
软件包。 -
客户机库兼容性:PostgreSQL 客户机库应与数据库版本匹配。请注意,不支持低于 10 的客户端版本。
sudo yum install postgresql14-contrib (our database is version 14)
任务 1:准备源数据库环境
-
运行以下查询以创建复制用户,在 OCI 控制台中创建连接时应使用此用户。
create user ggadmin with password ‘<<password>>’; GRANT ALL PRIVILEGES ON DATABASE campaign TO ggadmin; alter user ggadmin replication; alter user ggadmin with superuser;
-
应更改以下参数,并重新启动数据库系统,以便修改
wal_level
。ALTER SYSTEM SET wal_level = logical; ALTER SYSTEM SET track_commit_timestamp = on;
任务 2:预配 OCI GoldenGate 和配置连接
-
登录到 OCI 控制台并为 PostgreSQL 数据库创建 OCI GoldenGate 部署。
-
为 OCI PostgreSQL 创建 OCI GoldenGate 连接。
-
输入源连接详细信息,然后单击创建。
-
输入目标连接详细信息,然后单击创建。
注:如果为 VM 创建了连接,SSL 协议应为普通,对于具有 PostgreSQL 服务的 OCI 数据库,SSL 协议应为必需。
-
-
单击创建以创建连接。
任务 3:设置源数据库复制
-
在 OCI GoldenGate 中创建提取。
注:在源数据库中为所有合格方案添加方案 trandata,然后单击提交。
注:单击 CREATE ,不要单击 CREATE and RUN 。
-
在源数据库中创建一个临时复制插槽,该插槽将用于为提取进程和定位 PostgreSQL 快照创建起点。这可以使用
CREATE_REPLICATION_SLOT
命令完成。按照以下步骤配置临时复制插槽:-
使用
psql
作为具有复制角色的用户(例如postgres
或ggadmin
用户)登录到 PostgreSQL 数据库。 -
使用
replication=database
选项。psql "dbname=pgsource replication=database user=postgres" CREATE_REPLICATION_SLOT tslot TEMPORARY LOGICAL test_decoding EXPORT_SNAPSHOT; slot_name | consistent_point | snapshot_name | output_plugin ----------+------------------+---------------+--------------------- tslot | 1/4232A6B0 | 00000007-00001142-1 | test_decoding
-
请注意
snapshot_name
和consistent_point
详细信息。注:
consistent_point
应用于定位 OCI GoldenGate 提取并启动提取以捕获 CDC 事务处理。snapshot_name
应用于使用pg_dump
和pg_restore
从源数据库到目标数据库的初始加载。
-
-
将 OCI Goldengate Extract 定位到
consistent_point
日志序号 (LSN)。创建的 CDC 提取将处于停止状态。
在操作下,单击 ... 图标并选择更改。
将任务 3.2 中捕获的 LSN 的位置更改为
consistent_point
。 -
单击提交并启动提取流程。
提取将处于运行状态,并将从更改的位置开始 CDC 捕获。
任务 4:在源数据库和目标数据库上运行备份和还原
-
运行以下命令来备份源主数据库。
nohup /u01/pgsql-14/bin/pg_dump -h <<Sourceip>> -p 5432 -U <<superuser/ggadmin user>> –snapshot=00000007-00001142-1 -F c -b -v -f latestdump.db pgsource &
-
运行以下命令以将转储还原到目标数据库。
nohup /u01/pgsql-14/bin/pg_restore -h <<Targetip>> -p 5432 -U admin -d pgtarget -v latestdump.db &
任务 5:设置目标数据库复制
-
在 OCI GoldenGate 目标数据库上的任何可用方案中创建检查点表,然后单击提交。
-
创建具有目标数据库连接的复制进程以将 CDC 数据应用于目标数据库。
-
单击 submit 并启动复制。允许其同步。
任务 6:执行实际迁移
使用 PostgreSQL 服务从本地 VM PostgreSQL 数据库切换到 OCI 数据库。
-
执行连接到源 VM 数据库的应用程序下滚。
-
确保与源 VM 数据库没有数据库连接。
-
确保提取/复制流程没有滞后,并执行切换,将应用程序指向目标 OCI 数据库,使用 PostgreSQL 服务停止提取/复制流程。
任务 7:验证迁移
使用 PostgreSQL 验证 OCI 数据库中目标数据库系统上传输的数据库对象和数据,以确保迁移成功,并且不存在问题或差异。
相关链接
- 使用 OCI GoldenGate 将本地部署 PostgreSQL 数据库无缝迁移到 OCI Database,使用 PostgreSQL
- 导入、导出和迁移数据库
- 使用 pg_dump 在 PostgreSQL 环境之间精确实例化
确认
- 作者 — Saravanadurai Rajendran(电梯实施专家—数据库)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Migrate an On-Premises PostgreSQL Database to OCI Database with PostgreSQL using OCI GoldenGate
G29131-01
Copyright ©2025, Oracle and/or its affiliates.