העברת נתונים אל אשכול שמופעל בו 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
    

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