Avant de choisir de migrer vos bases de données vers Cloud SQL, tenez compte des limites connues pour ce scénario de migration.
Voici les limites connues concernant l'utilisation d'une base de données PostgreSQL comme source :
L'extension
pglogicaln'est pas compatible avec la réplication des colonnes générées pour PostgreSQL 12 et versions ultérieures.Les modifications apportées aux structures de table (LDD) ne sont pas répliquées via les commandes LDD standards, mais uniquement avec les commandes exécutées à l'aide de l'extension
pglogicalutilisée pour la réplication. Cela inclut les modifications apportées aux typesenum.- Par exemple,
pglogicalfournit la fonctionpglogical.replicate_ddl_commandqui permet d'exécuter le LDD sur la base de données source et l'instance répliquée à un point cohérent. - Pour répliquer les données des tables nouvellement créées, vous devez utiliser la commande
pglogical.replication_set_add_tablepour ajouter de nouvelles tables aux ensembles de réplication existants. - Pour en savoir plus sur la réplication LDD pendant la migration, consultez Fidélité de la migration.
- Par exemple,
Pour les tables qui ne possèdent pas de clés primaires, Database Migration Service permet de migrer l'instantané initial ainsi que les instructions
INSERTpendant la phase de capture des données modifiées (CDC, Change Data Capture). La migration des instructionsUPDATEetDELETEest différente pour :- Migrations standards : les instructions
UPDATEetDELETEne sont pas migrées pour les tables sans clé primaire. Vous devez ajouter des clés primaires pour vos colonnes avant de migrer, ou migrer manuellement les instructionsUPDATEetDELETE. - Migrations à démarrage rapide : avec les migrations à démarrage rapide, les clés primaires ne sont pas requises pour répliquer les opérations
UPDATEetDELETEsi vous définissez l'identité de l'instance répliquée surINDEXouFULL. La configuration deREPLICA IDENTITY FULLaugmente le volume du journal WAL (Write-Ahead Logging) et la surcharge des ressources. Nous vous recommandons d'ajouter une clé primaire dans la mesure du possible. Pour en savoir plus, consultez la documentation sur l'identité de l'instance répliquée PostgreSQL et le guide de démarrage rapide des migrations.
- Migrations standards : les instructions
Database Migration Service ne migre pas les données des vues matérialisées, mais uniquement le schéma de la vue. Pour insérer les vues dans la base de données de destination, exécutez la commande suivante :
REFRESH MATERIALIZED VIEW view_name.Les états
SEQUENCE(par exemple,last_value) sur la destination peuvent différer de la source pendant la CDC en cours. Les valeurs de séquence sont synchronisées lors de l'étape de promotion finale.Les tables
UNLOGGEDetTEMPORARYne sont pas répliquées et ne peuvent pas l'être.Le type de données Large Object (
oidfaisant référence àpg_largeobject) n'est pas compatible avec le décodage logique PostgreSQL.Seules les extensions compatibles avec Cloud SQL pour PostgreSQL peuvent être migrées. Database Migration Service ne migre pas les extensions non compatibles avec Cloud SQL. La présence de ces extensions ne bloque pas la migration, mais pour garantir une migration fluide, vérifiez que vos applications ne font pas référence à des extensions non compatibles. Pour obtenir la liste des extensions compatibles, consultez Extensions PostgreSQL dans la documentation Cloud SQL.
L'extension
pg_cron(ou tout job Cron configuré dans l'extension) n'est pas migrée par Database Migration Service, mais elle est compatible avec les destinations Cloud SQL pour PostgreSQL. Si vous utilisezpg_crondans vos bases de données sources, réinstallez l'extension et configurez vos jobs Cron sur l'instance de destination une fois la migration terminée.Database Migration Service ne permet pas de migrer des instances dupliquées avec accès en lecture qui sont en mode Recovery.
Database Migration Service n'est pas compatible avec les sources Amazon RDS auxquelles le pack d'extension AWS SCT est appliqué.
Les fonctions définies par l'utilisateur écrites en C ne peuvent pas être migrées, à l'exception des fonctions installées lors de la création d'extensions compatibles avec Cloud SQL.
Si d'autres extensions existent dans la base de données source et que leurs versions ne sont pas compatibles avec Cloud SQL, le test ou le démarrage du job de migration échouera.
Les bases de données ajoutées à l'instance source après le démarrage du job de migration ne sont pas migrées.
Vous pouvez sélectionner des bases de données spécifiques lorsque vous effectuez une migration à l'aide de Database Migration Service. Toutes les tables et tous les schémas des bases de données sélectionnées sont migrés, à l'exception des éléments suivants :
- Le schéma d'informations (
information_schema). - Tous les schémas commençant par
pg_(par exemple,pg_catalog,pg_toast,pgtemp*). Pour obtenir la liste complète des catalogues PostgreSQL commençant parpg_, consultez Catalogues système PostgreSQL dans la documentation PostgreSQL. - Identifiants de connexion et rôles des utilisateurs.
- Le schéma d'informations (
Si les bases de données chiffrées nécessitent des clés de chiffrement gérées par le client (CMEK) pour déchiffrer les données et que Database Migration Service n'a pas accès aux clés, les bases de données ne peuvent pas être migrées. Toutefois, les données chiffrées avec l' extension
pgcryptopeuvent être migrées, car Cloud SQL est compatible avecpgcrypto. Database Migration Service permet également de migrer des bases de données Amazon Aurora ou Amazon RDS chiffrées, car AWS gère le déchiffrement de manière transparente. Pour en savoir plus, consultez Chiffrer des ressources Amazon Aurora et Chiffrer des ressources Amazon RDS.Comportement opérationnel de la base de données de destination pendant la migration :
Base de données de destination accessible en écriture : Cloud SQL pour PostgreSQL n'exécute pas la base de données de destination en mode lecture seule pendant la migration. L'instance de destination n'est pas rétrogradée lorsqu'elle est créée par Database Migration Service.
Évitez les opérations d'écriture sur les données en cours de migration : n'effectuez pas d'opérations d'écriture (telles que
INSERT,UPDATE,DELETEou des modifications de schéma LDD) sur les tables ou les bases de données participant à la migration. L'exécution d'écritures sur des données en cours de migration peut entraîner des conflits de réplication avec le flux de capture des données modifiées (CDC) entrant.Gérer les utilisateurs de la base de données : vous pouvez créer et gérer des utilisateurs de la base de données à tout moment à l'aide des commandes
psqlstandards ou via Cloud SQL dans la console Google Cloud . Pour en savoir plus, consultez Gérer les utilisateurs dans la documentation Cloud SQL.Fonctionnalités suspendues : les sauvegardes automatisées et la récupération à un moment précis (PITR) sont suspendues pendant la réplication continue. De plus, vous ne pouvez pas créer d'instances répliquées Cloud SQL avec accès en lecture à partir de l'instance de destination tant que le job de migration n'a pas été promu.
Le comportement du déclencheur dépend de sa configuration. Par défaut, les déclencheurs ne se déclenchent pas sur l'instance répliquée pendant la réplication, sauf s'ils sont configurés avec
ALTER EVENT TRIGGERouALTER TABLE ... ENABLE ALWAYS TRIGGER.Les fonctions définies avec
SECURITY DEFINERsont créées parcloudsqlexternalsyncsur l'instance Cloud SQL de destination, qui dispose de droits élevés. Limitez les droits d'exécution sur les fonctionsSECURITY DEFINERsensibles en révoquant les autorisations publiques et en accordant l'accès de manière sélective.Cloud SQL n'est pas compatible avec les espaces de table personnalisés. Tous les objets des espaces de table personnalisés sont migrés vers l'espace de table
pg_defaultpar défaut dans Cloud SQL.La méthode de connectivité des interfaces Private Service Connect n'est compatible qu'avec la migration vers des instances de destination existantes. Si vous souhaitez utiliser la connectivité IP privée et migrer vers une nouvelle instance de destination, utilisez l'appairage de VPC.
Limites des migrations vers des instances de destination existantes
- Rétrogradation de l'instance de destination pour les migrations standards : pour les migrations standards vers des instances Cloud SQL existantes, Database Migration Service rétrograde l'instance autonome pour la configurer en tant qu'instance répliquée externe de la base de données source.
- La rétrogradation de l'instance ne place pas le moteur PostgreSQL en mode lecture seule, mais vous devez éviter les opérations d'écriture sur les tables en cours de migration pour éviter les conflits de réplication.
- La rétrogradation de l'instance suspend les sauvegardes automatiques et la récupération à un moment précis (PITR), et empêche l'ajout d'instances dupliquées avec accès en lecture Cloud SQL jusqu'à la promotion.
- Vous devez confirmer la rétrogradation lors de la création du job de migration dans la console Google Cloud en saisissant l'ID de l'instance de destination (ou en exécutant
gcloud database-migration migration-jobs demote-destination). -
Les migrations à démarrage rapide utilisent la réplication logique PostgreSQL
pgnativeet ne nécessitent ni n'effectuent de rétrogradation de l'instance de destination.
- Votre instance de destination existante ne peut contenir que les bases de données système par défaut qui sont configurées automatiquement lorsque vous créez l'instance de destination. La migration vers des instances de destination existantes contenant des données utilisateur n'est pas possible.
Si vous rencontrez des problèmes en raison de données supplémentaires dans votre instance de destination existante, effacez les bases de données de votre instance de destination et relancez le job de migration. Consultez Effacer les données supplémentaires de votre instance de destination existante.
- Vous ne pouvez configurer qu'un seul job de migration par instance de destination.
- Vous ne pouvez migrer que vers des instances Cloud SQL autonomes. La migration vers des instances répliquées de serveur externe n'est pas possible.
- Après avoir promu une instance, vous devez activer la récupération à un moment précis.
- Si votre instance dispose de paramètres de sauvegarde personnalisés (par exemple, un emplacement de sauvegarde personnalisé), vous devez restaurer à nouveau vos paramètres de sauvegarde après la promotion. Au cours du processus de promotion, Cloud SQL rétablit les valeurs par défaut des paramètres de sauvegarde.
- Pour les utilisateurs de Terraform : Database Migration Service modifie les paramètres de sauvegarde et de récupération de votre instance de destination. Cela peut entraîner des différences entre les paramètres de l'instance de destination et la configuration Terraform utilisée pour le provisionnement. Si vous rencontrez ce problème, consultez les conseils de la section Diagnostiquer les problèmes.
Quotas
- Jusqu'à 2 000 profils de connexion et 1 000 tâches de migration peuvent coexister à un moment donné. Pour libérer de l'espace, supprimez les jobs de migration et les profils de connexion inutilisés.
Compatibilité des versions d'extension PostgreSQL lors des mises à niveau de versions majeures
Lorsque vous migrez vers une version majeure de PostgreSQL plus récente, Database Migration Service utilise l'utilitaire pg_restore, qui installe la version d'extension par défaut de la version majeure de PostgreSQL cible. Vous ne pouvez pas spécifier de version d'extension exacte pour l'utilitaire pg_restore.
Si votre base de données source utilise une version d'extension dont le schéma n'est pas compatible avec la version par défaut installée sur la version majeure de PostgreSQL cible, la migration peut échouer en raison d'une incompatibilité de schéma ou d'erreurs internes.
Pour éviter les échecs de migration, vérifiez la compatibilité des schémas. Avant de procéder à la migration, mettez à niveau les extensions de votre base de données source vers une version compatible avec la version majeure de PostgreSQL cible.