注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间的示例值。完成实验室时,请将这些值替换为特定于云环境的值。
使用 OCI Object Storage 和 Rclone 通过 PostgreSQL 迁移到 Oracle Cloud Infrastructure Database
简介
Oracle Cloud Infrastructure Database with PostgreSQL(OCI Database with PostgreSQL) 是一项完全托管的服务,可减少打补丁、备份和存储管理等常规任务所花费的时间。其主要功能包括数据库优化的存储体系结构,它将 SQL 事务处理引擎与存储层分离,使用多个副本来提高用户活动、跨区域备份副本以及与开源 PostgreSQL 数据库的完全兼容性。
注意:支持 PostgreSQL 版本 14 和 15(自 2025 年 6 月起)。
OCI Object Storage 可为任何类型的数据提供可扩展、持久、低成本的存储。本教程将用于存储 PostgreSQL 转储文件。
Rclone 是用于管理或传输云存储上的文件的开源命令行程序。
在本教程中,我们将讨论如何使用 PostgreSQL 将数据从内部部署 PostgreSQL 数据库有效迁移到 OCI 数据库。我们将使用 pg_dump
和 pg_restore
实用程序,利用经济高效的 OCI Object Storage 和 Rclone 进行快速、多部分上载和挂载功能。
目标
-
使用
pg_dump
导出 PostgreSQL 数据库。 -
使用克隆将导出的数据文件复制到 OCI 对象存储。
-
使用克隆将 OCI Object Storage 装载到 OCI Compute。
-
使用
pg_restore
直接从 OCI Object Storage 导入数据。
Prerequisites
-
访问 OCI 账户。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
-
具有公共和专用子网的 VCN,请确保在专用子网的 OCI 安全列表中打开端口
5432
。 -
公共子网中的 OCI 计算实例充当堡垒和实用程序节点,并安装了 Rclone 和 PostgreSQL 客户端工具(本教程中称为堡垒,请勿将其与 OCI 堡垒服务混合使用)
-
本教程基于 Oracle Linux 8,其他操作系统的命令可能有所不同。
-
在专用子网中预配了具有 PostgreSQL 的 OCI 数据库。有关详细信息,请参阅使用 PostgreSQL 部署 OCI 数据库。
-
安装了 PostgreSQL 客户端工具的本地 PostgreSQL 内部部署实例。
注意,OCI Always Free Tier 中未提供具有 PostgreSQL 的 OCI 数据库。
任务 1:创建 OCI API 密钥用户身份证明
-
登录到 OCI 控制台,单击概要信息菜单
并选择我的概要信息。
-
在资源中,单击 API 密钥。
-
单击 API 密钥列表左上角的添加 API 密钥。
-
单击下载私钥并将密钥保存到
.oci
目录中。在大多数情况下,您无需下载公钥。 -
单击添加。
此时将添加密钥并显示配置文件预览。文件片段包括创建配置文件所需的参数和值。
user
:为其添加密钥对的用户的 Oracle Cloud 标识符 (OCID)。fingerprint
:刚添加的密钥指纹。tenancy
:贵方租户的 OCID。region
: OCI 控制台中当前选定的区域。key_file
:下载的私钥文件的路径。必须将此值更新为文件系统上保存私有密钥文件的位置的路径。
有关更多信息,请参见 Required Keys and OCIDs 。
任务 2:使用 pg_dump
导出 PostgreSQL 数据
在内部部署主机中,使用 pg_dump
导出 PostgreSQL 数据库。
pg_dump -U your_username -h your_host -p your_port -F c -f /path/to/output.dump your-database-name
-U your_username
:数据库用户名。-h your_host
:运行数据库的主机(例如localhost
)。-p your_port
:端口号(缺省值为5432
)。-F c
:输出的格式(c 表示定制格式,可通过pg_restore
灵活且可恢复)。-f /path/to/output.dump
:将保存转储的文件路径。
your-database-name:要转储的数据库的名称。
任务 3:使用克隆安装、配置和传输数据
-
在内部部署主机中,安装 rclone。
sudo -v ; curl https://rclone.org/install.sh | sudo bash
-
运行以下命令以配置 rclone。
rclone config
有关配置 OCI Object Storage 连接的详细信息,请参阅克隆文档。使用选项 2: OCI 用户和用于验证的 API 密钥(在任务 1 中创建)。
-
使用克隆多部分上载将导出的数据库复制到 OCI 对象存储存储桶。例如:
rclone --progress --oos-no-check-bucket --fast-list --no-traverse --transfers 8 --oos-chunk-size 10M --oos-upload-concurrency 10 --checkers 10 copy <source> <dest>
命令和输出示例:
rclone --progress --oos-no-check-bucket --fast-list --no-traverse --transfers 8 --oos-chunk-size 10M --oos-upload-concurrency 10 --checkers 10 copy output.dump OCI:bucket_db-dump Transferred: 4.500 KiB / 4.500 KiB, 100%, 0 B/s, ETA - Transferred: 1 / 1, 100% Elapsed time: 0.0s
有关详细信息,请参阅使用克隆将数据复制到 Oracle Cloud 以在 Oracle Analytics Cloud 中构建洞察。
任务 4:使用 Rclone 装载 OCI 对象存储
-
在 OCI Compute 堡垒主机中,安装 PostgreSQL 工具。
dnf install postgresql
OCI Database with PostgreSQL 支持版本 14 和 15,因此请相应地安装 PostgreSQL 工具。
sudo dnf module reset postgresql sudo dnf module enable postgresql:15 sudo dnf install postgresql
-
在堡垒主机中安装和配置 rclone- 重复任务 3,步骤 2。
-
使用在任务 3 中复制的数据挂载存储桶。例如,
/mnt/oci
。rclone mount OCI:bucket_db-dump /mnt/oci --vfs-cache-mode full --log-file /home/opc/rclone.log --config ~/.config/rclone/rclone.conf --log-level DEBUG --daemon --attr-timeout 1s
-
检查装载的 OCI 对象存储上的文件。
ls /mnt/oci
任务 5:使用 pg_restore
使用 PostgreSQL 恢复 OCI 数据库
使用装载的文件系统在后台使用具有并行作业的 PostgreSQL 数据库作为守护进程恢复 OCI 数据库。
nohup pg_restore -d test -h <OCI PostgreSQL hostname or IP> -p 5432 -U <dbuser> -v -c -j 10 -F c /mnt/oci/output.dump >import.log 2>&1
在运行 pg_restore 之前,目标数据库(在此示例中为 test )必须已存在。要事先创建数据库,请执行以下操作:
createdb -U postgres -h localhost -p 5432 test
您还可以为进度详细信息添加– verbose,或者在重新创建对象之前添加– clean 来删除对象。
任务 6:验证还原的数据库
使用 psql
,使用 PostgreSQL 登录 OCI 数据库并验证恢复数据的完整性。
psql -h <OCI PostgreSQL hostname or IP> -p 5432 -U <dbuser> -d test
现在,您可以使用 SQL select 语句验证表中的行数。
相关链接
确认
- 作者 — Sylwester Dec(OCI 开源数据黑带)
更多学习资源
通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Migrate to Oracle Cloud Infrastructure Database with PostgreSQL using OCI Object Storage and Rclone
G37267-01
Copyright ©2025, Oracle and/or its affiliates.