במדריך הזה מתואר איך להעביר נתונים בין אשכולות עם הצפנת נתונים שקופה (TDE) לבין אשכולות לא מוצפנים באמצעות pg_dump ו-pg_restore.
שני כיווני ההעברה נתמכים – מ-TDE ללא מוצפן, וההפך – ונעשה בהם שימוש בכלים סטנדרטיים לגיבוי לוגי של PostgreSQL.
במיגרציה לוגית באמצעות pg_dump הנתונים המוצפנים מפוענחים תוך כדי התהליך במקור, ומועברים כהצהרות SQL לא מוצפנות. כשמשחזרים את הנתונים, אשכול היעד כותב את הנתונים בהתאם להגדרות ההצפנה שלו.
אם TDE מופעל, אשכול היעד מצפין את הנתונים. אם TDE מושבת, הנתונים נכתבים כטקסט רגיל.
לפני שמתחילים
- מוודאים שהתקנתם את AlloyDB Omni. מידע נוסף זמין במאמר התקנת AlloyDB Omni באמצעות קונטיינרים.
- אם אתם מעבירים לשרת מסד נתונים עם TDE, אתם צריכים לוודא שהגדרתם את ספק ניהול המפתחות. מידע נוסף זמין במאמר בנושא יצירת אשכול עם TDE.
העברת מסד נתונים עם TDE למסד נתונים ללא TDE
מבצעים dump של מסד הנתונים משרת מסד הנתונים עם 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.sqlמפעילים שרת AlloyDB Omni שבו TDE מושבת, לפי ההוראות במאמר התקנה של AlloyDB Omni באמצעות Docker.
משחזרים את קובץ ה-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.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.sqlמפעילים שרת AlloyDB Omni עם TDE לפי ההוראות שבקטע יצירת אשכול עם TDE.
שחזור לשרת מסד נתונים עם הפעלת 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