La réplique accessible en lecture seule
Un Databases for PostgreSQL réplique en lecture seule toutes vos données du déploiement leader vers le déploiement réplica par le biais d'une réplication asynchrone. Comme leur nom l'indique, les répliques accessibles en lecture seule prennent en charge les transactions de lecture et peuvent être utilisées pour équilibrer des bases de données sur lesquelles les opérations d'écriture et de lecture sont abondantes. La réplique accessible en lecture seule comporte un seul membre de données PostgreSQL et elle est facturée aux mêmes taux de consommation par membre que le déploiement de maître.
Le réplica en lecture seule à haute disponibilité
Un réplica en lecture seule à haute disponibilité offre des avantages tels qu'une meilleure évolutivité de la lecture, une plus grande disponibilité, une latence de lecture réduite, des capacités de sauvegarde et de reprise après sinistre, et la possibilité de distribuer efficacement le trafic de lecture. Il contribue à une infrastructure de base de données plus robuste et plus réactive pour votre application. Pour plus d'informations, voir Le Databases for PostgreSQL réplique en lecture seule à haute disponibilité.
Le maître
Dans l'onglet Répliques en lecture seule d'un déploiement Databases for PostgreSQL, avant que des répliques en lecture seule ne soient provisionnées, le volet central indique qu'il n'existe pas de répliques en lecture et propose un bouton Créer.
Si un déploiement est un chef et qu'il possède une réplique en lecture seule qui lui est déjà associée, la sous-fenêtre Réplication contient une liste de déploiements de réplique et un lien vers chacun d'eux. Cliquez sur l'icône en forme de roue dentée à droite du nom de déploiement du réplica en lecture seule pour le gérer.
Mise à disposition d'une réplique accessible en lecture seule
Les ressources pour les déploiements PostgreSQL sont allouées par déploiement et les déploiements normaux ont deux membres. Étant donné qu'un réplica en lecture seule n'a qu'un seul membre et que le provisionnement utilise actuellement des valeurs qui représentent la moitié des valeurs demandées pour la mémoire et le stockage, le provisionnement peut échouer. L'interface web ne peut pas modifier la valeur du stockage et utilise automatiquement la valeur du déploiement principal, qui est réduite de moitié. Si cela n'est pas suffisant pour vos données, vous devez utiliser l'API ou le CLI pour spécifier deux fois le stockage que vous souhaitez voir provisionné. (Il en va de même pour la mémoire, bien qu'une quantité inférieure de mémoire puisse ne pas empêcher la restauration de réussir) Une mise à jour est en cours pour remédier à cette situation.
Approvisionnement via l'interface utilisateur
Provisionnez un réplica en lecture seule à partir de l'onglet Répliques en lecture du leader en cliquant sur Créer un réplica en lecture seule. L'instance source est automatiquement complétée. Le nom de la réplique en lecture seule est généré automatiquement dans la zone Nom du service , mais vous pouvez le renommer librement. Vous pouvez choisir la région dans laquelle effectuer le déploiement, ainsi que son allocation de mémoire initiale. La taille de disque, la version et les nœuds finaux publics/privés sont automatiquement configurés pour correspondre aux paramètres du déploiement de maître.
Si vous utilisez Key Protect, le mode BYOK (Bring Your Own Key (BYOK)) est pris en charge uniquement lors de la mise à disposition à partir de l'interface de ligne de commande et de l'API. Sinon, la réplique accessible en lecture seule est chiffrée avec une clé générée.
Approvisionnement par l'intermédiaire de l'interface CLI
La mise à disposition d'une réplique accessible en lecture seule via l'interface de ligne de commande et l'API fonctionne de la même manière que la mise à disposition d'un déploiement Databases for PostgreSQL standard.
L'application des accès est gérée par le contrôleur de ressources et utilise un paramètre {"remote_leader_id": "crn:v1:..."} pour spécifier le responsable de la réplique que vous provisionnez.
Pour provisionner un réplica en lecture seule via l'interface de gestion, utilisez une commande telle que :
ibmcloud resource service-instance-create <REPLICA_NAME_OR_CRN> databases-for-postgresql standard <REGION> \
-p \ '{
"remote_leader_id": "crn:v1:bluemix:public:databases-for-postgresql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71819::",
"members_memory_allocation_mb": "2048",
"members_disk_allocation_mb": "10240"
}'
Vous devez spécifier les quantités de RAM et de disque, en gardant à l'esprit que la taille minimale est de 8 Go de RAM et de 10 Go de disque. Vous pouvez éventuellement spécifier si la réplique accessible en lecture seule utilise des noeuds finaux publics ou privés. Vous ne pouvez pas spécifier une version pour la réplique accessible en lecture seule. La version prend automatiquement la même valeur que la version principale du déploiement de maître.
Mise à disposition via l'API
Le provisionnement d'une réplique en lecture seule via l'API fonctionne de manière similaire au provisionnement d'un déploiement standard Databases for PostgreSQL.
L'application des accès est gérée par le contrôleur de ressources et utilise un paramètre {"remote_leader_id": "crn:v1:..."} pour spécifier le responsable de la réplique que vous provisionnez.
Pour provisionner une réplique en lecture seule via l'API, utilisez une commande telle que :
curl -X POST \
https://resource-controller.cloud.ibm.com/v2/resource_instances \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{
"name": "<REPLICA_NAME_OR_CRN>",
"target": "<REGION>",
"resource_group": "<RESOURCE_GROUP_ID>",
"resource_plan_id": "databases-for-postgresql-standard",
"parameters": {
"remote_leader_id": "crn:v1:bluemix:public:databases-for-postgresql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71819::",
"members_memory_allocation_mb": "2048",
"members_disk_allocation_mb": "10240"
}
}'
Vous devez spécifier les quantités de RAM et de disque, en gardant à l'esprit que la taille minimale est de 8 Go de RAM et de 10 Go de disque. Vous pouvez éventuellement spécifier si la réplique accessible en lecture seule utilise des noeuds finaux publics ou privés. Vous ne pouvez pas spécifier une version pour la réplique accessible en lecture seule. La version prend automatiquement la même valeur que la version principale du déploiement de maître.
La réplique accessible en lecture seule
Dans l'onglet Répliques en lecture d' une réplique en lecture seule, Réplication contient son nom et sa région, ainsi que le nom et la région de son leader. Le panneau comporte également des boutons permettant de resynchroniser et promouvoir la réplique accessible en lecture seule.
Vérification du statut de la réplication
Vous devez contrôler la réplication car l'état de la réplication n'est pas automatiquement contrôlé.
Vérifier l'état de réplication d'un réplica en lecture seule avec psql, mais seulement à partir de son leader. Connectez-vous au déploiement de maître avec psql en utilisant les données d'identification d'administrateur. Une fois que vous êtes connecté, exécutez la commande suivante :
SELECT * from pg_stat_replication;
Lorsque vous surveillez la sortie du délai de réplication, notez que le site application_name fait référence à l'identifiant de formation des répliques : la dernière section remplie du nom de la ressource en nuage (CRN). Recherchez
une sync_state valeur « async », une state valeur « Streaming » pendant la réplication et les statistiques temporelles.
Votre déploiement a toujours une réplique pour son nœud pairé HA, le application_name sera le même que votre déploiement principal, et la valeur sync_state sera "sync". Vous devez vous attendre à une ligne
de sortie supplémentaire pour chaque réplique en lecture seule, le application_name sera différent et le sync_state sera "asynchrone". Vous pouvez ensuite évaluer si elle est en phase avec les informations
supplémentaires fournies par les résultats de la requête.
Pour plus d'informations, voir pg_stat_replication.
Utilisateurs et privilèges de réplique accessible en lecture seule
-
Tous les utilisateurs du maître, y compris ceux qui étaient présents avant la mise à disposition de répliques accessibles en lecture seule, peuvent se connecter et exécuter des opérations de lecture sur une réplique accessible en lecture seule avec les mêmes privilèges sur les objets que ceux dont ils disposent sur le maître.
-
Si plusieurs répliques accessibles en lecture seule sont associées à un maître, un utilisateur créé sur celui-ci est également créé sur toutes les autres répliques accessibles en lecture seule.
-
Les utilisateurs créés sur le maître sont conservés sur la réplique accessible en lecture seule lorsqu'elle est promue vers un déploiement autonome, y compris l'utilisateur
admin. Lorsque la réplique accessible en lecture seule est promue, les utilisateurs et les privilèges de tous les utilisateurs sur le maître sont transférés vers le déploiement promu. -
Les opérations d'écriture sur la réplique accessible en lecture seule pour tous les utilisateurs ne sont pas filtrées ou rejetées, mais échouent au niveau de la base de données.
Vous pouvez également créer des utilisateurs avec des droits d'accès à la réplique accessible en lecture seule et aucun droit accès au maître à partir de la réplique accessible en lecture seule. Si plusieurs répliques accessibles en lecture seule sont associées à un maître, un utilisateur créé sur l'une d'elles est également créé sur toutes les autres.
Les utilisateurs de réplique accessible en lecture seule qui sont créés sur une réplique accessible en lecture seule peuvent se connecter aux répliques et exécuter des opérations de lecture. Les utilisateurs de réplique accessible en lecture seule ne peuvent pas se connecter et exécuter des opérations sur le maître. En outre, ils ne sont pas conservés lorsqu'une réplique accessible en lecture est promue vers un déploiement autonome.
Les utilisateurs créés sur une réplique accessible en lecture seule se voient affecter des privilèges par le maître, ainsi que le rôle ibm-cloud-base-user-ro et sont membres du groupe ibm-cloud-base-user. Ils ont
accès à tous les objets créés par d'autres membres de ce groupe, y compris les utilisateurs du leader qui ont été créés via Données d'identification, l'interface de ligne de commande ou l'API. Conformément aux privilèges de l'utilisateur
ibm-cloud-base-user, un utilisateur créé par réplique en lecture seule n'a pas accès aux objets créés par l'utilisateur admin ou par d'autres utilisateurs créés par l'intermédiaire de psql. Pour plus d'informations,
voir la page relative aux rôles et aux privilèges PostgreSQL.
Resynchronisation d'une réplique accessible en lecture seule
Si vous devez resynchroniser une réplique accessible en lecture seule, cliquez sur le bouton Resynchroniser la réplique accessible en lecture seule. La resynchronisation est une opération perturbatrice au cours de laquelle les données sont supprimées, puis régénérées dans la réplique accessible en lecture seule. La réplique accessible en lecture seule ne peut effectuer aucune autre opération ni exécuter des requêtes lorsqu'une resynchronisation est en cours. Les requêtes ne sont pas redirigées vers le maître, par conséquent, les connexions à la réplique accessible en lecture seule échouent tant que la resynchronisation n'est pas terminée.
Le temps nécessaire à la resynchronisation d'une réplique accessible en lecture seule est variable, mais ce processus peut être très long.
Resynchronisation d'un réplica en lecture seule via le CLI
Pour démarrer une resynchronisation via l'interface de ligne de commande, utilisez la commande cdb read-replica-resync.
ibmcloud cdb read-replica-resync <DEPLOYMENT_NAME_OR_CRN>
Resynchronisation d'une réplique en lecture seule via l'API
Pour démarrer une resynchronisation via l'API, envoyez une demande POST au noeud final /deployments/{id}/remotes/resync.
curl -X POST \
https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/remotes/resync \
-H 'Authorization: Bearer <>'
Promotion d'une réplique accessible en lecture seule
Une réplique accessible en lecture seule peut être promue vers un cluster indépendant pouvant accepter les opérations d'écriture ainsi que les opérations de lecture. Si quelque chose arrive au déploiement de maître, la réplique accessible en lecture seule peut être promue vers un cluster autonome et commencer à accepter les opérations d'écriture provenant de votre application. La promotion d'un cluster read-replica en cluster autonome sera plus rapide si le cluster read-replica possède déjà plus d'un membre de données.
Lors de la promotion, la réplique accessible en lecture seule met fin à sa connexion avec le maître et devient un déploiement Databases for PostgreSQL autonome. Le déploiement peut commencer à accepter et exécuter des opérations de lecture et d'écriture, les sauvegardes sont activées, et il émet son propre nom d'administrateur. Un nouveau membre de données est ajouté et le déploiement devient un cluster avec deux membres de données. Le coût s'en trouve augmenté car le déploiement est facturé aux même taux de consommation par membre, mais il comporte deux membres au lieu d'un.
Lorsque vous effectuez la promotion d'une réplique accessible en lecture seule, vous pouvez ignorer la sauvegarde initiale qui devrait normalement être exécutée lors de la promotion. Lorsque vous ignorez la sauvegarde initiale, votre réplique devient disponible plus rapidement, mais aucune sauvegarde n'est disponible immédiatement. Vous pouvez lancer une sauvegarde à la demande une fois la promotion terminée.
Une fois qu'une réplique accessible en lecture seule est promue vers un déploiement indépendant, elle ne peut pas être restaurée en tant que réplique accessible en lecture seule ou elle ne peut pas rejoindre un maître.
Promouvoir un réplica en lecture seule dans l'interface utilisateur
Pour promouvoir un réplica en lecture seule à partir de l'interface utilisateur, cliquez sur Promouvoir le réplica en lecture seule.
Promouvoir un réplica en lecture seule dans le CLI
Pour effectuer la promotion via l'interface de ligne de commande, utilisez la commande cdb read-replica-promote.
ibmcloud cdb read-replica-promote <DEPLOYMENT_NAME_OR_CRN>
Promouvoir un réplica en lecture seule via l'API
Pour effectuer la promotion via l'API, envoyez une demande POST au noeud final /deployments/{id}/remotes/promotion.
curl -X POST \
https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/remotes/promotion \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{"promotion": {}}' \
Pour effectuer la promotion et ignorer la sauvegarde initiale après la promotion, définissez également skip_initial_backup dans le corps JSON.
curl -X POST \
https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/remotes/promotion \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{"promotion": {"skip_initial_backup": true}}' \
Durée d'exécution
La tâche de promotion se termine uniquement lorsque la base de données est très disponible. Cependant, la disponibilité en lecture / écriture se produit après environ 10 minutes avec une mise en garde majeure: la base de données n'est pas très disponible tant que la tâche n'est pas terminée.
Le temps de promotion complet d'une réplique en lecture seule est déterminé par la taille des données, de deux manières possibles :
- Les répliques en lecture seule sont des membres uniques. Lorsqu'elle est promue, la spécification de formation est remplacée par deux membres, ce qui crée une seconde réplique. Le temps de création de cette réplique dépend de la taille des données. La création de cette réplique s'exécute à 25 Mo/s pour éviter de saturer le réseau. Avec la croissance des bases de données, la création peut prendre beaucoup de temps. La tâche n'est pas terminée tant que la création de cette réplique n'est pas terminée.
- Si vous choisissez d'effectuer une sauvegarde dans le cadre de la promotion, la fin de cette sauvegarde doit également être terminée avant la fin de la tâche. Ici encore, cela dépend de la taille de la base de données.
Il n'y a pas de membre à haute disponibilité tant que la tâche de promotion n'est pas terminée. De même, si vous avez choisi d'effectuer une sauvegarde initiale, il n'existe aucune sauvegarde tant que le second point n'est pas terminé ou qu'une sauvegarde manuelle est créée.
Mise à niveau pendant la promotion
Si vous devez effectuer une mise à niveau vers une nouvelle version principale de la base de données, vous pouvez le faire en lors de la promotion d'une réplique accessible en lecture seule vers un déploiement autonome. Pour plus d'informations, voir Mise à niveau vers une nouvelle version majeure.
Remarques sur les répliques accessibles en lecture seule
-
La réplique accessible en lecture seule peut exister dans la même région que la formation source, ou dans une autre région, permettant ainsi la réplication de vos données entre les régions.
-
Une réplique accessible en lecture seule doit avoir la même version principale que son maître.
-
Les sauvegardes sont désactivées sur les répliques accessibles en lecture seule. Les sauvegardes ne sont prises que sur des déploiements de maître.
-
Les répliques peuvent être restaurées dans d'autres régions, à l'exception des régions compatibles avec EU Cloud (actuellement
eu-de,eu-es, etpar-01), qui ne peuvent être restaurées qu'entre elles (par exemple, les répliques depar-01peuvent être restaurées danseu-de, et vice versa). -
Il y a une limite de cinq répliques en lecture seule par leader.
-
La réplique accessible en lecture seule ne participe pas aux sélections maître->abonné pour le cluster maître, et le basculement vers la réplique accessible en lecture seule n'est pas automatisé. La promotion de la réplique accessible en lecture seule vers un déploiement complet est une tâche initiée manuellement par l'utilisateur.
-
La taille minimale d'une réplique en lecture seule est de 8 Go de RAM et de 10 Go de disque. Ces informations s'appliquent si votre déploiement de maître est plus petit.
-
Les répliques accessibles en lecture seule ne sont pas mises à l'échelle automatiquement pour correspondre au maître. Si la quantité de données que vous stockez dépasse le disque alloué à vos déploiements, mettez le disque à l'échelle sur les répliques accessibles en lecture seule, puis sur le maître. Lorsque les répliques accessibles en lecture seule sont mises à l'échelle en premier, vous êtes assuré de ne pas manquer d'espace sur ces répliques. Si vous mettez à l'échelle le disque du maître à des fins de performances et non pour des questions d'espace, il n'est pas nécessaire de mettre à l'échelle les répliques accessibles en lecture seule.
-
La réplication est asynchrone et peut générer un décalage. Par défaut, il n'y a pas de communication cohérente entre le primaire et le réplica. Il peut arriver qu'une réplique accessible en lecture seule soit beaucoup distancée et qu'elle doive être resynchronisée. Le décalage en matière de réplication peut être plus important lorsque la réplique se trouve dans une région éloignée géographiquement du maître correspondant.
-
Si vous surveillez votre déploiement à l'aide du service IBM Cloud Monitoring, vous pouvez observer les tendances de la métrique de délai de réplication PostgreSQL Read replica. Si vous voyez une valeur de
-2pour cette métrique, ce qui pourrait indiquer un problème, suivez les étapes de la section Vérification de l'état de la réplication pour déterminer si la réplication fonctionne comme prévu. Si vous avez des doutes après avoir vérifié l'état de la réplication, contactez le support IBM Cloud pour vérifier votre déploiement avant de procéder à la resynchronisation. -
Un réplica en lecture seule est un déploiement avec un seul membre de données et n'a pas de haute disponibilité interne. Elle est sujette à des interruptions temporaires et à des temps d'indisponibilité durant la maintenance. Si certaines de vos applications reposent sur des répliques accessibles en lecture seule, prenez soin de disposer d'une logique qui relance les requêtes ayant échoué ou d'un équilibrage de charge entre plusieurs répliques accessibles en lecture seule.
Statut de réplique en lecture seule lors des mises à niveau majeures sur place
Avec l'introduction des mises à niveau majeures sur place dans notre Databases for PostgreSQL service, les répliques en lecture seule peuvent aider à maintenir la continuité des transactions en lecture et s'avèrent particulièrement utiles pendant les processus de mise à niveau. Cependant, veuillez noter que cette fonctionnalité n'est pas encore applicable aux répliques en lecture seule pour le moment. Toutefois, si votre service doit lire des données à partir de l'instance en cours de mise à niveau, vous pouvez envisager de créer une instance de secours et de mettre à jour les détails de connexion de votre application afin qu'ils pointent vers cette instance. Cela vous garantit de disposer d'une copie à jour de votre base de données avant de lancer la mise à niveau. L'instance de secours peut également être promue et utilisée comme instance principale si la mise à niveau sur place ne s'effectue pas correctement.
Lors d'une mise à niveau majeure sur place, l'instance source et ses répliques en lecture seule perdent leur fonctionnalité de réplication, et la réplication n' est pas automatiquement restaurée après la mise à niveau (notez également que le changement de version les rend incompatibles). Cependant, les répliques en lecture seule restent pleinement opérationnelles en tant qu'instances autonomes. Vous pouvez donc promouvoir en toute sécurité une réplique en lecture seule au rang d'instance principale à tout moment, indépendamment du résultat de la mise à niveau. En cas d'échec de la mise à niveau, la promotion d'une réplique en lecture seule vous permet de restaurer rapidement votre base de données.