附註:

使用 OCI Object Storage 和 Rclone 使用 PostgreSQL 移轉至 Oracle Cloud Infrastructure Database

簡介

Oracle Cloud Infrastructure Database with PostgreSQL (OCI Database with PostgreSQL) 是一項完全託管的服務,可減少打補丁、備份和儲存管理等例行任務所花費的時間。其主要功能包括資料庫最佳化的儲存架構,可將 SQL 交易處理引擎與儲存層分離、多個複本提升使用者活動、跨區域備份複本,以及與開放原始碼 PostgreSQL 資料庫完全相容。

OCI 資料庫與 PostgreSQL 架構

注意:支援 PostgreSQL 版本 14 和 15 (截至 2025 年 6 月)。

OCI Object Storage 為任何類型的資料提供可擴展、持久且低成本的儲存。本教學課程將用於儲存 PostgreSQL 傾印檔。

Rclone 是一個開放原始碼的命令行程式,用於管理或傳輸雲端儲存體上的檔案。

在本教學課程中,我們將探討如何使用 PostgreSQL,有效地將資料從內部部署 PostgreSQL 資料庫移轉至 OCI 資料庫。我們將運用符合成本效益的 OCI Object Storage 和 Rclone,利用 pg_dumppg_restore 公用程式進行快速的多段上傳和掛載功能。

目標

必備條件

注意:OCI Always Free Tier 中未提供 PostgreSQL 的 OCI 資料庫。

簡化的架構

工作 1:建立 OCI API 金鑰使用者證明資料

  1. 登入 OCI 主控台,按一下設定檔功能表 設定檔功能表圖示,然後選取我的設定檔

  2. 資源中,按一下 API 金鑰

  3. 按一下 API 金鑰清單左上方的新增 API 金鑰

  4. 按一下下載私密金鑰,然後將該金鑰儲存至您的 .oci 目錄。在大多數情況下,您不需要下載公開金鑰。

  5. 按一下新增

就會新增金鑰,並顯示組態檔預覽。檔案程式碼片段包括建立組態檔所需的必要參數和值。

如需詳細資訊,請參閱必要的金鑰和 OCID

工作 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:使用 Rclone 安裝、設定及傳輸資料

  1. 在您的內部部署主機中,安裝 rclone。

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

    rclone config
    

    如需設定 OCI 物件儲存連線的詳細資訊,請參閱 Rclone 文件。使用選項 2: OCI 使用者和 API 金鑰進行認證 (在任務 1 中建立)。

  3. 使用 rclone 多重部分上傳,將匯出的資料庫複製到 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
    
    

    如需詳細資訊,請參閱使用 Rclone 將資料複製到 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 回復 OCI 資料庫與 PostgreSQL

使用已掛載的檔案系統,在背景以協助程式處理作業的形式,以平行工作以 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 Help Center