Importer, exporter et migrer des bases de données
Migrez les données d'une autre base de données PostgreSQL vers une base de données OCI Database with PostgreSQL.
Utilisation d'utilitaires PostgreSQL tels que pg_dump
L'utilitaire pg_dump
est fourni avec une installation PostgreSQL par défaut et peut être utilisé pour extraire une base de données PostgreSQL dans un fichier de script ou un autre fichier d'archive. Ces fichiers peuvent être fournis à une base de données OCI Database with PostgreSQL avec des commandes psql
ou pg_restore
pour recréer une base de données dans le même état au moment de son vidage.
Lorsque vous créez une base de données OCI Database with PostgreSQL, vous spécifiez un utilisateur administrateur. Cet utilisateur peut effectuer une restauration à partir d'un fichier créé à l'aide de ces utilitaires. Comme ces utilitaires sont des applications client PostgreSQL standard, vous pouvez effectuer cette procédure de migration à partir de tout hôte distant disposant d'un accès à la base de données.
Ce guide utilise
pg_dump
pour créer les vidages en texte brut et l'utilitaire psql
pour restaurer le vidage. Vous pouvez également créer des vidages dans un autre format et utiliser pg_restore
pour restaurer les vidages.Exemple : Exporter et importer toutes les bases d'un système de base de données
L'exemple suivant suppose que le système de base de données source est un système PostgreSQL classique, avec trois bases de données : db_1, db_2 et db_3. Le système de base de données source compte de nombreux utilisateurs, dont certains ont des privilèges SUPERUSER.
-
Effectuez le vidage de toutes les bases de données par schéma uniquement. Transférez chaque base de données dans un fichier individuel avec les informations de propriété des objets des utilisateurs.
/usr/lib/postgresql/bin/pg_dump -U psql -h <IP_of_Source_DB> -s -E 'UTF8' -d <db_1> -f <db_1_schema_dump>.sql
-U
: Utilisateur créant le vidage-h
: Adresse de l'hôte de la base de données source-s
: Vider uniquement le schéma, aucune donnée-E
: Réglez l'encodage client du fichier de vidage à UTF-8-d
: Base de données à vider-f
: Fichier O/p pour vider le schéma de base de données
Répétez cette opération pour les bases de données db_2 et db_3.
-
Créez un dump de données uniquement pour chacune des bases de données dans des fichiers individuels.
/usr/lib/postgresql/bin/pg_dump -U psql -h <IP_of_Source_DB> -a -E 'UTF8' -d db_1 -f <db_1_data_dump>.sql
-a
: Vider uniquement les données, et non le schéma
Répétez cette opération pour les bases de données db_2 et db_3.
-
vidage des objets globaux sans informations sur le tablespace.
/usr/lib/postgresql/bin/pg_dumpall -U psql -h <IP_of_Source_DB> -g --no-role-passwords --no-tablespaces -f <all_roles>.sql
-g
: Vider uniquement les objets globaux, aucune base de données--no-role-passwords
: Utilisez cet indicateur pour éviter le dumping des mots de passe.--no-tablespaces
: La base de données OCI Database with PostgreSQL ne prend en charge que les espaces-tables sur place.
-
Comme l'utilisateur administrateur du système de base de données OCI Database with PostgreSQL ne dispose pas des privilèges SUPERUSER, NOSUPERUSER, NOREPLICTION, etc., doivent être supprimés des énoncés
CREATE USER
du vidage.Apportez les modifications nécessaires dans le fichier de vidage global pour supprimer les commandes nécessitant des privilèges SUPERUSER. Exemple :
ALTER ROLE/USER test WITH NOSUPERUSER NOINHERIT NOCREATEROLE NOCREATEDB LOGIN NOREPLICATION NOBYPASSRLS PASSWORD 'test';
Doit être modifié pour :
ALTER ROLE/USER test WITH LOGIN PASSWORD 'test';
-
Restaurez le vidage global à l'aide de la base de données OCI Database with PostgreSQL admin user sur le système de base de données OCI Database with PostgreSQL pour créer tous les rôles/utilisateurs :
/usr/lib/postgresql/bin/psql -U psql -d postgres -h <IP_of_Target_Database_System> -f <all_roles>.sql
-h
: Base de données OCI Database with PostgreSQL. Voir Obtention des détails d'un système de base de données pour obtenir des instructions sur la recherche de l'adresse IP d'un système de base de données.
-
Restaurez les dumps de base de données réservés aux schémas :
/usr/lib/postgresql/bin/psql -U psql -d postgres -h <IP_of_Target_Database_System> -f <db_1_schema_dump>.sql
Répétez cette opération pour les bases de données db_2 et db_3.
Note
Corrigez les erreurs avec les privilèges ou les non-concordances d'objet avant de continuer. -
Restaurez les dumps de base de données réservés aux données :
/usr/lib/postgresql/bin/psql -U psql -d postgres -h <IP_of_Target_Database_System> -f <db_1_data_dump>.sql
Répétez cette opération pour les bases de données db_2 et db_3.
- Vérifiez le nombre de lignes de toutes les tables par rapport à la base de données source.
- Assurez-vous que tous les niveaux d'autorisation du système de base de données source sont pris en compte avec précision dans le système de base de données OCI Database with PostgreSQL.
- Définissez les mots de passe des utilisateurs créés dans le système de base de données OCI Database with PostgreSQL.
-
Exécutez
VACUUM ANALYZE
sur chaque base de données ou chaque table individuelle pour mettre à jour les statistiques des bases de données. Cette commande aide le planificateur d'interrogation PostgreSQL à créer des plans d'interrogation optimisés, ce qui améliore la performance. Pour accélérer l'achèvement deVACUUM ANALYZE
, nous recommandons d'augmentermaintenance_work_mem
dans la session PSQL.VACUUM ANALYZE
peut également être exécuté dans des sessions distinctes en parallèle afin de réduire le temps d'exécution.SET maintenance_work_mem = '<a_few_gigabytes_depending_on_shape>';
VACUUM ANALYZE <db_1>;
Répétez cette opération pour les bases de données db_2 et db_3.
Note
Il est recommandé d'exécuterVACUUM ANALYZE
etREINDEX
périodiquement sur des tables et des index gonflés pour maintenir la performance du système de base de données. Exécutez cette opération pendant les heures creuses afin d'éviter toute incidence sur les applications.
Utilisation de GoldenGate
Vous pouvez utiliser GoldenGate pour configurer la réplication d'une base de données PostgreSQL source vers une base de données OCI Database with PostgreSQL.
Les étapes suivantes couvrent la configuration de la source, de la cible et de GoldenGate pour que les bases de données restent synchronisées. Vous pouvez choisir de passer à OCI Database with PostgreSQL à tout moment, sans aucun temps d'arrêt, une fois le processus terminé.
Préalables
Pour utiliser GoldenGate, assurez-vous que les préalables suivants sont satisfaits :
- Vérifiez que les ressources IAM et le réseau OCI requis sont en place. Pour plus d'informations, voir Introduction à OCI Database with PostgreSQL.
-
Créez un système de base de données qui peut être utilisé comme destination pour la réplication GoldenGate.
- Créez des instances de calcul pour héberger le client PostgreSQL qui peut se connecter aux systèmes de base de données source et de destination. Lorsque vous créez des instances :
-
Téléchargez la paire de clés SSH.
Attention
Quiconque a accès à la clé privée peut se connecter à l'instance. Stockez la clé privée dans un emplacement sécurisé. - Sélectionnez le VCN et le sous-réseau privé utilisés lors de la création du système de base de données.
- Installez une version du client PostgreSQL compatible avec la version PostgreSQL du système de base de données en suivant les instructions à l'adresse https://www.postgresql.org/download/.
-
Préparation de la base de données source
Les bases de données sources doivent répondre aux exigences des utilisateurs et de la configuration pour que GoldenGate puisse extraire et répliquer des données.
Exigences de l'utilisateur
Les processus GoldenGate nécessitent un utilisateur de base de données qui peut saisir des données sources et les transmettre à OCI Database with PostgreSQL. Nous recommandons de créer un utilisateur de base de données PostgreSQL dédié pour le processus d'extraction GoldenGate et le processus de réplication GoldenGate. Pour plus d'informations sur les utilisateurs de base de données et GoldenGate, voir Privilèges de base de données pour Oracle GoldenGate pour PostgreSQL.
Exigences de configuration
Toute base de données source doit être configurée pour s'adapter au processus d'extraction GoldenGate. Voici les paramètres requis avec leurs valeurs pour toute base de données source :
listen_addresses
: Pour la connectivité distante d'un processus d'extraction ou de réplication, réglez"listen_addresses = * "
pour autoriser la connectivité de base de données distante.wal_level
: La journalisation en écriture anticipée sur la base de données source doit être réglée àlogical
, ce qui ajoute les informations nécessaires pour prendre en charge le décodage des enregistrements transactionnels.max_replication_slots
: Le nombre maximal d'emplacements de réplication doit être défini pour accueillir un emplacement ouvert par extraction GoldenGate. En général, vous n'avez pas besoin de plus d'un processus d'extraction GoldenGate par base de données.Note
Si la base de données source utilise déjà la réplication native PostgreSQL et tous les emplacements de réplication disponibles, augmentez la valeur pour permettre l'enregistrement d'une extraction GoldenGate.max_wal_senders
: Définissez la valeur maximale des expéditeurs avec écriture anticipée pour qu'elle corresponde à la valeur maximale des emplacements de réplication.track_commit_timestamp
: Facultativement, les horodatages de validation peuvent être activés dans le journal de frappe anticipée. Si cette option est activée en même temps que la journalisation en écriture anticipée logique, les enregistrements de validation LMD à partir de ce point sont capturés avec la valeur d'horodatage correcte. Sinon, le premier enregistrement saisi par GoldenGate aura un horodatage de validation incorrect.
Pour utiliser Community PostgreSQL comme base de données source, l'utilisateur peut apporter des modifications de configuration dans le fichier postgresql.conf
et redémarrer la base de données pour que les modifications prennent effet :
listen_addresses = *
wal_level = logical
max_replication_slots = 1 (min required for GG)
max_wal_senders = 1 (min required for GG)
track_commit_timestamp = on
Dans Amazon Aurora PostgreSQL, les paramètres de base de données sont modifiés à l'aide de groupes de paramètres. Consultez la documentation sur Amazon AWS pour plus d'informations sur la modification des paramètres de base de données dans un nouveau groupe de paramètres et leur affectation à une instance de base de données.
Assurez-vous que les exigences de configuration de la base de données sont satisfaites en vérifiant les paramètres du groupe de paramètres affecté à l'instance.
Le paramètre wal_level
pour Amazon Aurora est configuré avec un paramètre nommé rds.logical_replication
. Réglez rds.logical_replication
à 1
pour utiliser la base de données comme source pour l'extraction GoldenGate.
L'utilisateur de base de données utilisé pour la migration doit disposer de privilèges de réplication. Accordez des privilèges à l'utilisateur dans le système Amazon Aurora source à l'aide des éléments suivants :
grant replication to <migration-user>;
Dans Amazon RDS pour PostgreSQL, les paramètres de base de données sont modifiés à l'aide de groupes de paramètres. Consultez la documentation sur Amazon AWS pour plus d'informations sur la modification des paramètres de base de données dans un nouveau groupe de paramètres et leur affectation à une instance de base de données.
Assurez-vous que les exigences de configuration de la base de données sont satisfaites en vérifiant les paramètres du groupe de paramètres affecté à l'instance.
Le paramètre wal_level
pour les services de base de données Amazon est configuré avec un paramètre nommé rds.logical_replication
. Réglez rds.logical_replication
à 1
pour utiliser la base de données comme source pour l'extraction GoldenGate.
L'utilisateur de base de données utilisé pour la migration doit disposer de privilèges de réplication. Accordez des privilèges à l'utilisateur dans le système Amazon RDS source à l'aide des éléments suivants :
grant replication to <migration-user>;
Dans Azure Database pour PostgreSQL, les paramètres de base de données sont modifiés à l'aide des paramètres de serveur pour l'instance de base de données. Consultez la documentation sur Azure Database for PostgreSQL pour plus d'informations sur la modification des paramètres de base de données.
Assurez-vous que les exigences de configuration de la base de données sont satisfaites en vérifiant les paramètres de l'instance source.
Lors de la configuration de GoldenGate pour une extraction PostgreSQL par rapport à une base de données Azure pour la base de données PostgreSQL, wal_level
doit être activé et réglé à LOGICAL
.
L'utilisateur de base de données utilisé pour la migration doit disposer de privilèges de réplication. Accordez des privilèges à l'utilisateur dans le système source à l'aide des éléments suivants :
ALTER ROLE <migration-user> WITH REPLICATION;
Vidage du schéma de la base de données source
Tester la connectivité de l'instance de calcul au système de base de données source, puis vider le schéma de la base de données source à l'aide de la commande suivante :
/<path-to-binary>/pg_dump -U <user-to-take-dump> -h <IP-of-source-DB> -s -E 'UTF8' -d <source-DB-name> -f schema_only.sql
-U
: Utilisateur créant le vidage-h
: Adresse de l'hôte de la base de données source-s
: Vider uniquement le schéma, aucune donnée-E
: Réglez l'encodage client du fichier de vidage à UTF-8-d
: Base de données à vider-f
: Fichier O/p pour vider le schéma de base de données
Ce schéma est utilisé lors de la préparation du système de base de données cible. Voir Utilisation d'utilitaires PostgreSQL tels que pg_dump pour plus d'informations sur pg_dump et OCI Database with PostgreSQL.
Préparation du système de base de données cible
Assurez-vous que les préalables pour l'utilisation de GoldenGate pour répliquer des données dans la base de données OCI Database with PostgreSQL sont satisfaits, que la base de données source est préparée, puis restaurez le schéma de la base de données source dans la base de données OCI Database with PostgreSQL cible à l'aide de la commande suivante :
/<path-to-binary>/psql -U <user-to-load-dump> -d <target-DB-name> -h <Private_endpoint_of_target_database_system> -f schema_only.sql
-U
: Utilisateur qui restaure le vidage-h
: Adresse de l'hôte de la base de données de destination-d
: Base de données à vider-f
: Fichier O/p pour vider le schéma de base de données
Voir Utilisation d'utilitaires PostgreSQL tels que pg_dump pour plus d'informations sur psql
et OCI Database with PostgreSQL.
Pour plus d'informations sur l'utilisation d'une instance pour la connexion à un système de base de données, voir Connexion à une base de données.
Utilisation de GoldenGate pour la réplication
Utilisez les étapes suivantes pour configurer GoldenGate à utiliser avec OCI Database with PostgreSQL. Utilisez le compartiment qui contient la base de données OCI Database with PostgreSQL de destination.
- Créez un déploiement et sélectionnez PostgreSQL comme technologie.
- Créez une connexion source basée sur la base de données source et la connectivité de test.
-
Créez une connexion de destination de serveur PostgreSQL et une connectivité de test.
Note
Pour la connectivité réseau, sélectionnez Point d'extrémité dédié comme méthode d'acheminement du trafic. - Affectez les connexions source et de destination au déploiement.
- Ajoutez une extraction pour PostgreSQL au déploiement pour l'exécuter sur la connexion source et extraire ou saisir des données.
- Activer la journalisation supplémentaire au niveau table pour la base de données source. Utilisez le nom du schéma créé lors du chargement du schéma de base de données source. Pour plus de détails, voir l'étape Activer la journalisation supplémentaire sous Ajouter une extraction pour PostgreSQL : Avant de commencer.
- Ajoutez une extraction de chargement initial (INI).
- Indiquez un nom de piste, par exemple
xx
. Ce fichier contient les modifications apportées à la base de données source. -
Dans la page Fichier de paramètre, assurez-vous que les éléments suivants sont inclus dans le fichier :
exttrail xx INITIALLOADOPTIONS USESNAPSHOT TABLE *.*;
INITIALLOADOPTIONS
doit être ajouté pour garantir un instantané cohérent de la base de données une fois l'extraction du chargement initial terminée, avec le numéro LSN. - Sélectionnez Créer et exécuter.
- Surveillez le traitement jusqu'à ce qu'il soit terminé, puis vérifiez le numéro LSN dans le fichier de rapport. Enregistrez le numéro LSN pour une utilisation future.
- Indiquez un nom de piste, par exemple
- Ajoutez une autre extraction au déploiement. Cette fois, sélectionnez Modifier l'extraction de saisie de données (CDC) comme type d'extraction.
- Pour Début, sélectionnez Aucun.
- Indiquez un nom de piste, par exemple
yy
. -
Dans la page Fichier de paramètre, assurez-vous que les éléments suivants sont inclus dans le fichier :
exttrail yy TABLE public.*;
INITIALLOADOPTIONS
doit être ajouté pour garantir un instantané cohérent de la base de données une fois l'extraction du chargement initial terminée, avec le numéro LSN. - Sélectionnez Créer. N'exécutez pas encore l'extraction.
- Dans la page Déploiement, dans le menu Action du nouveau CDC, sélectionnez Commencer par l'option.
- Pour Point de début, sélectionnez À CSN
- Pour CSN, entrez le numéro LSN de l'extraction initiale et sélectionnez Démarrer. Les transactions de la base de données source seront saisies et affichées dans l'onglet Statistiques de l'extraction CDC.
Note
Jusqu'à présent, nous n'utilisons que la base de données source. Le démarrage de l'extraction de chargement initial et du CDC enregistre les modifications apportées à la source dans les fichiers trace correspondants du déploiement. Le processus Replicat transmet les données de ces fichiers de piste au système de base de données OCI Database with PostgreSQL de destination. - Ajoutez un processus de réplication pour PostgreSQL au déploiement. Ce processus de réplication est destiné à l'extraction de chargement initial (REINI).
- Créer une table de points de vérification. Pour plus de détails, voir Ajouter une réplication pour PostgreSQL : Avant de commencer.
- Lors de la création du processus de réplication, fournissez le nom de la piste à partir de l'INI, par exemple
xx
. - Indiquez la table de points de vérification pour le processus de réplication.
-
Dans la page Fichier de paramètre, assurez-vous qu'un élément tel que le suivant est inclus dans le fichier :
MAP public.* TARGET public.*;
- Sélectionnez Créer et exécuter. Vérifiez que les données ont commencé à être chargées dans le système de base de données OCI Database with PostgreSQL.
- Ajoutez un processus de réplication pour PostgreSQL au déploiement. Ce processus de réplication concerne l'extraction de la capture des données de modification (RECDC).
- Lors de la création du processus de réplication, indiquez le nom de la piste à partir du CDC, par exemple
yy
. - Indiquez la table de points de vérification pour le processus de réplication.
-
Dans la page Fichier de paramètre, assurez-vous qu'un élément tel que le suivant est inclus dans le fichier :
MAP public.* TARGET public.*;
- Sélectionnez Créer. N'exécutez pas le RECDC tant que le REINI n'est pas terminé. GoldenGate doit comporter deux processus d'extraction et deux processus de réplication.
- Dans la page Déploiement, dans le menu Action du nouveau RECDC, sélectionnez Démarrer.
- Lors de la création du processus de réplication, indiquez le nom de la piste à partir du CDC, par exemple
- Vérifiez le statut de la base de données OCI Database with PostgreSQL cible avec le système de base de données PostgreSQL et faites correspondre le nombre d'enregistrements et les valeurs.