במדריך הזה מוסבר איך להעביר נתונים בין אשכולות עם הצפנת נתונים שקופה (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