ノート:

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データベースからPostgreSQLOCI Database with PostgreSQLを使用したOCI Databaseにデータを効果的に移行する方法について説明します。コスト効率に優れたOCI Object StorageとRcloneを活用して、pg_dumpおよびpg_restoreユーティリティを使用し、高速、マルチパート・アップロードおよびマウント機能を提供します。

目的

前提条件

ノート OCI Database with PostgreSQLは、OCI Always Free Tierでは使用できません。

シンプルなアーキテクチャ

タスク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 Object Storage接続の構成の詳細は、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を使用したPostgreSQLOCI Database with PostgreSQLを使用したOCIデータベースのリストア

Restore your OCI Database with PostgreSQL database with parallel jobs, in a background, as a daemon process, using mounted file system.

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を使用して、PostgreSQLOCI Database with PostgreSQLを使用してOCI Databaseにログインし、リストアされたデータの完全性を検証します。

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を参照してください。