TDE 対応クラスタとの間でデータを移行する

ドキュメントのバージョンを選択してください。

このガイドでは、pg_dumppg_restore を使用して、透過的データ暗号化(TDE)が有効なクラスタと暗号化されていないクラスタ間でデータを移行する方法について説明します。

TDE から非暗号化への移行と、その逆の移行の両方がサポートされており、標準の PostgreSQL 論理バックアップ ツールが使用されます。

pg_dump を使用した論理移行では、ソースで暗号化されたデータがオンザフライでデコードされ、暗号化されていない SQL ステートメントとしてダンプされます。データを復元すると、宛先クラスタは独自の暗号化設定に従ってデータを書き込みます。TDE が有効になっている場合、宛先クラスタはデータを暗号化し、TDE が無効になっている場合はプレーン テキストとして書き込みます。

始める前に

TDE 対応データベースを TDE 無効データベースに移行する

  1. TDE 対応のデータベース サーバーからホスト上のファイルにデータベースをダンプします。

    Docker

    docker exec -i TDE_CONTAINER_NAME pg_dump -U postgres -d DATABASE_NAME > /tmp/decrypted_dump.sql
    

    Podman

    podman exec -i TDE_CONTAINER_NAME pg_dump -U postgres -d DATABASE_NAME > /tmp/decrypted_dump.sql
    
  2. Docker を使用して AlloyDB Omni をインストールするの手順に沿って、TDE が無効になっている AlloyDB Omni サーバーを起動します。

  3. ダンプファイルを暗号化されていないデータベース サーバーに復元します。

    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.sql
    

    Podman

    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 有効データベースに移行する

  1. pg_dump を使用して、暗号化されていないデータベース サーバーからデータベースをダンプします。

    Docker

    docker exec -i NON_TDE_CONTAINER_NAME pg_dump -U postgres -d DATABASE_NAME > /tmp/src_plaintext_dump.sql
    

    Podman

    podman exec -i NON_TDE_CONTAINER_NAME pg_dump -U postgres -d DATABASE_NAME > /tmp/src_plaintext_dump.sql
    
  2. TDE 対応クラスタを作成するの手順に沿って、TDE 対応の AlloyDB Omni サーバーを起動します。

  3. 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.sql
    

    Podman

    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
    

次のステップ