

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.

# Transportez des bases de données PostgreSQL entre deux instances de base de données Amazon RDS à l'aide de pg\_transport
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport"></a>

*Raunak Rishabh et Jitender Kumar, Amazon Web Services*

## Résumé
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-summary"></a>

**Ce modèle décrit les étapes de migration de bases de données extrêmement volumineuses entre deux instances de base de données Amazon Relational Database Service (Amazon RDS) pour PostgreSQL à l'aide de l'extension pg\_transport.** Cette extension offre un mécanisme physique de transport permettant de déplacer chaque base de données. En diffusant les fichiers de base de données avec un traitement minimal, il fournit une méthode extrêmement rapide pour migrer des bases de données volumineuses entre des instances de base de données avec un temps d'arrêt minimal. Cette extension utilise un modèle d'extraction dans lequel l'instance de base de données cible importe la base de données depuis l'instance de base de données source.

## Conditions préalables et limitations
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-prereqs"></a>

**Conditions préalables**
+ Les deux instances de base de données doivent exécuter la même version majeure de PostgreSQL.
+ La base de données ne doit pas exister sur la cible. Dans le cas contraire, le transport échoue.
+ Aucune extension autre que **pg\_transport** ne doit être activée dans la base de données source.
+ Tous les objets de la base de données source doivent se trouver dans le tablespace **pg\_default par défaut**.
+ Le groupe de sécurité de l'instance de base de données source doit autoriser le trafic provenant de l'instance de base de données cible.
+ Installez un client PostgreSQL [tel que](https://www.postgresql.org/docs/11/app-psql.html) psql [PgAdmin](https://www.pgadmin.org/)ou pour fonctionner avec l'instance de base de données Amazon RDS PostgreSQL. Vous pouvez installer le client dans votre système local ou utiliser une instance Amazon Elastic Compute Cloud (Amazon EC2). Dans ce modèle, nous utilisons psql sur une EC2 instance.

**Limites**
+ Vous ne pouvez pas transporter de bases de données entre différentes versions majeures d'Amazon RDS for PostgreSQL.
+ Les privilèges d'accès et la propriété de la base de données source ne sont pas transférés vers la base de données cible.
+ Vous ne pouvez pas transporter de bases de données sur des répliques en lecture ou sur des instances parentes de répliques en lecture.
+ Vous ne pouvez pas utiliser les types de données **reg** dans les tables de base de données que vous prévoyez de transporter avec cette méthode.
+ Vous pouvez exécuter jusqu'à 32 transports au total (y compris les importations et les exportations) en même temps sur une instance de base de données.
+ Vous ne pouvez pas renommer include/exclude les tables. Tout est migré tel quel.

**Précaution**
+ Effectuez des sauvegardes avant de supprimer l'extension, car la suppression de l'extension supprime également les objets dépendants et certaines données essentielles au fonctionnement de la base de données.
+ Tenez compte de la classe d'instance et des processus exécutés sur d'autres bases de données de l'instance source lorsque vous déterminez le nombre de travailleurs et les `work_mem` valeurs de **pg\_transport**.
+ Lorsque le transport démarre, toutes les connexions à la base de données source sont interrompues et la base de données passe en mode lecture seule.

**Note**  
Lorsque le transport est exécuté sur une base de données, il n'affecte pas les autres bases de données du même serveur. ****

**Versions du produit**
+ Amazon RDS pour PostgreSQL 10.10 et versions ultérieures, et Amazon RDS pour PostgreSQL 11.5 et versions ultérieures. Pour obtenir les informations les plus récentes sur les versions, consultez [Transporter des bases de données PostgreSQL entre des instances de base](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.TransportableDB.html) de données dans la documentation Amazon RDS.

## Architecture
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-architecture"></a>

![Transport de bases de données PostgreSQL entre des instances de base de données Amazon RDS](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/d5fb7ea3-32b7-4602-b382-3cf5c075c7c9/images/aec4d8d2-37a8-4136-9042-f9667ac4aebb.png)


## Outils
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-tools"></a>
+ **pg\_transport** fournit un mécanisme de transport physique pour déplacer chaque base de données. En diffusant les fichiers de base de données avec un minimum de traitement, le transport physique déplace les données beaucoup plus rapidement que les processus traditionnels de vidage et de chargement et nécessite un minimum de temps d'arrêt. Les bases de données transportables PostgreSQL utilisent un modèle d'extraction dans lequel l'instance de base de données de destination importe la base de données à partir de l'instance de base de données source. Vous installez cette extension sur vos instances de base de données lorsque vous préparez les environnements source et cible, comme expliqué dans ce modèle.
+ [psql](https://www.postgresql.org/docs/11/app-psql.html) vous permet de vous connecter à vos instances de base de données PostgreSQL et de les utiliser. Pour installer **psql** sur votre système, consultez la page des téléchargements de [PostgreSQL](https://www.postgresql.org/download/).

## Épopées
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-epics"></a>

### Création du groupe de paramètres cible
<a name="create-the-target-parameter-group"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un groupe de paramètres pour le système cible. | Spécifiez un nom de groupe qui l'identifie en tant que groupe de paramètres cible ; par exemple,`pgtarget-param-group`. Pour obtenir des instructions, consultez la [documentation Amazon RDS.](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithDBInstanceParamGroups.html#USER_WorkingWithParamGroups.Creating) | DBA | 
| Modifiez les paramètres du groupe de paramètres. | Définissez les paramètres suivants :[See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport.html)<br />Pour plus d'informations sur ces paramètres, consultez la [documentation Amazon RDS.](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.TransportableDB.html) | DBA | 

### Création du groupe de paramètres source
<a name="create-the-source-parameter-group"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un groupe de paramètres pour le système source. | Spécifiez un nom de groupe qui l'identifie en tant que groupe de paramètres source ; par exemple,`pgsource-param-group`. Pour obtenir des instructions, consultez la [documentation Amazon RDS.](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithDBInstanceParamGroups.html#USER_WorkingWithParamGroups.Creating) | DBA | 
| Modifiez les paramètres du groupe de paramètres. | Définissez les paramètres suivants :[See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport.html)<br />Pour plus d'informations sur ces paramètres, consultez la [documentation Amazon RDS.](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.TransportableDB.html) | DBA | 

### Préparer l'environnement cible
<a name="prepare-the-target-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une nouvelle instance de base de données Amazon RDS for PostgreSQL vers laquelle transporter votre base de données source. | Déterminez la classe d'instance et la version de PostgreSQL en fonction des besoins de votre entreprise. | DBA, administrateur système, architecte de base de données | 
| Modifiez le groupe de sécurité de la cible pour autoriser les connexions sur le port de l'instance de base de données depuis l' EC2 instance. | Par défaut, le port de l'instance PostgreSQL est 5432. Si vous utilisez un autre port, les connexions à ce port doivent être ouvertes pour l' EC2 instance. | DBA, administrateur système | 
| Modifiez l'instance et attribuez le nouveau groupe de paramètres cible. | Par exemple, `pgtarget-param-group`. | DBA | 
| Redémarrez l'instance de base de données Amazon RDS cible.  | Les paramètres `shared_preload_libraries` et `max_worker_processes` sont des paramètres statiques qui nécessitent un redémarrage de l'instance. | DBA, administrateur système | 
| Connectez-vous à la base de données depuis l' EC2 instance à l'aide de psql. | Utilisez la commande  : <pre>psql -h <rds_end_point> -p PORT -U username -d database -W</pre> | DBA | 
| Créez l'extension pg\_transport. | Exécutez la requête suivante en tant qu'utilisateur ayant le `rds_superuser` rôle :<pre>create extension pg_transport;</pre> | DBA | 

### Préparation de l'environnement source
<a name="prepare-the-source-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Modifiez le groupe de sécurité de la source pour autoriser les connexions sur le port de l'instance de base de données depuis l' EC2 instance Amazon et l'instance de base de données cible | Par défaut, le port de l'instance PostgreSQL est 5432. Si vous utilisez un autre port, les connexions à ce port doivent être ouvertes pour l' EC2 instance. | DBA, administrateur système | 
| Modifiez l'instance et assignez le nouveau groupe de paramètres source. | Par exemple, `pgsource-param-group`. | DBA | 
| Redémarrez l'instance de base de données Amazon RDS source.  | Les paramètres `shared_preload_libraries` et `max_worker_processes` sont des paramètres statiques qui nécessitent un redémarrage de l'instance. | DBA | 
| Connectez-vous à la base de données depuis l' EC2 instance à l'aide de psql. | Utilisez la commande  : <pre>psql -h <rds_end_point> -p PORT -U username -d database -W</pre> | DBA | 
| Créez l'extension pg\_transport et supprimez toutes les autres extensions des bases de données à transporter. | Le transport échouera si des extensions autres que **pg\_transport** sont installées sur la base de données source. Cette commande doit être exécutée par un utilisateur doté du `rds_superuser` rôle. | DBA | 

### Effectuer le transport
<a name="perform-the-transport"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Effectuez un essai à sec. | Utilisez la `transport.import_from_server` fonction pour effectuer d'abord un essai à sec :<pre>SELECT transport.import_from_server( 'source-db-instance-endpoint', source-db-instance-port, 'source-db-instance-user', 'source-user-password', 'source-database-name', 'destination-user-password', 'true');</pre><br />Le dernier paramètre de cette fonction (défini sur`true`) définit le cycle à sec. <br />Cette fonction affiche toutes les erreurs que vous pourriez rencontrer lors de l'exécution du transport principal. Résolvez les erreurs avant d'exécuter le transport principal.  | DBA | 
| Si le dry run est réussi, lancez le transport de la base de données. | Exécutez la `transport.import_from_server` fonction pour effectuer le transport. Il se connecte à la source et importe les données. <pre>SELECT transport.import_from_server( 'source-db-instance-endpoint', source-db-instance-port, 'source-db-instance-user', 'source-user-password', 'source-database-name', 'destination-user-password', false);</pre><br />Le dernier paramètre de cette fonction (défini sur`false`) indique qu'il ne s'agit pas d'un essai à sec. | DBA | 
| Effectuez les étapes après le transport. | Une fois le transport de la base de données terminé :[See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport.html) | DBA | 

## Ressources connexes
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-resources"></a>
+ [Documentation Amazon RDS](https://docs.aws.amazon.com/rds/)
+ [documentation de pg\_transport](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html#PostgreSQL.TransportableDB.Setup)
+ [Migration de bases de données à l'aide de bases de données transportables RDS PostgreSQL (article de blog](https://aws.amazon.com/blogs/database/migrating-databases-using-rds-postgresql-transportable-databases/))
+ [Téléchargements de PostgreSQL](https://www.postgresql.org/download/linux/redhat/)
+ [utilitaire psql](https://www.postgresql.org/docs/11/app-psql.html)
+ [Création d'un groupe de paramètres DB](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html#USER_WorkingWithParamGroups.Creating)
+ [Modifier les paramètres d'un groupe de paramètres de base de données](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html#USER_WorkingWithParamGroups.Modifying)
+ [Téléchargements de PostgreSQL](https://www.postgresql.org/download/)