Transport de bases de données PostgreSQL entre des instances de base de données - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Transport de bases de données PostgreSQL entre des instances de base de données

En utilisant les bases de données transportables PostgreSQL pour Amazon RDS, vous pouvez déplacer une base de données PostgreSQL entre deux instances de base de données. Il s'agit d'un moyen très rapide de migrer de grandes bases de données entre différentes instances de base de données. Pour utiliser cette approche, vos instances de base de données doivent toutes deux exécuter la même version majeure de PostgreSQL.

Cette fonctionnalité nécessite que vous installiez l'extension pg_transport sur les instances de base de données source et de destination. L'extension pg_transport fournit un mécanisme de transport physique qui déplace les fichiers de base de données avec un traitement minimal. Ce mécanisme déplace les données beaucoup plus rapidement que les processus traditionnels de vidage et de chargement, avec moins de temps d'arrêt.

Note

Les bases de données transportables PostgreSQL sont disponibles dans RDS for PostgreSQL versions 10.10 et ultérieures, ansi que versions 11.5 et ultérieures.

Pour transporter une instance de base de données PostgreSQL d'une instance de base de données RDS for PostgreSQL à une autre, vous devez d'abord configurer les instances source et de destination, comme indiqué dans la section Configuration d'instances de base de données pour leur transport. Vous pouvez ensuite transporter la base de données à l'aide de la fonction décrite dans Transport d'une base de données PostgreSQL.

Que se passe-t-il durant le transport d'une base de données ?

La fonction de bases de données transportables PostgreSQL utilisent un modèle d'extraction pour importer la base de données à partir de l'instance de base de données source. La fonction transport.import_from_server crée la base de données en transit sur l'instance de base de données de destination. La base de données en transit est inaccessible sur l'instance de base de données de destination pendant toute la durée du transport.

Lorsque le transport commence, toutes les sessions en cours sur la base de données source cessent. Les bases de données autres que la base de données source sur l'instance de base de données source ne sont pas affectées par le transport.

La base de données source est placée dans un mode lecture seule spécial. Lorsqu'elle est dans ce mode, vous pouvez vous connecter à la base de données source et exécuter des requêtes de lecture seule. Par contre, les requêtes d'écriture et certains autres types de commandes sont bloqués. Seule la base de données source qui fait l'objet du transport est affectée par ces restrictions.

Durant le transport, vous ne pouvez pas restaurer l'instance de base de données de destination à un instant dans le passé. En effet, le transport n'est pas transactionnel et n'utilise pas le journal write-ahead (WAL) PostgreSQL pour enregistrer les modifications. Si les sauvegardes automatiques sont activées pour l'instance de base de données de destination, une sauvegarde est automatiquement effectuée une fois le transport terminé. Les restaurations ponctuelles sont disponibles pendant un certain temps après la fin de la sauvegarde.

En cas d'échec du transport, l'extension pg_transport tente d'annuler toutes les modifications apportées aux instances de base de données source et de destination. Cela inclut la suppression de la base de données partiellement transportée sur la destination. Selon le type de défaillance, la base de données source peut continuer à rejeter les requêtes d'écriture. Si tel est le cas, utilisez la commande suivante pour autoriser les requêtes d'écriture.

ALTER DATABASE db-name SET default_transaction_read_only = false;

Limites à l'utilisation de bases de données transportables PostgreSQL

Les bases de données transportables présentent les limites suivantes :

  • Réplicas en lecture – Vous ne pouvez pas utiliser des bases de données transportables sur des réplicas en lecture ou des instances parentes de réplicas en lecture.

  • Types de colonne non pris en charge – Vous ne pouvez pas utiliser les types de données reg dans des tables de bases de données que vous souhaitez transporter avec cette méthode. Ces types dépendent des ID d'objet de catalogue système (OID), qui varient souvent durant le transport.

  • Espaces de tables – Tous les objets de base de données sources doivent se trouver dans l'espace de table pg_default par défaut .

  • Compatibilité – Les instances de base de données source et destination doivent exécuter la même version majeure de PostgreSQL.

  • Extensions : l'instance de base de données source ne peut avoir que pg_transport installé.

  • Rôles et ACL – Les privilèges d'accès et les informations de propriété de la base de données source ne sont pas transportés vers la base de données de destination. Tous les objets de base de données sont créés par l'utilisateur de destination locale du transport et sont sa propriété.

  • Transports simultanés : une seule instance de base de données peut prendre en charge jusqu'à 32 transports simultanés, y compris les importations et les exportations, si les processus de travail ont été correctement configurés.

  • Uniquement RDS pour les instances de bases de données PostgreSQL : les bases de données transportables PostgreSQL ne sont prises en charge que sur les instances de base de données RDS for PostgreSQL. Vous ne pouvez pas l'utiliser avec des bases de données locales ou des bases de données exécutées sur Amazon EC2.