Ce guide explique comment migrer des données entre des clusters avec chiffrement transparent des données (TDE) et des clusters non chiffrés à l'aide de pg_dump et pg_restore.
Les deux directions de migration (de TDE vers non chiffré et inversement) sont compatibles et utilisent les outils de sauvegarde logique PostgreSQL standards.
La migration logique à l'aide de pg_dump décode les données chiffrées à la volée au niveau de la source et les exporte sous forme d'instructions SQL non chiffrées. Lorsque vous restaurez les données, le cluster de destination les écrit en fonction de ses propres paramètres de chiffrement.
Le cluster de destination chiffre les données si le TDE est activé et les écrit en texte brut si le TDE est désactivé.
Avant de commencer
- Vérifiez que vous avez installé AlloyDB Omni. Pour en savoir plus, consultez Installer AlloyDB Omni à l'aide de conteneurs.
- Si vous effectuez une migration vers un serveur de base de données compatible avec TDE, vérifiez que vous avez configuré votre fournisseur de gestion des clés. Pour en savoir plus, consultez Créer un cluster avec TDE activé.
Migrer une base de données avec TDE activé vers une base de données avec TDE désactivé
Videz la base de données du serveur de base de données compatible avec TDE dans un fichier sur l'hôte.
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.sqlDémarrez un serveur AlloyDB Omni avec TDE désactivé en suivant les instructions de la section Installer AlloyDB Omni à l'aide de Docker.
Restaurez le fichier de dump sur le serveur de base de données non chiffré.
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
Migrer une base de données sans TDE vers une base de données avec TDE
Utilisez
pg_dumppour vider la base de données du serveur de base de données non chiffré.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.sqlDémarrez un serveur AlloyDB Omni avec TDE activé en suivant les instructions de la section Créer un cluster avec TDE activé.
Effectuez une restauration sur le serveur de base de données compatible avec TDE. Les données sont chiffrées de manière transparente lors de leur écriture.
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