העברת נתונים אל אשכול שמופעל בו TDE וממנו

בוחרים גרסת תיעוד:

במדריך הזה מוסבר איך להעביר נתונים בין אשכולות עם הצפנת נתונים שקופה (TDE) לבין אשכולות לא מוצפנים באמצעות pg_dump ו-pg_restore.

שני כיווני ההעברה – מ-TDE ללא מוצפן ולהפך – נתמכים ומשתמשים בכלים לגיבוי לוגי סטנדרטי של PostgreSQL.

בהעברה לוגית באמצעות pg_dump, הנתונים המוצפנים מפוענחים תוך כדי תנועה במקור, ומושלכים כהצהרות SQL לא מוצפנות. כשמשחזרים את הנתונים, האשכול של היעד כותב את הנתונים בהתאם להגדרות ההצפנה שלו. אשכול היעד מצפין את הנתונים אם TDE מופעל, וכותב כטקסט פשוט אם TDE מושבת.

לפני שמתחילים

העברת מסד נתונים עם TDE למסד נתונים ללא TDE

  1. מבצעים Dump של מסד הנתונים משרת מסד הנתונים שמופעל בו 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. מפעילים שרת AlloyDB Omni שבו TDE מושבת, לפי ההוראות במאמר התקנה של AlloyDB Omni באמצעות Docker.

  3. משחזרים את קובץ ה-dump לשרת מסד הנתונים הלא מוצפן.

    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. מפעילים שרת AlloyDB Omni עם TDE לפי ההוראות במאמר יצירת אשכול עם TDE.

  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
    

המאמרים הבאים