注意:

使用 OCI Object Storage 和 Rclone 通过 PostgreSQL 迁移到 Oracle Cloud Infrastructure Database

简介

Oracle Cloud Infrastructure Database with PostgreSQL(OCI Database with PostgreSQL) 是一项完全托管的服务,可减少打补丁、备份和存储管理等常规任务所花费的时间。其主要功能包括数据库优化的存储体系结构,它将 SQL 事务处理引擎与存储层分离,使用多个副本来提高用户活动、跨区域备份副本以及与开源 PostgreSQL 数据库的完全兼容性。

OCI Database with PostgreSQL 架构

注意:支持 PostgreSQL 版本 14 和 15(自 2025 年 6 月起)。

OCI Object Storage 可为任何类型的数据提供可扩展、持久、低成本的存储。本教程将用于存储 PostgreSQL 转储文件。

Rclone 是用于管理或传输云存储上的文件的开源命令行程序。

在本教程中,我们将讨论如何使用 PostgreSQL 将数据从内部部署 PostgreSQL 数据库有效迁移到 OCI 数据库。我们将使用 pg_dumppg_restore 实用程序,利用经济高效的 OCI Object Storage 和 Rclone 进行快速、多部分上载和挂载功能。

目标

Prerequisites

注意,OCI Always Free Tier 中未提供具有 PostgreSQL 的 OCI 数据库。

简化架构

任务 1:创建 OCI API 密钥用户身份证明

  1. 登录到 OCI 控制台,单击概要信息菜单 配置文件菜单图标 并选择我的概要信息

  2. 资源中,单击 API 密钥

  3. 单击 API 密钥列表左上角的添加 API 密钥

  4. 单击下载私钥并将密钥保存到 .oci 目录中。在大多数情况下,您无需下载公钥。

  5. 单击添加

此时将添加密钥并显示配置文件预览。文件片段包括创建配置文件所需的参数和值。

有关更多信息,请参见 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

任务 3:使用克隆安装、配置和传输数据

  1. 在内部部署主机中,安装 rclone。

    sudo -v ; curl https://rclone.org/install.sh | sudo bash
    
  2. 运行以下命令以配置 rclone。

    rclone config
    

    有关配置 OCI Object Storage 连接的详细信息,请参阅克隆文档。使用选项 2: OCI 用户和用于验证的 API 密钥(在任务 1 中创建)。

  3. 使用克隆多部分上载将导出的数据库复制到 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 对象存储

  1. 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
    
  2. 在堡垒主机中安装和配置 rclone- 重复任务 3,步骤 2。

  3. 使用在任务 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
    
  4. 检查装载的 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 语句验证表中的行数。

确认

更多学习资源

通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心