Migrez de PostgreSQL sur Amazon EC2 vers Amazon RDS pour PostgreSQL à l'aide de pglogical - Recommandations AWS

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.

Migrez de PostgreSQL sur Amazon EC2 vers Amazon RDS pour PostgreSQL à l'aide de pglogical

Créée par Rajesh Madiwale (AWS)

Environnement : PoC ou pilote

Source : Amazon EC2

Cible : Amazon RDS pour PostgreSQL

Type R : Replateforme

Charge de travail : Open source

Technologies : migration ; bases de données

Services AWS : Amazon RDS

Récapitulatif

Ce modèle décrit les étapes de migration d'une base de données PostgreSQL (version 9.5 et ultérieure) d'Amazon Elastic Compute Cloud (Amazon EC2) vers Amazon Relational Database Service (Amazon RDS) pour PostgreSQL à l'aide de l'extension pglogical PostgreSQL. Amazon RDS prend désormais en charge l'extension pglogical pour PostgreSQL version 10.

Conditions préalables et limitations

Prérequis

Versions du produit

  • PostgreSQL version 10 et versions ultérieures sur Amazon RDS, avec les fonctionnalités prises en charge par Amazon RDS (voir PostgreSQL sur Amazon RDS dans la documentation AWS). Ce modèle a été testé lors de la migration de PostgreSQL 9.5 vers PostgreSQL version 10 sur Amazon RDS, mais il s'applique également aux versions ultérieures de PostgreSQL sur Amazon RDS.

Architecture

Architecture de migration des données

Architecture de migration de données pour PostgreSQL sur Amazon RDS

Outils

Épopées

TâcheDescriptionCompétences requises
Créez une instance de base de données Amazon RDS PostgreSQL.

Configurez une instance de base de données PostgreSQL dans Amazon RDS. Pour obtenir des instructions, consultez la documentation Amazon RDS for PostgreSQL.

DBA
Obtenez un dump de schéma à partir de la base de données PostgreSQL source et restaurez-le dans la base de données PostgreSQL cible.
  1. Utilisez l'utilitaire pg_dump avec l'-soption permettant de générer un fichier de schéma à partir de la base de données source.

  2. Utilisez l'utilitaire psql avec l'-foption permettant de charger le schéma dans la base de données cible.

DBA
Activez le décodage logique.

Dans le groupe de paramètres de base de données Amazon RDS, définissez le paramètre rds.logical_replication statique sur 1. Pour obtenir des instructions, consultez la documentation Amazon RDS.

DBA
Créez l'extension pglogical sur les bases de données source et cible.
  1. Créez l'pglogicalextension sur la base de données PostgreSQL source :

    psql -h <amazon-ec2-endpoint> -d target-dbname -U target-dbuser -c "create extension pglogical;"
  2. Créez l'pglogicalextension sur la base de données PostgreSQL cible :

    psql -h <amazon-rds-endpoint> -d source-dbname -U source-dbuser -c "create extension pglogical;"
DBA
Créez un éditeur sur la base de données PostgreSQL source.

Pour créer un éditeur, exécutez :

psql -d dbname -p 5432 <<EOF SELECT pglogical.create_node( node_name := 'provider1', dsn := 'host=<ec2-endpoint> port=5432 dbname=source-dbname user=source-dbuser' ); EOF
DBA
Créez un ensemble de réplication, ajoutez des tables et des séquences.

Pour créer un jeu de réplication dans la base de données PostgreSQL source et pour ajouter des tables et des séquences au jeu de réplication, exécutez :

psql -d dbname -p 5432 <<EOF SELECT pglogical.replication_set_add_all_tables('default', '{public}'::text[],synchronize_data := true); EOF
DBA
Créez un abonné.

Pour créer un abonné sur la base de données PostgreSQL cible, exécutez :

psql -h <rds-endpoint> -d target-dbname -U target-dbuser  <<EOF SELECT pglogical.create_node(     node_name := 'subscriber1', dsn := 'host=<rds-endpoint> port=5432 dbname=target-dbname password=postgres user=target-dbuser' ); EOF
DBA
Créez un abonnement.

Pour créer un abonnement sur la base de données PostgreSQL cible, exécutez :

psql -h <rds-endpoint> -d target -U postgres <<EOF SELECT pglogical.create_subscription(  subscription_name := 'subscription1',  replication_sets := array['default'],     provider_dsn := 'host=<ec2-endpoint> port=5432 dbname=<source-dbname> password=<password> user=source-dbuser' );
DBA
TâcheDescriptionCompétences requises
Vérifiez les bases de données source et cible.

Vérifiez les bases de données source et cible pour vous assurer que les données sont correctement répliquées. Vous pouvez effectuer une validation select count(1) de base en utilisant les tables source et cible.

DBA

Ressources connexes