ノート:
- このチュートリアルでは、Oracle Cloudへのアクセス権が必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- 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データベースからPostgreSQLOCI Database with PostgreSQLを使用したOCI Databaseにデータを効果的に移行する方法について説明します。コスト効率に優れたOCI Object StorageとRcloneを活用して、pg_dump
およびpg_restore
ユーティリティを使用し、高速、マルチパート・アップロードおよびマウント機能を提供します。
目的
-
pg_dump
を使用して、PostgreSQLデータベースをエクスポートします。 -
rcloneを使用して、エクスポートされたデータ・ファイルをOCI Object Storageにコピーします。
-
OCI Object StorageをrcloneでOCI Computeにマウントします。
-
pg_restore
を使用して、OCI Object Storageから直接データをインポートします。
前提条件
-
OCIアカウントへのアクセス。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
-
パブリックおよびプライベート・サブネットを持つVCNは、ポート
5432
がプライベート・サブネットのOCIセキュリティ・リストで開かれていることを確認します。 -
RcloneおよびPostgreSQLクライアント・ツールがインストールされた、要塞およびユーティリティ・ノードとして機能するパブリック・サブネット内のOCIコンピュート・インスタンス(このチュートリアルでは要塞と呼ばれ、OCI Bastionサービスと混在しないでください)
-
このチュートリアルは、Oracle Linux 8に基づいています。他のオペレーティング・システムではコマンドが異なる場合があります。
-
プライベート・サブネットにPostgreSQLOCI Database with PostgreSQLを含むプロビジョニングされたOCI Database。For more information, see Deploy OCI Database with PostgreSQL.
-
PostgreSQLクライアント・ツールがインストールされているローカルPostgreSQLオンプレミス・インスタンス。
ノート OCI Database with PostgreSQLは、OCI Always Free Tierでは使用できません。
タスク1: OCI APIキー・ユーザー資格証明の作成
-
OCIコンソールにログインし、プロファイル・メニュー
をクリックして、「自分のプロファイル」を選択します。
-
「リソース」で、APIキーをクリックします。
-
「APIキー」リストの左上にある「APIキーの追加」をクリックします。
-
「非公開キーのダウンロード」をクリックし、キーを
.oci
ディレクトリに保存します。ほとんどの場合、公開キーをダウンロードする必要はありません。 -
「追加」をクリックします。
キーが追加され、構成のファイルのプレビューが表示されます。ファイル・スニペットには、構成ファイルの作成に必要な必須パラメータおよび値が含まれています。
user
:キー・ペアが追加されるユーザーのOracle Cloud Identifier (OCID)。fingerprint
:追加されたキーのフィンガープリント。tenancy
:テナンシのOCID。region
: OCIコンソールで現在選択されているリージョン。key_file
:ダウンロードした秘密キー・ファイルへのパス。この値は、秘密キー・ファイルを保存したファイル・システム上のパスに更新する必要があります。
詳細は、必要なキーと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
-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を使用したデータのインストール、構成および転送
-
オンプレミス・ホストに、rcloneをインストールします。
sudo -v ; curl https://rclone.org/install.sh | sudo bash
-
次のコマンドを実行して、rcloneを構成します。
rclone config
OCI Object Storage接続の構成の詳細は、Rcloneのドキュメントを参照してください。オプション2: OCIユーザーおよび認証用のAPIキー(タスク1で作成)を使用します。
-
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オブジェクト・ストレージのマウント
-
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
を使用した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文を使用して表の行数を確認できます。
関連リンク
確認
- 作成者 - Sylwester Dec (OCIオープン・ソース・データ・ブラック・ベルト)
その他の学習リソース
docs.oracle.com/learnで他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Migrate to Oracle Cloud Infrastructure Database with PostgreSQL using OCI Object Storage and Rclone
G37264-01
Copyright ©2025, Oracle and/or its affiliates.