このガイドでは、
透過的データ暗号化
(TDE)対応クラスタと暗号化されていないクラスタ間でデータを移行する方法について説明します。pg_dumppg_restore
TDE から暗号化されていないクラスタへの移行と、その逆の移行の両方がサポートされており、標準の PostgreSQL 論理バックアップ ツールを使用します。
pg_dump を使用した論理移行では、ソースで暗号化されたデータがオンザフライでデコードされ、暗号化されていない SQL ステートメントとしてダンプされます。データを復元すると、移行先クラスタは独自の暗号化設定に従ってデータを書き込みます。
TDE が有効になっている場合、移行先クラスタはデータを暗号化し、TDE が無効になっている場合は書式なしテキストとして書き込みます。
始める前に
- AlloyDB Omni がインストールされていることを確認します。詳細については、 コンテナを使用して AlloyDB Omni をインストールするをご覧ください。
- TDE 対応のデータベース サーバーに移行する場合は、鍵管理プロバイダを設定していることを確認します。詳細については、 TDE 対応クラスタを作成するをご覧ください。
TDE 対応データベースを TDE 無効データベースに移行する
TDE 対応データベース サーバーからホスト上のファイルにデータベースをダンプします。
Docker
docker exec -i TDE_CONTAINER_NAME pg_dump -U postgres -d DATABASE_NAME > /tmp/decrypted_dump.sqlPodman
podman exec -i TDE_CONTAINER_NAME pg_dump -U postgres -d DATABASE_NAME > /tmp/decrypted_dump.sqlDocker を使用して AlloyDB Omni をインストールする の手順に沿って、TDE 無効の AlloyDB Omni サーバーを起動します。
ダンプファイルを暗号化されていないデータベース サーバーに復元します。
Docker
docker exec -i NON_TDE_CONTAINER_NAME psql -U postgres -c "CREATE DATABASE DATABASE_NAME" docker exec -i NON_TDE_CONTAINER_NAME psql -U postgres -d DATABASE_NAME < /tmp/decrypted_dump.sqlPodman
podman exec -i NON_TDE_CONTAINER_NAME psql -U postgres -c "CREATE DATABASE DATABASE_NAME" podman exec -i NON_TDE_CONTAINER_NAME psql -U postgres -d DATABASE_NAME < /tmp/decrypted_dump.sql
TDE 無効データベースを TDE 対応データベースに移行する
pg_dumpを使用して、暗号化されていないデータベース サーバーからデータベースをダンプします。Docker
docker exec -i NON_TDE_CONTAINER_NAME pg_dump -U postgres -d DATABASE_NAME > /tmp/src_plaintext_dump.sqlPodman
podman exec -i NON_TDE_CONTAINER_NAME pg_dump -U postgres -d DATABASE_NAME > /tmp/src_plaintext_dump.sqlTDE 対応クラスタを作成する の手順に沿って、TDE 対応の AlloyDB Omni サーバーを起動します。
TDE 対応データベース サーバーに復元します。データは書き込まれるときに透過的に暗号化されます。
Docker
docker exec -i TDE_CONTAINER_NAME psql -U postgres -c "CREATE DATABASE DATABASE_NAME" docker exec -i TDE_CONTAINER_NAME psql -U postgres -d DATABASE_NAME < /tmp/src_plaintext_dump.sqlPodman
podman exec -i TDE_CONTAINER_NAME psql -U postgres -c "CREATE DATABASE DATABASE_NAME" podman exec -i TDE_CONTAINER_NAME psql -U postgres -d DATABASE_NAME < /tmp/src_plaintext_dump.sql