Tous les produits
Search
Centre de documentation

Data Transmission Service:Migration incrémentale d'une base de données PostgreSQL auto-gérée (v10.0 ou antérieure) vers ApsaraDB for PostgreSQL

Dernière mise à jour :Sep 22, 2026

Migrez les données de manière incrémentale d'une base de données PostgreSQL auto-gérée vers une instance ApsaraDB for PostgreSQL à l'aide du service Data Transmission Service (DTS). DTS prend en charge la migration du schéma, des données complètes et des données incrémentales pour assurer une transition fluide avec un temps d'arrêt minimal.

Cet exemple utilise une base de données auto-gérée disposant d'une adresse IP publique. Pour la migration complète des données, consultez la rubrique Migration complète des données d'une base de données PostgreSQL auto-gérée vers une instance ApsaraDB for PostgreSQL.

Prérequis

  • La base de données PostgreSQL source auto-gérée doit être en version 9.4.8 ou ultérieure, 9.5, 9,6 ou 10,0.

  • L'instance ApsaraDB for PostgreSQL de destination dispose d'un espace de stockage suffisant pour les données sources.

  • Le port de la base de données PostgreSQL source est accessible via Internet.

Notes d'utilisation

  • Lors d'une migration complète des données, DTS consomme des ressources de lecture et d'écriture sur les bases de données source et de destination, ce qui augmente leur charge. Si vos bases de données présentent des performances médiocres, des spécifications faibles ou des charges de travail élevées (par exemple, si la base de données source contient de nombreuses requêtes SQL lentes ou des tables sans clés primaires, ou si des interblocages se produisent dans la base de données de destination), cette augmentation de la charge peut solliciter excessivement vos bases de données, voire provoquer des interruptions de service. Effectuez la migration des données pendant les heures creuses, par exemple lorsque l'utilisation du CPU des deux bases de données est inférieure à 30 %.

  • Lors de la migration incrémentale des données, si vous sélectionnez un schéma comme objet de migration, puis créez une nouvelle table ou reconstruisez une table à l'aide de RENAME, exécutez ALTER TABLE schema.table REPLICA IDENTITY FULL; avant d'écrire des données dans la table.

    Remarque

    Remplacez

    schema

    et

    table

    par les noms réels du schéma et de la table.

  • Si une table source ne possède ni clé primaire ni contrainte unique et contient des données non uniques, des données en double peuvent être créées dans la base de données de destination.

  • DTS relance automatiquement les tâches ayant échoué. Avant de basculer vos applications vers l'instance de destination, arrêtez ou libérez la tâche pour éviter d'écraser les données de destination.

  • Les transactions de longue durée dans la base de données source lors d'une migration incrémentale empêchent l'effacement des enregistrements WAL, ce qui peut épuiser l'espace disque.

Limites

  • Chaque tâche de migration ne migre qu'une seule base de données. Pour migrer plusieurs bases de données, créez une tâche distincte pour chacune d'elles.

  • Les noms de bases de données ne doivent pas contenir de traits d'union (-). Exemple : dts-testdata.

  • Si un basculement principal/secondaire se produit sur la base de données source pendant la migration, la migration incrémentale des données ne peut pas reprendre.

  • La latence de réplication peut entraîner une incohérence des données entre les nœuds principal et secondaire. Utilisez toujours le nœud principal comme source de données.

    Remarque

    Effectuez la migration pendant les heures creuses. Vous pouvez ajuster le taux de migration en fonction de la charge de la base de données source.

    Modifier le taux de transfert de la migration complète des données

    .

  • DTS valide le contenu des données, mais ne valide pas les métadonnées telles que les séquences. Validez manuellement les métadonnées des séquences.

  • Les séquences de la base de données de destination ne continuent pas à partir de la valeur maximale source après le basculement. Avant le basculement, interrogez la valeur maximale de chaque séquence dans la source et définissez-la comme valeur de départ dans la destination. Interrogez les valeurs des séquences :

    do language plpgsql $$
    declare
      nsp name;
      rel name;
      val int8;
    begin
      for nsp,rel in select nspname,relname from pg_class t2 , pg_namespace t3 where t2.relnamespace=t3.oid and t2.relkind='S'
      loop
        execute format($_$select last_value from %I.%I$_$, nsp, rel) into val;
        raise notice '%',
        format($_$select setval('%I.%I'::regclass, %s);$_$, nsp, rel, val+1);
      end loop;
    end;
    $$;
  • Le basculement principal/secondaire pendant la migration est pris en charge uniquement pour ApsaraDB RDS for PostgreSQL 11. Définissez rds_failover_slot_mode sur sync.Basculement du slot de réplication logique.

    Avertissement

    Un basculement principal/secondaire sur une base de données PostgreSQL auto-gérée ou d'autres versions RDS interrompt la migration.

  • Lors de la migration incrémentale des données, seules les opérations DML (INSERT, DELETE, UPDATE) sont synchronisées.

    Remarque

    Seules les tâches créées après le 1er octobre 2020 prennent en charge la synchronisation DDL. Avant de configurer la tâche, créez des déclencheurs et des fonctions dans la base de données source pour capturer les informations DDL.

    Utiliser des déclencheurs et des fonctions pour implémenter la migration DDL incrémentale pour PostgreSQL

    .

Facturation

Type de migration

Frais de configuration de la tâche

Frais de trafic Internet

Migration du schéma et migration complète des données

Gratuit.

DTS facture des frais de trafic Internet lorsque la Access Method de la base de données de destination est définie sur Public IP Address. Présentation de la facturation.

Migration incrémentale des données

Facturé. Présentation de la facturation.

Autorisations des comptes de base de données

Base de données Migration du schéma Migration complète des données Migration incrémentale des données
Base de données PostgreSQL auto-gérée Autorisation USAGE sur pg_catalog Autorisation SELECT sur les objets de migration superuser
Instance ApsaraDB for PostgreSQL Autorisations CREATE et USAGE sur les objets de migration Autorisation de propriétaire de schéma Autorisation de propriétaire de schéma

Pour créer des comptes et accorder des autorisations :

Processus de migration des données

Pour résoudre les dépendances entre objets et améliorer le taux de réussite de la migration, DTS migre les schémas et les données PostgreSQL selon l'ordre suivant.

Remarque

Pour les définitions de la migration du schéma, de la migration complète des données et de la migration incrémentale des données, consultez

Termes

.

Processus de migration DTS Description
1. Migration du schéma DTS migre les informations de schéma pour TABLE, VIEW, SEQUENCE, FUNCTION, USER DEFINED TYPE, RULE, DOMAIN, OPERATION et AGGREGATE vers la base de données de destination.
Remarque Les plug-ins et les fonctions écrits en C ne sont pas pris en charge.
2. Migration complète des données DTS migre toutes les données existantes des objets sélectionnés vers la base de données de destination.
3. Migration du schéma DTS migre les informations de schéma pour TRIGGER et FOREIGN KEY vers la base de données de destination.
4. Migration incrémentale des données Après la migration complète des données, DTS migre les mises à jour incrémentales des objets sélectionnés vers la base de données de destination. La migration incrémentale des données permet une transition fluide avec un temps d'arrêt minimal.
Remarque
  • Lors de la migration incrémentale des données, seules les opérations DML (INSERT, DELETE, UPDATE) sont prises en charge.
  • Le type de données BIT n'est pas pris en charge lors de la migration incrémentale des données.

Préparatifs

Remarque

Ces étapes s'appliquent à Linux.

  1. Facultatif : Téléchargez, compilez et installez le code source de PostgreSQL.

    Remarque

    Ignorez cette étape si votre base de données a été déployée à partir du code source.

    1. Téléchargez le code source de votre version de base de données depuis le site Web officiel de PostgreSQL.

    2. Exécutez les commandes suivantes pour configurer, compiler et installer le code source.

      sudo ./configure --prefix=/usr/local/postgresql
      sudo make
      sudo make install
      Important
      • La valeur du préfixe doit différer du chemin d'installation de votre PostgreSQL existant.

      • La version du système d'exploitation doit être compatible avec la version de GCC.

      • Si sudo ./configureéchoue, effectuez les ajustements nécessaires en fonction de l'erreur. Par exemple, pour readline library not found. Use --without-readline to disable readline support., utilisez sudo ./configure --without-readline.

      • Si vous utilisez une autre méthode d'installation, compilez le plug-in ali_decoding dans un environnement de test avec les mêmes versions de système d'exploitation et de GCC.

  2. Compilez un nouveau fichier ali_decoding à partir du code source de PostgreSQL et remplacez le fichier existant.

    1. Téléchargez le plug-in ali_decoding fourni par DTS.

      Remarque

      Exécutez ces commandes pour télécharger et extraire le plug-in.

      sudo wget https://github.com/aliyun/rds_dbsync/archive/refs/heads/master.zip
      unzip master.zip
    2. Copiez le répertoire ali_decoding dans le répertoire contrib de l'installation PostgreSQL compilée.

      sudo cp rds_dbsync-master/ali_decoding /tmp/postgresql-9.4.26/contrib/ -r
      Remarque

      Remplacez

      /tmp/postgresql-9.4.26/contrib/

      par votre répertoire de code source PostgreSQL.

      total 1068
      -rw-r--r--  1 1107 1107    384 Sep 27  2016 aclocal.m4
      drwxrwxrwx  2 1107 1107   4096 Sep 27  2016 config
      -rw-r--r--  1 root root 374806 Sep  7 10:10 config.log
      -rwxr-xr-x  1 root root  39032 Sep  7 10:10 config.status
      -rwxr-xr-x  1 1107 1107 471157 Sep 27  2016 configure
      -rw-r--r--  1 1107 1107  75195 Sep 27  2016 configure.in
      drwxrwxrwx 56 1107 1107   4096 Sep  7 10:28 contrib
      -rw-r--r--  1 1107 1107   1192 Sep 27  2016 COPYRIGHT
      drwxrwxrwx  3 1107 1107   4096 Sep 27  2016 doc
      -rw-r--r--  1 root root   3638 Sep  7 10:10 GNUmakefile
      -rw-r--r--  1 1107 1107   3638 Sep 27  2016 GNUmakefile.in
      -rw-r--r--  1 1107 1107    283 Sep 27  2016 HISTORY
      -rw-r--r--  1 1107 1107  75065 Sep 27  2016 INSTALL
      -rw-r--r--  1 1107 1107   1489 Sep 27  2016 Makefile
      -rw-r--r--  1 1107 1107   1209 Sep 27  2016 README
      drwxrwxrwx 16 1107 1107   4096 Sep  7 10:10 src
    3. Dans le répertoire ali_decoding, remplacez le contenu du Makefile par :

      # contrib/ali_decoding/Makefile
      MODULE_big = ali_decoding
      MODULES = ali_decoding
      OBJS    = ali_decoding.o
      DATA = ali_decoding--0.0.1.sql ali_decoding--unpackaged--0.0.1.sql
      EXTENSION = ali_decoding
      NAME = ali_decoding
      #subdir = contrib/ali_decoding
      #top_builddir = ../..
      #include $(top_builddir)/src/Makefile.global
      #include $(top_srcdir)/contrib/contrib-global.mk
      #PG_CONFIG = /usr/pgsql-9.6/bin/pg_config
      #pgsql_lib_dir := $(shell $(PG_CONFIG) --libdir)
      #PGXS := $(shell $(PG_CONFIG) --pgxs)
      #include $(PGXS)
      # For source code installation, use the following:
      ifdef USE_PGXS
      PG_CONFIG = pg_config
      PGXS := $(shell $(PG_CONFIG) --pgxs)
      include $(PGXS)
      else
      subdir = contrib/ali_decoding
      top_builddir = ../..
      include $(top_builddir)/src/Makefile.global
      include $(top_srcdir)/contrib/contrib-global.mk
      endif
    4. Facultatif : Pour PostgreSQL 9.4 (9.4.8 à 9.4.26), supprimez le paramètre false de la fonction set_config_option dans ali_decoding.c. La fonction modifiée :

          if (extra_float_digits < 3)
              (void) set_config_option("extra_float_digits", "3",
                      PGC_USERSET, PGC_S_SESSION,
                      GUC_ACTION_SAVE, true, 0);
    5. Dans le répertoire ali_decoding, exécutez sudo make et sudo make install. Sortie attendue après sudo make install:

      /usr/bin/install -c -m 755  ali_decoding.so '/usr/local/pgsql/lib/ali_decoding.so'
      /usr/bin/install -c -m 644 ./ali_decoding.control '/usr/local/pgsql/share/extension/'
      /usr/bin/install -c -m 644 ./ali_decoding--0.0.1.sql ./ali_decoding--unpackaged--0.0.1.sql  '/usr/local/pgsql/share/extension/'
      /usr/bin/install -c -m 755  ali_decoding.so '/usr/local/pgsql/lib/'
    6. Copiez les fichiers ali_decoding générés dans votre installation PostgreSQL source, en remplaçant les fichiers aux chemins suivants.

      Remarque

      Remplacez

      /usr/local/postgresql

      par le chemin d'installation de votre PostgreSQL source.

      /usr/local/postgresql/lib/ali_decoding.so
      /usr/local/postgresql/share/extension/ali_decoding.control 
      /usr/local/postgresql/share/extension/ali_decoding--0.0.1.sql 
      /usr/local/postgresql/share/extension/ali_decoding--unpackaged--0.0.1.sql
  3. Créez la base de données et le schéma correspondants dans l'instance ApsaraDB for PostgreSQL de destination. Les noms des schémas doivent correspondre à ceux de la source.Créer une base de données et Gérer les schémas.

Procédure

  1. Connectez-vous à la console Data Transmission Service (DTS).

    Remarque

    Si vous êtes redirigé automatiquement vers la console Data Management (DMS), cliquez sur l'icône jiqiren en bas à droite, puis cliquez sur 返回旧版 pour revenir à la console DTS classique.

  2. Dans le volet de navigation de gauche, cliquez sur Data Migration.

  3. En haut de la page Tâches de migration, sélectionnez la région où se trouve l'instance de destination.

  4. Dans le coin supérieur droit de la page, cliquez sur Create Data Migration Task.

  5. Configurez les bases de données source et de destination.

    Catégorie Paramètre Description
    N/A Nom de la tâche DTS génère automatiquement un nom de tâche. Spécifiez un nom descriptif pour une identification facile. Les noms uniques ne sont pas requis.
    Base de données source Type d'instance Sélectionnez en fonction de votre déploiement. Cet exemple utilise base de données auto-gérée avec une adresse IP publique.
    Remarque D'autres types d'instances nécessitent des préparatifs supplémentaires. Présentation des préparatifs.
    Région de l'instance Si vous sélectionnez base de données auto-gérée avec une adresse IP publique comme type d'instance, vous n'avez pas besoin de définir la Instance Region.
    Remarque Si vous avez configuré une liste d'autorisation pour votre base de données PostgreSQL auto-gérée, cliquez sur Obtenir le segment d'adresses IP de DTS à côté du paramètre Instance Region pour obtenir les adresses IP des serveurs DTS et les ajouter à votre liste d'autorisation.
    Type de base de données Sélectionnez PostgreSQL.
    Nom d'hôte ou adresse IP Saisissez le point de terminaison de la base de données PostgreSQL auto-gérée. Dans cet exemple, saisissez l'adresse IP publique.
    Port Saisissez le port de service. Par défaut : 5432.
    Nom de la base de données Saisissez le nom de la base de données à migrer.
    Compte de base de données Saisissez le compte de la base de données. Pour les autorisations, consultez la section Autorisations des comptes de base de données.
    Mot de passe de la base de données Saisissez le mot de passe du compte de la base de données.
    Remarque

    Après avoir saisi les informations de la base de données source, vous pouvez cliquer sur Test Connectivity à côté de Database Password pour vérifier que les informations sont correctes. Si les informations sont correctes, le message Passed s'affiche. Si le message Failed s'affiche, cliquez sur Diagnose à côté du message Failed et ajustez les informations de la base de données source en fonction des invites.

    Base de données de destination Type d'instance Sélectionnez RDS Instance.
    Région de l'instance Sélectionnez la région de l'instance RDS de destination.
    ID de l'instance RDS Sélectionnez l'ID de l'instance RDS de destination.
    Nom de la base de données Saisissez le nom de la base de données de destination. Il peut différer du nom de la base de données source.
    Remarque Créez d'abord la base de données et le schéma dans l'instance RDS. Préparatifs.
    Compte de base de données Saisissez le compte de la base de données. Pour les autorisations, consultez la section Autorisations des comptes de base de données.
    Mot de passe de la base de données Saisissez le mot de passe du compte de la base de données.
    Remarque

    Après avoir saisi les informations de la base de données de destination, vous pouvez cliquer sur Test Connectivity après Database Password pour vérifier que les informations saisies sont correctes. Si les informations sont correctes, un message Passed s'affiche. Si un message Failed s'affiche, cliquez sur Diagnose après Failed et ajustez les informations de la base de données de destination en fonction des invites.

  6. Une fois la configuration terminée, cliquez sur Autoriser la liste d'autorisation et passer à l'étape suivante.

    Si la source ou la destination est une instance de base de données Alibaba Cloud (telle que ApsaraDB RDS for MySQL ou ApsaraDB for MongoDB), DTS ajoute automatiquement les adresses IP des serveurs DTS de la région correspondante à la liste d'autorisation de l'instance. Si la source ou la destination est une base de données auto-gérée sur une instance ECS, DTS ajoute automatiquement les adresses IP des serveurs DTS aux règles de sécurité de l'instance ECS. Vous devez également vous assurer que la base de données auto-gérée ne restreint pas l'accès depuis l'instance ECS. Si la base de données est un cluster déployé sur plusieurs instances ECS, vous devez ajouter manuellement les adresses IP des serveurs DTS de la région aux règles de sécurité de chaque instance ECS. Si la source ou la destination est une base de données dans un centre de données ou un autre cloud, vous devez ajouter manuellement les adresses IP des serveurs DTS de la région pour autoriser l'accès depuis celles-ci. Pour obtenir la liste des adresses IP des serveurs DTS, consultez la rubrique Plages d'adresses IP des serveurs DTS.

    Avertissement

    L'ajout des blocs CIDR publics des serveurs DTS, qu'il soit automatique ou manuel, peut introduire des risques de sécurité. En utilisant ce produit, vous reconnaissez et acceptez ces risques potentiels. Il vous incombe de mettre en œuvre des mesures de sécurité de base, notamment, mais sans s'y limiter, l'utilisation de mots de passe forts, la restriction des ports ouverts, l'utilisation de l'authentification pour les appels API internes, la révision et la restriction régulières des segments réseau inutiles, ou la connexion via des réseaux privés tels qu'Express Connect, VPN Gateway ou Smart Access Gateway.

  7. Sélectionnez les types et les objets de migration.

    Paramètre Description
    Type de migration
    • Pour la migration complète des données uniquement, sélectionnez à la fois Schema Migration et Migration complète des données.
    • Pour un temps d'arrêt minimal, sélectionnez Schema Migration, Migration complète des données et Migration incrémentale des données. Dans cet exemple, les trois types de migration sont sélectionnés.
    Remarque Si Migration incrémentale des données n'est pas sélectionné, n'écrivez pas dans la base de données source pendant la migration complète des données afin de garantir la cohérence des données.
    Objet de migration

    Sélectionnez les objets dans la zone Disponible et cliquez sur right arrow pour les déplacer vers la zone Selected Objects.

    Remarque
    • Vous pouvez sélectionner des objets au niveau du schéma, de la table ou de la colonne.
    • Les noms des objets restent inchangés après la migration par défaut. Pour renommer les objets, utilisez la fonctionnalité de mappage des noms d'objets DTS. Mapper les tables et les colonnes.
    • Le mappage des noms d'objets peut entraîner l'échec de la migration des objets dépendants.
    Mappage des noms d'objets Pour renommer les objets migrés dans l'instance de destination, utilisez le mappage des noms d'objets. Mapper les tables et les colonnes.
    Durée de nouvelle tentative de connexion Par défaut, DTS effectue des nouvelles tentatives pendant 12 heures. Vous pouvez personnaliser cette durée. Si DTS se reconnecte dans le délai spécifié, la tâche reprend ; sinon, elle échoue.
    Remarque DTS facture les tâches en cours d'exécution pendant la période de nouvelle tentative. Personnalisez la durée de nouvelle tentative en fonction de vos besoins, ou libérez l'instance DTS lorsque la source et la destination sont libérées.
  8. Une fois ces paramètres configurés, cliquez sur Vérification préalable et démarrage en bas à droite de la page.

    Remarque
    • DTS effectue une vérification préalable avant le démarrage de la tâche. La tâche ne peut démarrer qu'après avoir réussi cette vérification.

    • Si la vérification préalable échoue, cliquez sur l'icône 提示 à côté de l'élément ayant échoué pour afficher les détails.

      • Corrigez les problèmes en fonction des détails, puis exécutez à nouveau la vérification préalable.

      • Pour les avertissements ne nécessitant pas de correction, vous pouvez sélectionner Ignore ou Ignorer et relancer la vérification préalable pour exécuter à nouveau la vérification préalable.

  9. Une fois la tâche passée avec succès la vérification préalable, cliquez sur Next.

  10. Sur la page Confirmer la commande, sélectionnez une Instance Class et cochez la case Conditions d'utilisation du service Data Transmission Service (paiement à l'utilisation).

  11. Cliquez sur Buy and Start. La tâche de migration démarre.

    • Migration complète des données

      N'arrêtez pas manuellement la tâche. Attendez qu'elle se termine automatiquement pour éviter toute perte de données.

    • Migration incrémentale des données

      La tâche ne s'arrête pas automatiquement. Vous devez l'arrêter manuellement lorsque vous êtes prêt.

      Remarque

      Nous vous recommandons d'arrêter la tâche pendant les heures creuses ou lorsque vous êtes prêt à basculer vos charges de travail vers l'instance de destination.

      1. Attendez que le statut de la tâche passe à Incremental Data Migration et affiche Undelayed. Ensuite, cessez d'écrire des données dans la base de données source pendant quelques minutes. Le statut de Incremental Data Migration peut afficher une latence.

      2. Attendez que le statut de Incremental Data Migration repasse à Undelayed. Ensuite, arrêtez manuellement la tâche de migration. La progression de la migration du schéma et de la migration complète des données affiche toutes deux 100 %. Pour mettre en pause la tâche de migration, sélectionnez la tâche et cliquez sur Pause dans la barre d'opérations par lot en bas.

  12. Basculez vos applications vers l'instance RDS.

Étapes suivantes

Après la migration, supprimez les comptes de migration des bases de données source et de destination pour des raisons de sécurité.