

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 d'une base de données PostgreSQL vers la destination depuis la source
<a name="PostgreSQL.TransportableDB.Transporting"></a>

Une fois terminé le processus décrit dans [Configuration pour le transport d'une base de données PostgreSQL](PostgreSQL.TransportableDB.Setup.md), vous pouvez démarrer le transport. Pour cela, exécutez la fonction `transport.import_from_server` sur l'instance de base de données de destination. Dans la syntaxe suivante, vous trouverez les paramètres de la fonction.

```
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);
```

Le valeur `false` illustrée dans l'exemple indique à la fonction qu'il ne s'agit pas d'un test. Pour tester la configuration de votre transport, vous pouvez spécifier `true` pour `dry_run` lorsque vous appelez la fonction, comme illustré ci-après :

```
postgres=> SELECT transport.import_from_server(
    'docs-lab-source-db.666666666666aws-region.rds.amazonaws.com', 5432,
    'postgres', '********', 'labdb', '******', true);
INFO:  Starting dry-run of import of database "labdb".
INFO:  Created connections to remote database        (took 0.03 seconds).
INFO:  Checked remote cluster compatibility          (took 0.05 seconds).
INFO:  Dry-run complete                         (took 0.08 seconds total).
 import_from_server
--------------------

(1 row)
```

Les lignes INFO sont affichées car le paramètre `pg_transport.timing` est défini sur sa valeur par défaut, à savoir `true`. Définissez `dry_run` à la valeur `false` lorsque vous exécutez la commande et que la base de données source est importée vers la destination, comme indiqué ci-dessous :

```
INFO:  Starting import of database "labdb".
INFO:  Created connections to remote database        (took 0.02 seconds).
INFO:  Marked remote database as read only           (took 0.13 seconds).
INFO:  Checked remote cluster compatibility          (took 0.03 seconds).
INFO:  Signaled creation of PITR blackout window     (took 2.01 seconds).
INFO:  Applied remote database schema pre-data       (took 0.50 seconds).
INFO:  Created connections to local cluster          (took 0.01 seconds).
INFO:  Locked down destination database              (took 0.00 seconds).
INFO:  Completed transfer of database files          (took 0.24 seconds).
INFO:  Completed clean up                            (took 1.02 seconds).
INFO:  Physical transport complete              (took 3.97 seconds total).
import_from_server
--------------------
(1 row)
```

Cette fonction nécessite que vous fournissiez les mots de passe utilisateur de la base de données. Nous vous recommandons donc de modifier les mots de passe des rôles utilisateur que vous avez utilisés une fois le transport terminé. Vous pouvez aussi utiliser des variables de liaison SQL pour créer des rôles utilisateur temporaires. Utilisez ces rôles temporaires pour le transport, puis supprimez-les une fois que vous n'en avez plus besoin. 

Si votre transport n'est pas réussi, vous pouvez voir un message d'erreur similaire à ce qui suit :

```
pg_transport.num_workers=8 25% of files transported failed to download file data
```

Le message d'erreur « Impossible de télécharger les données du fichier » indique que le nombre de processus de travail n'est pas défini correctement pour la taille de la base de données. Vous devrez peut-être augmenter ou diminuer la valeur définie pour `pg_transport.num_workers`. Chaque échec indique le pourcentage d'achèvement, afin que vous puissiez voir l'impact de vos modifications. Par exemple, la modification du paramètre de 8 à 4 dans un cas a entraîné les résultats suivants :

```
pg_transport.num_workers=4 75% of files transported failed to download file data
```

Gardez à l'esprit que le paramètre `max_worker_processes` est également pris en compte pendant le processus de transport. Autrement dit, vous devrez peut-être modifier à la fois `pg_transport.num_workers` et `max_worker_processes` pour transporter correctement la base de données. L'exemple présenté a finalement fonctionné lorsque le `pg_transport.num_workers` a été réglé sur 2 :

```
pg_transport.num_workers=2 100% of files transported
```

Pour plus d'informations sur la fonction `transport.import_from_server` et ses paramètres, veuillez consulter [Référence des fonctions des base de données transportables](PostgreSQL.TransportableDB.transport.import_from_server.md). 