Créer et gérer des réplicas en lecture dans Azure Database pour PostgreSQL – Serveur flexible à partir du portail Azure, de l’interface CLI ou de l’API REST
Article
S’APPLIQUE À : Azure Database pour PostgreSQL : serveur flexible
Dans cet article, vous allez apprendre à créer et à gérer des réplicas en lecture dans un serveur flexible Azure Database pour PostgreSQL à partir du portail Azure CLI et de l’API REST. Pour en savoir plus sur les réplicas en lecture, consultez vue d’ensemble.
Lors du déploiement de réplicas de lecture pour des charges de travail principales persistantes et lourdes d’écriture intensive, le retard de réplication peut continuer à s’allonger et ne jamais rattraper le principal. Cela peut également augmenter l’utilisation du stockage sur le principal, car les fichiers WAL ne sont supprimés qu’une fois qu’ils sont reçus au niveau du réplica.
Passer en revue les paramètres du principal
Avant de configurer un réplica en lecture pour le serveur flexible Azure Database pour PostgreSQL, vérifiez que le serveur principal est configuré pour répondre aux prérequis nécessaires. Des paramètres spécifiques sur le serveur principal peuvent influencer la possibilité de créer des réplicas.
Croissance automatique du stockage : les paramètres de croissance automatique du stockage sur le serveur principal et ses réplicas en lecture doivent respecter des règles spécifiques pour garantir la cohérence et empêcher les interruptions de réplication. Consultez Croissance automatique du stockage pour obtenir des informations détaillées sur les règles et les paramètres.
SSD Premium v2 : la version actuelle ne prend pas en charge la création de réplicas en lecture pour les serveurs principaux avec le stockage SSD Premium v2. Si votre charge de travail nécessite des réplicas en lecture, choisissez une autre option de stockage pour le serveur principal.
Dans le Portail Azure, sélectionnez l’instance de serveur flexible Azure Database pour PostgreSQL que vous voulez utiliser avec le réplica.
Dans la boîte de dialogue Vue d’ensemble, notez la version PostgreSQL (par exemple, 15.4). Notez également la région dans laquelle votre principal est déployé (par exemple, East US).
Dans l’encadré du serveur, sous Paramètres, sélectionnez Calcul + stockage.
Passez en revue et notez les paramètres suivants :
Niveau de calcul, processeur, taille (par exemple, Standard_D4ads_v5).
Stockage
Taille du stockage (par exemple, 128GB)
Croissance automatique
Haute disponibilité
Activé / Désactivé
Paramètres des zones de disponibilité
Paramètres de sauvegarde
Période de rétention
Options de redondance
Sous Paramètres, sélectionnez Mise en réseau.
Examiner les paramètres réseau.
Remarque
Les commandes fournies dans ce guide s’appliquent à la version 2.56.0 ou ultérieure de Azure CLI. Vérifiez que vous disposez de la version requise ou d’une version ultérieure installée pour exécuter ces commandes avec succès. Vous pouvez vérifier votre version actuelle de Azure CLI en exécutant az --version dans votre interface de ligne de commande. Pour mettre à jour Azure CLI vers la dernière version, suivez les instructions fournies dans la Documentation Azure CLI.
Pour afficher la configuration et l’état actuel d’un serveur flexible Azure PostgreSQL, utilisez la commande az postgres flexible-server show. Cette commande fournit des informations détaillées sur le serveur spécifié.
az postgres flexible-server show \
--resource-group <resource-group> \
--name <server-name>
Remplacez <resource-group> et <server-name> par votre groupe de ressources spécifique et le nom du serveur que vous souhaitez afficher.
Passez en revue et notez les paramètres suivants :
Niveau de calcul, processeur, taille (par exemple, Standard_D8ads_v5).
Pour obtenir des informations sur la configuration d’un serveur dans Azure Database pour PostgreSQL – Serveur flexible, en particulier pour afficher les paramètres des fonctionnalités récemment introduites telles que la croissance automatique du stockage ou la liaison privée, vous devez utiliser la dernière version de l’API 2023-06-01-preview. Le format de la requête GET sera le suivant :
Remplacez {subscriptionId}, {resourceGroupName} et {serverName} par l’ID de votre abonnement Azure, le nom du groupe de ressources et le nom du serveur primaire, respectivement, que vous souhaitez passer en revue. Cette requête donne accès aux informations de configuration de votre serveur principal de manière à le configurer correctement pour la création d’un réplica en lecture.
Passez en revue et notez les paramètres suivants :
Niveau de calcul, processeur, taille (par exemple, Standard_D8ads_v5).
Sélectionnez une instance de serveur flexible Azure Database pour PostgreSQL à utiliser en tant que serveur principal.
Dans la barre latérale du serveur, sous Paramètres, sélectionnez Réplication.
Sélectionnez Créer un réplica.
Entrez dans le formulaire Informations de base les renseignements suivants.
Sélectionnez Passer en revue + créer pour confirmer la création du réplica ou Suivant : Mise en réseau si vous souhaitez ajouter, supprimer ou modifier des règles de pare-feu.
Conservez les valeurs par défaut restantes, puis sélectionnez le bouton Vérifier + créer en bas de la page ou passez aux formulaires suivants pour ajouter des balises ou modifier la méthode de chiffrement des données.
Passez en revue les informations de la fenêtre de confirmation finale. Quand vous êtes prêt, sélectionnez Créer. Un nouveau déploiement est créé.
Pendant le déploiement, vous voyez le principal à l'état Updating.
Une fois le réplica en lecture créé, vous pouvez le voir dans la fenêtre de Réplication.
Remplacez <replica-name>, <resource-group>, <source-server-name> et <location> par vos valeurs spécifiques.
Une fois le réplica en lecture créé, les propriétés de tous les serveurs, qui sont des réplicas d’un réplica principal, peuvent être obtenues à l’aide de la commande az postgres flexible-server replica create.
az postgres flexible-server replica list \
--name <source-server-name> \
--resource-group <resource-group>
Remplacez <source-server-name> et <resource-group> par vos valeurs spécifiques.
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{replicaserverName}?api-version=2022-12-01
Ici, vous remplacez {subscriptionId}, {resourceGroupName} et {replicaserverName} par l’ID spécifique de votre abonnement Azure, le nom de votre groupe de ressources et le nom souhaité pour votre réplica en lecture, respectivement.
Une fois le réplica en lecture créé, les propriétés de tous les serveurs, qui sont des réplicas d’un réplica principal, peuvent être obtenues en lançant une requête HTTP GET à l’aide de liste de réplicas par API de serveur :
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{sourceserverName}/replicas?api-version=2022-12-01
Ici, vous devez remplacer {subscriptionId}, {resourceGroupName} et {sourceserverName} par l’identifiant spécifique de votre abonnement Azure, le nom de votre groupe de ressources et le nom que vous avez assigné à votre réplica principal, respectivement.
Définissez le calcul et le stockage sur ce que vous avez enregistré à partir de votre principal. Si le calcul affiché n’est pas le même, sélectionnez Configurer le serveur et sélectionnez le calcul approprié.
Remarque
Si vous sélectionnez une taille de calcul inférieure à celle du principal, le déploiement échoue. Sachez également que la taille de calcul peut ne pas être disponible dans une autre région.
Pour éviter des problèmes pendant la promotion de réplicas, changez constamment les paramètres de serveur suivants sur les réplicas en premier avant de les appliquer sur le serveur primaire : max_connections, max_prepared_transactions, max_locks_per_transaction, max_wal_senders, max_worker_processes.
Créer des points de terminaison virtuels
Remarque
Toutes les opérations impliquant des points de terminaison virtuels, telles que l’ajout, la modification ou la suppression, sont exécutées dans le contexte du serveur primaire.
Remplacez <resource-group>, <primary-name>, <virtual-endpoint-name> et <replica-name> par vos valeurs spécifiques.
Si vous souhaitez créer un point de terminaison virtuel en utilisant l’API REST d’Azure, vous utilisez une requête HTTP PUT. La requête ressemble à ce qui suit :
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{sourceserverName}/virtualendpoints/{virtualendpointName}?api-version=2023-06-01-preview
Le corps JSON associé pour cette requête est le suivant :
Ici, {replicaserverName} sera remplacé par le nom du serveur réplica que vous incluez comme cible de point de terminaison du lecteur dans ce point de terminaison virtuel.
Répertorier des points de terminaison virtuels
Pour répertorier les points de terminaison virtuels, effectuez ces étapes :
Dans le Portail Azure, sélectionnez le serveur primaire.
Dans la barre latérale du serveur, sous Paramètres, sélectionnez Réplication.
En haut de la page, les points de terminaison de lecteur et d’enregistreur s’affichent, ainsi que le nom des serveurs vers lesquels ils pointent.
Vous pouvez afficher les détails du point de terminaison virtuel à l’aide de la commande list ou show. Étant donné qu’un seul point de terminaison virtuel est autorisé par paire principal-réplica, les deux commandes produisent le même résultat.
L’exemple suivant montre comment utiliser la commande list :
az postgres flexible-server virtual-endpoint list \
--resource-group <resource-group> \
--server-name <server-name>
Remplacez <server-name> par le nom de votre serveur principal et <resource-group> par le nom de votre groupe de ressources.
Voici comment vous pouvez utiliser la commande show :
az postgres flexible-server virtual-endpoint show \
--name <virtual-endpoint-name>
--resource-group <resource-group> \
--server-name <server-name>
Dans cette commande, remplacez <virtual-endpoint-name>, <server-name>et <resource-group> par les noms respectifs. <server-name> est le nom de votre serveur principal.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{sourceserverName}/virtualendpoints?api-version=2023-06-01-preview
Ici, {sourceserverName} doit être le nom du serveur primaire à partir duquel vous gérez les points de terminaison virtuels.
Modifier l’application pour qu’elle pointe vers le point de terminaison virtuel
Modifier toutes les applications utilisant votre instance de serveur flexible Azure Database pour PostgreSQL afin qu’elles utilisent les nouveaux points de terminaison virtuels (par exemple, corp-pg-001.writer.postgres.database.azure.com et corp-pg-001.reader.postgres.database.azure.com).
Promouvoir les réplicas
Une fois tous les composants nécessaires en place, vous pouvez effectuer une opération de promotion du réplica en tant que principal.
Pour promouvoir le réplica à partir du Portail Azure, procédez comme suit :
Dans le Portail Azure, sélectionnez votre instance de serveur flexible principale Azure Database pour PostgreSQL.
Dans le menu du serveur, sous Paramètres, sélectionnez Réplication.
Dans Serveurs, sélectionnez l’icône Promouvoir pour le réplica.
Dans la boîte de dialogue, vérifiez que l’action est Promouvoir en tant que serveur principal.
Pour la Synchronisation des données, vérifiez que l’option Planifié - synchroniser les données avant de promouvoir est sélectionnée.
Sélectionnez Promouvoir pour lancer le processus. Une fois l’opération terminée, les rôles s’inversent : le réplica devient le principal, et le principal assume le rôle du réplica.
Lors de la promotion d’un réplica vers un serveur principal dans un serveur flexible Azure PostgreSQL, utilisez la commande az postgres flexible-server replica promote. Ce processus est essentiel pour élever un serveur réplica à fonctionner comme serveur principal et à rétrograder le rôle principal actuel au rôle de réplica. Spécifiez --promote-mode switchover et --promote-option planned dans la commande.
Remplacez <resource-group> et <replica-server-name> par le nom de votre groupe de ressources et du serveur réplica spécifique. Cette commande garantit une transition fluide du réplica vers un rôle principal de manière planifiée.
Lors de la promotion d’un réplica dans le serveur primaire, utilisez une requête HTTP PATCH avec un corps JSON spécifique pour définir les options de promotion. Ce processus est essentiel quand vous devez élever un serveur de réplica afin qu’il agisse comme serveur primaire.
Dans cette JSON, la promotion est définie pour se produire en mode switchover avec une option de promotion planned. Bien qu’il existe deux options pour une promotion, planned ou forced, choisissez planned pour cet exercice.
Remarque
Le réplica que vous promouvez doit avoir le point de terminaison virtuel de lecteur affecté, sinon vous recevez une erreur lors de la promotion.
Tester les applications
Pour effectuer certaines opérations, redémarrez vos applications, puis essayez ces opérations. Vos applications doivent fonctionner harmonieusement sans modifier la chaîne de connexion de point de terminaison virtuel ou les entrées DNS. Cette fois, laissez vos applications s’exécuter.
Restauration automatique vers le serveur et la région d’origine
Répétez les mêmes opérations pour promouvoir le serveur d’origine en tant que serveur primaire.
Dans l’encadré du serveur, sous Paramètres, sélectionnez Réplication
Dans Serveurs, sélectionnez l’icône Promouvoir pour le réplica.
Dans la boîte de dialogue, vérifiez que l’action est Promouvoir en tant que serveur principal.
Pour la Synchronisation des données, vérifiez que l’option Planifié - synchroniser les données avant de promouvoir est sélectionnée.
Sélectionnez Promouvoir ; le processus est lancé. Une fois l’opération terminée, les rôles s’inversent : le réplica devient le principal, et le principal assume le rôle du réplica.
Cette fois-ci, modifiez le <replica-server-name> dans la commande az postgres flexible-server replica promote pour faire référence à votre ancien serveur primaire, qui agit actuellement en tant que réplica, puis réexécutez la requête.
Remplacez <resource-group> et <replica-server-name> par le nom de votre groupe de ressources et du serveur réplica actuel spécifique.
Cette fois-ci, modifiez le {replicaserverName} dans la requête d’API pour faire référence à votre ancien serveur primaire, qui agit actuellement en tant que réplica, puis réexécutez la requête.
Dans cette JSON, la promotion est définie pour se produire en mode switchover avec une option de promotion planned. Bien qu’il existe deux options pour une promotion, planned ou forced, choisissez planned pour cet exercice.
Tester les applications
Passez encore une fois à l’une des applications consommatrices. Attendez que l’état du réplica et du principal passe à Updating, puis tentez d’effectuer des opérations. Pendant la promotion du réplica, il se peut que votre application rencontre des problèmes de connectivité temporaires avec le point de terminaison :
Ajouter un réplica en lecture secondaire
Créez un réplica en lecture secondaire dans une région distincte pour modifier le point de terminaison virtuel du lecteur et permettre la création d’un serveur indépendant à partir du premier réplica.
Dans le Portail Azure, choisissez l’instance de serveur flexible principale Azure Database pour PostgreSQL.
Dans la barre latérale du serveur, sous Paramètres, sélectionnez Réplication.
Sélectionnez Créer un réplica.
Remplir le formulaire De base avec des informations dans une troisième région (par exemple, westus et corp-pg-westus-001)
Sélectionnez Passer en revue + créer pour confirmer la création du réplica ou Suivant : Mise en réseau si vous souhaitez ajouter, supprimer ou modifier des règles de pare-feu.
Vérifiez les paramètres de pare-feu. Notez que les paramètres principaux sont copiés automatiquement.
Conservez les valeurs par défaut restantes et sélectionnez le bouton Passer en revue + créer en bas de page, ou passez aux formulaires suivants pour configurer la sécurité ou ajouter des balises.
Passez en revue les informations de la fenêtre de confirmation finale. Quand vous êtes prêt, sélectionnez Créer. Un nouveau déploiement est créé.
Pendant le déploiement, vous voyez le principal à l'état Updating.
Choisissez un autre nom pour <replica-name> afin de le différencier du serveur primaire et de tout autre réplica.
Remplacez <resource-group>, <source-server-name> et <location> par vos valeurs spécifiques.
Vous pouvez créer un réplica en lecture secondaire en utilisant création API serveurs :
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{replicaserverName}?api-version=2022-12-01
Choisissez un autre nom pour {replicaserverName} afin de le différencier du serveur primaire et de tout autre réplica.
Dans le Portail Azure, choisissez l’instance de serveur flexible principale Azure Database pour PostgreSQL.
Dans la barre latérale du serveur, sous Paramètres, sélectionnez Réplication.
Sélectionnez les ellipses, puis sélectionnez Modifier.
Dans la boîte de dialogue, sélectionnez le nouveau réplica secondaire.
Sélectionnez Enregistrer. Le point de terminaison du lecteur pointe désormais vers le réplica secondaire, et l’opération de promotion est maintenant liée à ce réplica.
Vous pouvez maintenant modifier votre point de terminaison de lecteur afin qu’il pointe vers le réplica secondaire nouvellement créé en utilisant une commande az postgres flexible-server virtual-endpoint update. N’oubliez pas de remplacer <replica-name> par le nom du réplica en lecture nouvelle créé.
Remplacez <resource-group>, <server-name>, <virtual-endpoint-name> et <replica-name> par vos valeurs spécifiques.
Vous pouvez maintenant modifier votre point de terminaison de lecteur afin qu’il pointe vers le réplica secondaire nouvellement créé en utilisant une requête PATCH. N’oubliez pas de remplacer {replicaserverName} par le nom du réplica en lecture nouvelle créé.
Dans le Portail Azure, choisissez le serveur flexible principal Azure Database pour PostgreSQL.
Dans l’encadré du serveur, sous le menu de serveur, puis sous Paramètres, sélectionnez Réplication.
Sous Serveurs, sélectionnez l’icône Promouvoir pour le réplica que vous souhaitez promouvoir en tant que serveur indépendant.
Dans la boîte de dialogue, veillez à ce que l’action soit Promouvoir en tant que serveur indépendant et supprimer de la réplication. Cela n’a pas d’impact sur le serveur principal.
Pour la Synchronisation des données, vérifiez que l’option Planifié - synchroniser les données avant de promouvoir est sélectionnée.
Sélectionnez Promouvoir ; le processus est lancé. Une fois terminé, le serveur n’est plus un réplica du principal.
Lors de la promotion d’un réplica dans Azure PostgreSQL – Serveur flexible, le comportement par défaut consiste à le promouvoir en serveur indépendant. La promotion s’effectue à l’aide de la commande az postgres flexible-server replica promote sans spécifier l’option --promote-mode, car le mode standalone est présumé par défaut.
Dans cette commande, remplacez <resource-group> et <replica-server-name> par le nom de votre groupe de ressources spécifique et le nom du premier serveur réplica que vous avez créé, qui ne fait plus partie du point de terminaison virtuel.
Vous pouvez promouvoir un réplica vers un serveur autonome en tirant parti d’une requête PATCH. Envoyez une requête PATCH à l’URL d’API REST de gestion Azure avec le premier corps JSON, où PromoteMode est défini sur standalone et PromoteOption sur planned. Le deuxième format de corps JSON, définissant ReplicationRole sur None, est déconseillé, mais est encore mentionné ici pour la compatibilité descendante.
Dans le Portail Azure, sélectionnez le serveur primaire.
Dans la barre latérale du serveur, sous Paramètres, sélectionnez Réplication.
En haut de la page, localisez la section Virtual endpoints. Accédez aux trois points (options de menu) à côté du nom de point de terminaison, développez-le et choisissez Delete.
Une boîte de dialogue de confirmation de la suppression apparaît. Elle fournit l’avertissement suivant : « Cette action supprime le point de terminaison virtuel virtualendpointName. Tout client connecté à l’aide de ces domaines risque de perdre l’accès. » Acceptez les implications et confirmez en cliquant sur Supprimer.
Pour supprimer un point de terminaison virtuel d’un serveur flexible Azure PostgreSQL, vous pouvez utiliser la commande az postgres flexible-server virtual-endpoint delete. Cette action supprime définitivement le point de terminaison virtuel spécifié.
Dans cette commande, remplacez <resource-group>, <server-name> et <virtual-endpoint-name> par votre groupe de ressources spécifique, votre nom de serveur ainsi que le nom du point de terminaison virtuel que vous souhaitez supprimer.
Si vous souhaitez supprimer un point de terminaison virtuel en utilisant l’API REST d’Azure, vous émettez une requête HTTP DELETE. L’URL de requête est structurée de la façon suivante :
Vous pouvez supprimer un réplica en lecture de la même façon que vous supprimez une instance de serveur flexible Azure Database pour PostgreSQL.
Dans le portail Azure, ouvrez la page Vue d’ensemble du réplica en lecture. Sélectionnez Supprimer.
Vous pouvez également supprimer le réplica en lecture de la fenêtre Réplication en effectuant les étapes suivantes :
Dans le Portail Azure, sélectionnez votre instance de serveur flexible principale Azure Database pour PostgreSQL.
Dans le menu du serveur, sous Paramètres, sélectionnez Réplication.
Sélectionnez le réplica en lecture à supprimer, puis sélectionnez les ellipses. Sélectionnez Supprimer.
Confirmez l’opération de suppression.
Pour supprimer un serveur principal ou réplica, utilisez la commande az postgres flexible-server delete. Si le serveur a des réplicas en lecture, vous devez les supprimer avant de supprimer le serveur principal.
az postgres flexible-server delete \
--resource-group <resource-group> \
--name <server-name>
Remplacez <resource-group> et <server-name> par le nom de votre groupe de ressources et le nom du serveur réplica que vous souhaitez supprimer.
Pour supprimer un serveur principal ou réplica, utilisez les serveurs API de suppression. Si le serveur a des réplicas en lecture, ceux-ci doivent être supprimés avant le serveur principal.
Vous ne pouvez supprimer le serveur principal qu’après avoir supprimé tous les réplicas en lecture. Pour supprimer des réplicas, suivez les instructions de la section Supprimer un réplica, puis effectuez les étapes indiquées.
Pour supprimer un serveur du portail Azure, effectuez les étapes suivantes :
Dans le Portail Azure, sélectionnez votre instance de serveur flexible principale Azure Database pour PostgreSQL.
Ouvrez la page Vue d’ensemble pour le serveur et sélectionnez Supprimer.
Entrez le nom du serveur principal à supprimer. Sélectionnez Supprimer pour confirmer la suppression du serveur principal.
Pour supprimer un serveur principal ou réplica, utilisez la commande az postgres flexible-server delete. Si le serveur a des réplicas en lecture, ceux-ci doivent être supprimés avant le serveur principal.
az postgres flexible-server delete \
--resource-group <resource-group> \
--name <server-name>
Remplacez <resource-group> et <server-name> par le nom de votre groupe de ressources et le nom du serveur principal que vous souhaitez supprimer.
Pour supprimer un serveur principal ou réplica, utilisez les serveurs API de suppression. Si le serveur a des réplicas en lecture, ceux-ci doivent être supprimés avant le serveur principal.
Deux métriques sont disponibles pour superviser les réplicas en lecture.
Retard maximal de réplication physique
Disponible uniquement sur le serveur principal.
La métrique Retard maximal de réplication physique indique le retard en octets entre le serveur principal et le réplica le plus en retard.
Dans le portail Azure, sélectionnez le serveur principal.
Sélectionnez Métriques. Dans la fenêtre Métriques, sélectionnez Retard maximal de réplication physique.
Pour votre Agrégation, sélectionnez Max.
Métrique Retard du réplica en lecture
La métrique Retard du réplica en lecture indique le temps écoulé depuis la dernière transaction réexécutée sur un réplica. S’il aucune transaction ne se produit sur votre principal, la métrique reflète ce retard. Par exemple, si aucune transaction ne se produit sur votre serveur principal et que la dernière transaction a été relue il y a 5 secondes, le retard du réplica en lecture affiche un délai de 5 secondes.
Dans le Portail Azure, sélectionnez le réplica en lecture.
Sélectionnez Métriques. Dans la fenêtre Métriques, sélectionnez Retard du réplica en lecture.