Configuration de wal2json
IBM Cloud® Databases for PostgreSQL prennent en charge le plug-in wal2json ce qui permet le décodage logique sur votre déploiement.
Remarque :
- Déclassé : Ce plug-in est obsolète dans les versions PostgreSQL 9.6 et 10.
- Pris en charge : Uniquement disponible dans les versions 11 et supérieures de PostgreSQL.
-
Tout d'abord, vous devez configurer les paramètres
wal_level,max_replication_slotsetmax_wal_senders. Remplacez la valeur dewal_levelparlogical. Les valeursmax_replication_slotsetmax_wal_sendersdoivent être définies sur une valeur supérieure à 20. Databases for PostgreSQL réserve 20 emplacements de réplication et expéditeurs WAL à des fins opérationnelles courantes et futures.curl -X PATCH https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/configuration -H 'Authorization: Bearer <>' -H 'Content-Type: application/json' -d '{"configuration": { "wal_level": "logical", "max_replication_slots": 21, "max_wal_senders": 21 } }' -
Définissez un mot de passe pour l'utilisateur
repl. Le mot de passe de tout utilisateur peut être modifié à l'aide de la commandecdb deployment-user-passworddu plug-in d'interface de ligne de commande Cloud Databases ou du noeud final/deployments/{id}/users/{username}de l'API Cloud Databases. L'utilisateurrepldispose des privilèges REPLICATION et le plug-inwal2jsonl'utilise une fois que vous avez défini un mot de passe. -
Créez un emplacement de réplication sur la base de données à partir de l'API Cloud Databases. Envoyez une demande POST au noeud final
/deployments/{id}/postgresql/logical_replication_slots.curl -X POST https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/postgresql/logical_replication_slots -H 'Authorization: Bearer <>' -H 'Content-Type: application/json' -d '{"logical_replication_slot": { "name": "<slot_name>", "database_name": "<database_name>", "plugin_type": "wal2json" } }'Le type de plug-in doit être
wal2json. La base de données doit être une base de données existante. Le nom du slot ne peut contenir que des lettres minuscules, des chiffres et le caractère de soulignement. Vous pouvez vérifier l'existence du slot de réplication en vous connectant à n'importe quelle base de données et en exécutant la commande suivante :SELECT * FROM pg_replication_slots WHERE slot_name = '<slot_name>'; -
Pour tester le plug-in, lancez
pg_recvlogicalà partir de la ligne de commande. La commande est disponible avec une installation de PostgreSQL. Utilisez l'hôte et le port de votre déploiement, ainsi que la base de données et le nom du slot que vous avez créés via l'API.PGSSLMODE=require pg_recvlogical -d <DATABASE NAME> -U repl -h <HOST> -p <PORT> --slot <SLOT NAME> --start -o pretty-print=1 -f - -
Créez une table sur
ibmclouddbet insérez des données. Veillez à ce que les insertions apparaissent dans la ligne de commande qui s'exécutepg_recvlogical.Les créations de tableaux n'apparaissent pas.
wal2json considérations et conseils
-
L'affectation de la valeur
wal_levelau paramètrelogicala pour conséquence d'augmenter la taille des fichiers WAL car PostgreSQL a besoin de plus de données pour réaliser le décodage logique. Si vous n'utilisez paswal2json, laissez la valeur par défaut dewal_level. Des fichiers WAL plus volumineux peuvent nécessiter plus d'espace disque. Le débit d'écriture peut diminuer, tout comme le décalage de la réplication qui affecte la haute disponibilité et les répliques en lecture seule, ainsi que des temps de restauration plus longs à partir d'une sauvegarde. -
Le décodage logique comporte un ensemble de restrictions sur ce qu'il convient de répliquer. Parmi ces restrictions, citons le schéma/DDL, les séquences, TRUNCATE et les objets LOB.
-
Lorsqu'un basculement à haute disponibilité contrôlé se produit, il est possible que les événements de réplication soient livrés plusieurs fois. Les applications en aval doivent être en mesure de gérer les événements distribués plusieurs fois.
-
Si vous créez un emplacement de réplication logique et qu'un consommateur n'est pas connecté et ne consomme pas les modifications, vous pouvez courez le risque de manquer d'espace disque pour votre déploiement. L'emplacement de réplication indique à PostgreSQL qu'il doit conserver tous les journaux de transactions comportant les modifications dont le consommateur a besoin. Si ces modifications ne sont pas consommées, PostgreSQL continue de les collecter jusqu'à ce qu'il ne dispose plus de suffisamment d'espace disque. Vous pouvez surveiller l'espace disque avec l'intégration IBM Cloud® Monitoring . Si vous manquez d'espace, vous pouvez augmenter la capacité du disque et permettre ainsi le démarrage de la base de données. Vous pouvez ensuite commencer à consommer les modifications ou supprimer l'emplacement.
-
Vous pouvez vérifier la quantité d'espace disque utilisée par un emplacement de réplication spécifique et déterminer si cet emplacement de réplication a un consommateur actif. Utilisez l'utilisateur
adminpour exécuter l'une des commandes suivantes :PostgreSQL 10.x et version plus récente
SELECT slot_name, pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(),restart_lsn)) AS lag, active from pg_replication_slots WHERE slot_type='logical';PostgreSQL 9.x
SELECT slot_name, pg_size_pretty(pg_xlog_location_diff(pg_current_xlog_location(),restart_lsn)) AS lag, active FROM pg_replication_slots WHERE slot_type='logical';
Si vous constatez une utilisation du disque plus importante que prévu sur votre déploiement, dépannez en vérifiant que votre slot de réplication dispose d'un consommateur et que votre déploiement n'est pas à court d'espace disque.