> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Migrer vers Managed Postgres avec pg_dump et pg_restore

> Découvrez comment migrer vos données PostgreSQL vers ClickHouse Managed Postgres avec pg_dump et pg_restore

export const Image = ({img, alt, size}) => {
  return <Frame>
      <img src={img} alt={alt} />
    </Frame>;
};

export const galaxyOnClick = eventName => () => {
  try {
    if (typeof window !== "undefined" && window.galaxy && eventName) {
      window.galaxy.track(eventName, {
        interaction: "click"
      });
    }
  } catch (e) {}
};

export const BetaBadge = ({link, galaxyTrack, galaxyEvent}) => {
  if (link) {
    return <a href={link} target="_blank" rel="noopener noreferrer" className="betaBadge" onClick={galaxyTrack && galaxyEvent ? galaxyOnClick(galaxyEvent) : undefined}>
                <Icon />
                <span>Beta</span>
            </a>;
  }
  return <div className="betaBadge">
            <Icon />
            <span>
                Fonctionnalité en bêta. 
                <u>
                    <a href="/docs/beta-and-experimental-features#beta-features">
                        En savoir plus.
                    </a>
                </u>
            </span>
        </div>;
};

Ce guide fournit des instructions détaillées pour migrer votre base de données PostgreSQL vers ClickHouse Managed Postgres à l’aide des utilitaires `pg_dump` et `pg_restore`.

<div id="migration-pgdump-pg-restore-prerequisites">
  ## Prérequis
</div>

* Accès à votre base de données PostgreSQL source.
* `pg_dump` et `pg_restore` installés sur votre machine locale. Ils sont généralement fournis avec PostgreSQL. Dans le cas contraire, vous pouvez les télécharger depuis le [site officiel de PostgreSQL](https://www.postgresql.org/download/).

<div id="migration-pgdump-pg-restore-setup">
  ## La mise en place
</div>

Pour suivre les étapes, prenons comme base de données source un exemple de base de données RDS Postgres. Quelque chose comme ceci :

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/rF8ZX2ZZNpnwXrqH/images/managed-postgres/pg_dump_restore/source-setup.png?fit=max&auto=format&n=rF8ZX2ZZNpnwXrqH&q=85&s=491bc2e86f385054c8116acb6720babe" alt="Configuration de la base de données source PostgreSQL" size="xl" border width="3766" height="2312" data-path="images/managed-postgres/pg_dump_restore/source-setup.png" />

Voici ce que nous avons :

* Deux tables : `events` et `users`. `events` contient un million de lignes, et `users` en contient mille.
* `events` a un index.
* Une vue définie sur la table `events`.
* Deux séquences

<div id="migration-pgdump-pg-restore-dump">
  ## Créer un dump de la base de données source
</div>

Utilisons maintenant `pg_dump` pour générer un fichier de dump des objets ci-dessus. C'est une commande simple :

```shell theme={null}
pg_dump \
  -d 'postgresql://<user>:<password>@<host>:<port>/<database>' \
  --format directory \
  -f rds-dump
```

Ici :

* Remplacez `<user>`, `<password>`, `<host>`, `<port>` et `<database>` par les identifiants de connexion de votre base de données source. La plupart des fournisseurs Postgres vous fournissent une chaîne de connexion que vous pouvez utiliser directement.
* `--format directory` indique que nous voulons un dump au format répertoire, ce qui convient à `pg_restore`.
* `-f rds-dump` indique le répertoire de sortie des fichiers du dump. Notez que ce répertoire sera créé automatiquement et ne doit pas exister au préalable.
* Vous pouvez également paralléliser le processus de dump en ajoutant l’option `--jobs`, suivie du nombre de tâches parallèles que vous souhaitez exécuter. Pour plus de détails, consultez la [documentation de pg\_dump](https://www.postgresql.org/docs/current/app-pgdump.html).

<Tip>
  Vous pouvez tester ce processus une première fois pour vous faire une idée du temps nécessaire et de la taille du dump.
</Tip>

Voici à quoi ressemble l’exécution de cette commande :

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/rF8ZX2ZZNpnwXrqH/images/managed-postgres/pg_dump_restore/dump-command.png?fit=max&auto=format&n=rF8ZX2ZZNpnwXrqH&q=85&s=8aa28a3e300e8e116cebbba89aa5cf96" alt="Exécution de la commande pg_dump" size="xl" border width="2158" height="386" data-path="images/managed-postgres/pg_dump_restore/dump-command.png" />

<div id="migration-pgdump-pg-restore-restore">
  ## Migrer le dump vers ClickHouse Managed Postgres
</div>

Maintenant que nous disposons du fichier dump, nous pouvons le restaurer sur notre instance ClickHouse Managed Postgres à l’aide de `pg_restore`.

<div id="migration-pgdump-pg-restore-create-pg">
  ### Créez une instance Managed Postgres
</div>

Commencez par vérifier que vous disposez d’une instance Managed Postgres configurée, de préférence dans la même région que la source. Vous pouvez suivre le guide de démarrage rapide [ici](/fr/products/managed-postgres/quickstart#create-postgres-database). Voici ce que nous allons provisionner dans ce guide :

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/rF8ZX2ZZNpnwXrqH/images/managed-postgres/pg_dump_restore/create-pg-for-migration.png?fit=max&auto=format&n=rF8ZX2ZZNpnwXrqH&q=85&s=d8cb2e9e932c81c2ad7d0ba62c8958da" alt="Créer une instance ClickHouse Managed Postgres" size="md" border width="1532" height="1570" data-path="images/managed-postgres/pg_dump_restore/create-pg-for-migration.png" />

<div id="migration-pgdump-pg-restore-restore-dump">
  ### Restaurer le dump
</div>

Maintenant, de retour sur notre machine locale, nous pouvons utiliser la commande `pg_restore` pour restaurer le dump dans notre instance Managed Postgres :

```shell theme={null}
pg_restore \
  -d 'postgresql://<user>:<password>@<pg_clickhouse_host>:5432/<database>' \
  --verbose \
  rds-dump
```

Vous pouvez obtenir la chaîne de connexion de votre instance Managed Postgres depuis la console ClickHouse Cloud, comme expliqué très simplement [ici](/fr/products/managed-postgres/connection).

Là encore, il y a quelques options à noter :

* `--verbose` affiche une sortie détaillée pendant le processus de restauration.
* Vous pouvez également utiliser l’option `--jobs` ici pour paralléliser le processus de restauration. Pour plus de détails, consultez la [documentation pg\_restore](https://www.postgresql.org/docs/current/app-pgrestore.html).

Dans notre cas, cela ressemble à ceci :

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/rF8ZX2ZZNpnwXrqH/images/managed-postgres/pg_dump_restore/restore-command.png?fit=max&auto=format&n=rF8ZX2ZZNpnwXrqH&q=85&s=9c0e967e380eb48f3869cc8dcb6070c5" alt="Exécution de la commande pg_restore" size="xl" border width="2828" height="938" data-path="images/managed-postgres/pg_dump_restore/restore-command.png" />

<div id="migration-pgdump-pg-restore-verify">
  ## Vérifier la migration
</div>

Une fois la restauration terminée, vous pouvez vous connecter à votre instance Managed Postgres et vérifier que toutes vos données et tous vos objets ont bien été migrés. Vous pouvez utiliser n’importe quel client PostgreSQL pour vous connecter et exécuter des requêtes.
Voici à quoi ressemble notre configuration Managed Postgres après la migration :

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/rF8ZX2ZZNpnwXrqH/images/managed-postgres/pg_dump_restore/target-setup.png?fit=max&auto=format&n=rF8ZX2ZZNpnwXrqH&q=85&s=df2fa19eb0d2d314afe2d5a8a98b4e72" alt="Configuration cible de la base de données Managed Postgres" size="xl" border width="3330" height="1966" data-path="images/managed-postgres/pg_dump_restore/target-setup.png" />

Nous voyons que toutes nos tables, tous nos index, toutes nos vues et toutes nos séquences sont bien présents, et que les volumes de données correspondent.

<div id="migration-pgdump-pg-restore-considerations">
  ## Points à prendre en compte
</div>

* Assurez-vous que les versions de PostgreSQL des bases de données source et cible sont compatibles.
  L'utilisation d'une version de pg\_dump plus ancienne que le serveur source peut entraîner l'absence de certaines fonctionnalités ou des problèmes de restauration. Idéalement, utilisez une version majeure de pg\_dump identique à celle de la base de données source, ou plus récente.
* Les bases de données volumineuses peuvent prendre beaucoup de temps à exporter et à restaurer.
  Anticipez-le afin de réduire au minimum le temps d'arrêt, et envisagez d'utiliser des exports/restaurations parallèles (`--jobs`) lorsque cette option est prise en charge.
* Notez que pg\_dump / pg\_restore ne répliquent pas tous les objets liés à la base de données ni l'intégralité de l'état d'exécution.
  Cela inclut les rôles et les appartenances à des rôles, les slots de réplication, la configuration au niveau du serveur (par ex. postgresql.conf, pg\_hba.conf), les tablespaces et les statistiques d'exécution.

<div id="migration-pgdump-pg-restore-next-steps">
  ## Prochaines étapes
</div>

Félicitations ! Vous avez migré avec succès votre base de données PostgreSQL vers ClickHouse Managed Postgres à l’aide de pg\_dump et pg\_restore. Vous êtes maintenant prêt à découvrir les fonctionnalités de Managed Postgres et son intégration avec ClickHouse. Voici un guide de démarrage rapide de 10 minutes pour bien démarrer :

* [Guide de démarrage rapide de Managed Postgres](/fr/products/managed-postgres/quickstart)
