Creación y administración de réplicas de lectura en Azure Database for PostgreSQL: servidor flexible desde Azure Portal, la CLI o la API de REST
Artículo
SE APLICA A: Azure Database for PostgreSQL con servidor flexible
En este artículo, aprenderá a crear y administrar réplicas de lectura en el Servidor flexible de Azure Database for PostgreSQL desde el Azure Portal, CLI y REST API. Para más información acerca de las réplicas de lectura, consulte la introducción.
Cuando se implementan réplicas de lectura para cargas de trabajo principales continuas con numerosas operaciones de escritura, el retraso en la replicación puede seguir creciendo y no alcanzar nunca al servidor principal. Esto también puede aumentar el uso de almacenamiento en la réplica principal, ya que los archivos WAL solo se eliminan una vez recibidos en la réplica.
Revisión de la configuración principal
Antes de configurar una réplica de lectura para el Servidor flexible de Azure Database for PostgreSQL, asegúrese de que el servidor primario está configurado para cumplir los requisitos previos necesarios. La configuración específica del servidor principal puede afectar a la capacidad de crear réplicas.
Crecimiento automático del almacenamiento: la configuración de crecimiento automático del almacenamiento en el servidor principal y sus réplicas de lectura deben cumplir a guías específicas para garantizar la coherencia y evitar interrupciones de replicación. Consulte el Crecimiento automático del almacenamientopara obtener reglas y configuraciones detalladas.
SSD prémium v2: la versión actual no admite la creación de réplicas de lectura para los servidores principales mediante el almacenamiento SSD prémium v2. Si la carga de trabajo requiere réplicas de lectura, elija una opción de almacenamiento diferente para el servidor principal.
En Azure Portal, elija la instancia de servidor flexible de Azure Database for PostgreSQL que desee para la réplica.
En el cuadro de diálogo Información general, anote la versión de PostgreSQL (por ejemplo 15.4). Además, tenga en cuenta la región en la que se implementa la réplica principal (por ejemplo East US).
En la barra lateral del servidor, en Configuración, seleccione Proceso y almacenamiento.
Revise y anote la siguiente configuración:
Nivel de proceso, Procesador, Tamaño (por ejemplo Standard_D4ads_v5).
Storage
Tamaño de almacenamiento (por ejemplo 128GB)
Crecimiento automático
Alta disponibilidad
Habilitada / Deshabilitada
Configuración de la zona de disponibilidad
Configuración de copia de seguridad
Período de retención
Opciones de redundancia
En Configuración, seleccione Redes.
Revisión la configuración de red.
Nota:
Los comandos proporcionados en esta guía son aplicables para la Interfaz de la línea de comandos de Azure versión 2.56.0 o superior. Asegúrese de que tiene instalada la versión requerida o una posterior para ejecutar estos comandos correctamente. Puede comprobar su versión actual de Azure CLI ejecutando az --version en su interfaz de línea de comandos. Para actualizar la Interfaz de la línea de comandos de Azure a la última versión, siga las instrucciones proporcionadas en la Documentación de Azure CLI.
Para ver la configuración y el estado actual de un Servidor Flexible de Azure PostgreSQL, utilice el comando az postgres flexible-server show. Este comando proporciona información detallada sobre el servidor especificado.
az postgres flexible-server show \
--resource-group <resource-group> \
--name <server-name>
Sustituya <resource-group> y <server-name> por su grupo de recursos específico y el nombre del servidor que desea ver.
Revise y anote la siguiente configuración:
Nivel de proceso, Procesador, Tamaño (por ejemplo Standard_D8ads_v5).
Para obtener información sobre la configuración de un servidor en el servidor flexible de Azure Database for PostgreSQL, especialmente para ver la configuración de características introducidas recientemente, como crecimiento automático de almacenamiento o vínculo privado, debe usar la versión de API más reciente 2023-06-01-preview. La solicitud GET tendría el formato siguiente:
Reemplace {subscriptionId}, {resourceGroupName} y {serverName} por el identificador de suscripción de Azure, el nombre del grupo de recursos y el nombre del servidor principal que desea revisar, respectivamente. Esta solicitud proporciona acceso a los detalles de configuración del servidor principal, lo que garantiza que está configurado correctamente para crear una réplica de lectura.
Revise y anote la siguiente configuración:
Nivel de proceso, Procesador, Tamaño (por ejemplo Standard_D8ads_v5).
Seleccione una instancia de Servidor flexible Azure Database for PostgreSQL existente para utilizarla como servidor principal.
En la barra lateral del servidor, en CONFIGURACIÓN, seleccione Replicación.
Seleccione Crear réplica.
Complete el formulario Aspectos básicos con la siguiente información.
Seleccione Revisar y crear para confirmar la creación de la réplica o Siguiente: Redes si desea agregar, eliminar o modificar las reglas de firewall.
Deje los valores predeterminados restantes y, a continuación, seleccione el botón Revisar y crear en la parte inferior de la página o continúe con los formularios siguientes para agregar etiquetas o cambiar el método de cifrado de datos.
Revise la información en la ventana de confirmación final. Cuando esté listo, seleccione Crear. Se crea una nueva implementación.
Durante la implementación, verá el elemento principal en estado Updating.
Después de crear la réplica de lectura, puede verla en la ventana Replicación.
Reemplace <replica-name>, <resource-group>, <source-server-name>, y <location> por sus valores específicos.
Una vez creada la réplica de lectura, se pueden obtener las propiedades de todos los servidores, que son réplicas de una réplica principal mediante el comando az postgres flexible-server replica create.
az postgres flexible-server replica list \
--name <source-server-name> \
--resource-group <resource-group>
Reemplace <source-server-name>, y <resource-group> por sus valores específicos.
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{replicaserverName}?api-version=2022-12-01
Aquí, debe reemplazar {subscriptionId}, {resourceGroupName}y {replicaserverName} por su identificador de suscripción de Azure específico, el nombre del grupo de recursos y el nombre deseado para la réplica de lectura, respectivamente.
Una vez creada la réplica de lectura, se pueden obtener las propiedades de todos los servidores, que son réplicas de una réplica principal iniciando una HTTP GET solicitud de mediante lista de réplicas por API de servidor:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{sourceserverName}/replicas?api-version=2022-12-01
Aquí, debe sustituir {subscriptionId}, {resourceGroupName}, y {sourceserverName} por su Id. de suscripción de Azure específico, el nombre de su grupo de recursos y el nombre que asignó a su réplica principal, respectivamente.
Se trata de un procedimiento recomendado de Cloud Adoption Framework (CAF) para usar una convención de nomenclatura de recursos que le permitirá determinar fácilmente a qué instancia se conecta o administra y dónde reside.
Seleccione una ubicación diferente de la principal, pero tenga en cuenta que puede seleccionar la misma región.
Establezca el proceso y el almacenamiento como lo registró en la base de datos principal. Si el proceso mostrado no coincide, seleccione Configurar servidor y seleccione el adecuado.
Nota:
Si selecciona un tamaño de proceso menor que el principal, se producirá un error en la implementación. Tenga en cuenta también que es posible que el tamaño de proceso no esté disponible en otra región.
Para evitar problemas durante la promoción de réplicas, cambie constantemente los siguientes parámetros de servidor en las réplicas en primer lugar, antes de aplicarlos en la principal: max_connections, max_prepared_transactions, max_locks_per_transaction, max_wal_senders, max_worker_processes.
Creación de puntos de conexión virtuales
Nota:
Todas las operaciones que implican puntos de conexión virtuales, como agregar, editar o quitar, se ejecutan en el contexto del servidor principal.
Reemplace <resource-group>, <primary-name>, <virtual-endpoint-name>, y <replica-name> por sus valores específicos.
Para crear un punto de conexión virtual mediante la API de REST de Azure, usaría una solicitud HTTP PUT. La solicitud tendría este aspecto:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{sourceserverName}/virtualendpoints/{virtualendpointName}?api-version=2023-06-01-preview
El cuerpo JSON adjunto para esta solicitud es el siguiente:
Aquí, {replicaserverName} debe reemplazarse por el nombre del servidor de réplica que está incluyendo como destino de punto de conexión de lector en este punto de conexión virtual.
Enumeración de puntos de conexión virtuales
Para enumerar los puntos de conexión virtuales, siga estos pasos:
En Azure Portal, seleccione el servidor principal.
En la barra lateral del servidor, en CONFIGURACIÓN, seleccione Replicación.
En la parte superior de la página, verá que se muestran los puntos de conexión lector y escritor, junto con los nombres de los servidores a los que apunta.
Puede ver los detalles del punto de conexión virtual utilizando el comando list o show. Dado que solo se permite un punto de conexión virtual por par de réplica principal, ambos comandos producen el mismo resultado.
Este es un ejemplo de cómo usar el comandolist:
az postgres flexible-server virtual-endpoint list \
--resource-group <resource-group> \
--server-name <server-name>
Reemplace <server-name> por el nombre de su servidor primario y <resource-group> por el nombre de su grupo de recursos.
A continuación le explicamos cómo utilizar el comando show:
az postgres flexible-server virtual-endpoint show \
--name <virtual-endpoint-name>
--resource-group <resource-group> \
--server-name <server-name>
En este comando, reemplace <virtual-endpoint-name>,<server-name>y <resource-group> por los nombres respectivos. <server-name> es el nombre de su servidor principal.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{sourceserverName}/virtualendpoints?api-version=2023-06-01-preview
Aquí debe {sourceserverName} ser el nombre del servidor principal desde el que se administran los puntos de conexión virtuales.
Modificación de la aplicación para que apunte al punto de conexión virtual
Modifique cualquier aplicación que esté utilizando su instancia del Servidor flexible de Azure Database for PostgreSQL para utilizar los nuevos puntos de conexión virtuales (ej: corp-pg-001.writer.postgres.database.azure.com y corp-pg-001.reader.postgres.database.azure.com).
Promoción de la réplica
Con todos los componentes necesarios en su lugar, ya puede realizar una operación de promover de réplica a principal.
Para promover la réplica desde Azure Portal, siga estos pasos:
En Azure Portal, seleccione su instancia de Servidor flexible principal de Azure Database for PostgreSQL.
En el menú del servidor, en Configuración, seleccione Replicación.
En Servidores, seleccione el icono Promover de la réplica.
En el cuadro de diálogo, asegúrese de que la acción sea Promover al servidor principal.
En Sincronización de datos, asegúrese de que Planear: sincronizar datos antes de promover está seleccionado.
Seleccione Promover para comenzar el proceso. Una vez completado, los roles inversos: la réplica se convierte en la principal y la principal asume el rol de la réplica.
Al promover una réplica a un servidor principal en el Servidor Flexible de Azure PostgreSQL, utilice el comando az postgres flexible-server replica promote. Este proceso es esencial para elevar un servidor de réplica para que funcione como servidor principal y para degradar el actual primario al rol de réplica. Especifique --promote-mode switchover y --promote-option planned en el comando.
Reemplace <resource-group> y <replica-server-name> por el grupo de recursos específico y el nombre del servidor de réplica. Este mando garantiza una transición fluida de la réplica a una función primaria de forma planificada.
Al promover una réplica a un servidor principal, use una solicitud HTTP PATCHcon un cuerpo específico JSON para establecer las opciones de promoción. Este proceso es fundamental cuando necesita elevar un servidor de réplica para que actúe como servidor principal.
La solicitud HTTP se estructura de la siguiente manera:
En este JSON, la promoción se establece para que se produzca en el modo switchover con una opción de promociónplanned. Aunque hay dos opciones para la promoción ( planned o forced ) ha elegido planned para este ejercicio.
Nota:
La réplica que está promoviendo debe tener asignado el punto de conexión virtual del lector o recibirá un error en la promoción.
Prueba de aplicaciones
Para realizar algunas operaciones, reinicie las aplicaciones y, a continuación, intente esas operaciones. Las aplicaciones deben funcionar sin problemas sin modificar la cadena de conexión del punto de conexión virtual ni las entradas DNS. Deje las aplicaciones en ejecución esta vez.
Conmutación por recuperación al servidor y la región originales
Repita las mismas operaciones para promover el servidor original al servidor principal.
En la barra lateral del servidor, en Configuración, seleccione Replicación
En Servidores, seleccione el icono Promover de la réplica.
En el cuadro de diálogo, asegúrese de que la acción sea Promover al servidor principal.
En Sincronización de datos, asegúrese de que Planear: sincronizar datos antes de promover está seleccionado.
Seleccione Promover, comienza el proceso. Una vez completado, los roles inversos: la réplica se convierte en la principal y la principal asume el rol de la réplica.
Esta vez, cambie el <replica-server-name> en el comando az postgres flexible-server replica promote para hacer referencia a su antiguo servidor principal, que actualmente está actuando como una réplica, y ejecute la solicitud de nuevo.
Reemplace <resource-group> y <replica-server-name> por el grupo de recursos específico y el nombre del servidor de réplica actual.
Esta vez, cambie en {replicaserverName} la solicitud de API para hacer referencia al servidor principal anterior, que actualmente actúa como una réplica y vuelve a ejecutar la solicitud.
En este JSON, la promoción se establece para que se produzca en el modo switchover con una opción de promociónplanned. Aunque hay dos opciones para la promoción ( planned o forced ) ha elegido planned para este ejercicio.
Prueba de aplicaciones
De nuevo, cambie a una de las aplicaciones que consumen. Espere a que el estado principal y de réplica cambie a Updating y, a continuación, intente realizar algunas operaciones. Durante la promoción de réplica, la aplicación podría encontrar problemas de conectividad temporales con el punto de conexión:
Agregar réplica de lectura secundaria
Cree una réplica de lectura secundaria en una región independiente para modificar el punto de conexión virtual del lector y para permitir la creación de un servidor independiente desde la primera réplica.
En Azure Portal, elija el Servidor flexible principal de Azure Database for PostgreSQL.
En la barra lateral del servidor, en CONFIGURACIÓN, seleccione Replicación.
Seleccione Crear réplica.
Introduzca el formulario Aspectos básicos con información en una tercera región (por ejemplo westus y corp-pg-westus-001)
Seleccione Revisar y crear para confirmar la creación de la réplica o Siguiente: Redes si desea agregar, eliminar o modificar las reglas de firewall.
Verificar la configuración del firewall. Observe cómo se copian automáticamente la configuración principal.
Deje los valores predeterminados restantes y, a continuación, seleccione el botón Revisar y crear en la parte inferior de la página o continúe con los siguientes formularios para configurar la seguridad o agregar etiquetas.
Revise la información en la ventana de confirmación final. Cuando esté listo, seleccione Crear. Se crea una nueva implementación.
Durante la implementación, verá el elemento principal en estado Updating.
Elija un nombre distinto para que <replica-name> lo diferencie del servidor principal y de cualquier otra réplica.
Reemplace <resource-group>, <source-server-name>y <location> por sus valores específicos.
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{replicaserverName}?api-version=2022-12-01
Elija un nombre distinto para que {replicaserverName} lo diferencie del servidor principal y de cualquier otra réplica.
En Azure Portal, elija el Servidor flexible principal de Azure Database for PostgreSQL.
En la barra lateral del servidor, en CONFIGURACIÓN, seleccione Replicación.
Seleccione los puntos suspensivos y, a continuación, seleccione Editar.
En el cuadro de diálogo, seleccione la nueva réplica secundaria.
Seleccione Guardar. El punto de conexión del lector ahora apunta a la réplica secundaria y la operación de promoción ahora está vinculada a esta réplica.
Ahora puede modificar su punto de conexión del lector para que apunte a la réplica secundaria recién creada mediante un comando az postgres flexible-server virtual-endpoint update. Recuerde reemplazar <replica-name> por el nombre de la réplica de lectura recién creada.
Reemplace <resource-group>, <server-name>, <virtual-endpoint-name>, y <replica-name> por sus valores específicos.
Ahora puede modificar el punto de conexión del lector para que apunte a la réplica secundaria recién creada mediante una solicitudPATCH. Recuerde reemplazar {replicaserverName} por el nombre de la réplica de lectura recién creada.
En Azure Portal, elija el servidor principal del Servidor flexible de Azure Database for PostgreSQL.
En la barra lateral del servidor, en el menú del servidor, en Configuración, seleccione Replicación.
En Servidores, seleccione el icono Promover de la réplica que desea promover a un servidor independiente.
En el cuadro de diálogo, asegúrese de que la acción es Promover al servidor independiente y quitar de la replicación. Esto no afectará al servidor principal.
En Sincronización de datos, asegúrese de que Planear: sincronizar datos antes de promover está seleccionado.
Seleccione Promover, comienza el proceso. Una vez completado, el servidor ya no es una réplica de la principal.
Al promover una réplica en el servidor flexible de Azure PostgreSQL, el comportamiento predeterminado es promoverlo a un servidor independiente. La promoción se logra mediante el comando az postgres flexible-server replica promote sin especificar la opción --promote-mode, ya que se supone standalone modo de forma predeterminada.
En este comando, reemplace <resource-group> y <replica-server-name> por el nombre del grupo de recursos específico y el nombre del primer servidor de réplica que creó, que ya no forma parte del punto de conexión virtual.
Puede promover una réplica a un servidor independiente mediante una solicitud PATCH. Envíe una solicitud PATCH a la dirección URL de la API de REST de administración de Azure especificada con el primer cuerpo de JSON, donde PromoteMode está establecido en standalone y PromoteOption en planned. El segundo formato de cuerpo JSON, estableciendo ReplicationRole en None, está en desuso, pero todavía se menciona aquí para la compatibilidad con versiones anteriores.
En Azure Portal, seleccione el servidor principal.
En la barra lateral del servidor, en CONFIGURACIÓN, seleccione Replicación.
En la parte superior de la página, busque la sección Virtual endpoints. Vaya a los tres puntos (opciones de menú) junto al nombre del punto de conexión, expándalo y elija Delete.
Aparece un cuadro de diálogo de confirmación de eliminación. Le advierte: "Esta acción elimina el punto de conexión virtual virtualendpointName. Los clientes conectados mediante estos dominios pueden perder acceso". Confirme las implicaciones y confirme haciendo clic en Eliminar.
Para quitar un punto de conexión virtual de un Servidor flexible de Azure PostgreSQL, puede usar el comando az postgres flexible-server virtual-endpoint delete. Esta acción elimina permanentemente el punto de conexión virtual especificado.
En este comando, reemplace <resource-group>, <server-name>y <virtual-endpoint-name> por el grupo de recursos, el nombre del servidor y el nombre del punto de conexión virtual que desea eliminar.
Para eliminar un punto de conexión virtual mediante la API de REST de Azure, emitiría una solicitud HTTP DELETE. La dirección URL de la solicitud se estructuraría de la siguiente manera:
Puede eliminar una réplica de lectura de forma similar a como elimina una instancia de servidor flexible independiente de Azure Database for PostgreSQL.
En Azure Portal, abra la página Introducción para la réplica de lectura. Seleccione Eliminar.
También puede eliminar la réplica de lectura desde la ventana Replicación siguiendo estos pasos:
En Azure Portal, seleccione su instancia de Servidor flexible principal de Azure Database for PostgreSQL.
En el menú del servidor, en Configuración, seleccione Replicación.
Seleccione la réplica de lectura que desea eliminar y, a continuación, seleccione los puntos suspensivos. Seleccione Eliminar.
Confirme la operación de eliminación.
Para eliminar un servidor primario o réplica, utilice el comando az postgres flexible-server delete. Si el servidor tiene réplicas de lectura, primero debe eliminar las réplicas de lectura antes de eliminar el servidor principal.
az postgres flexible-server delete \
--resource-group <resource-group> \
--name <server-name>
Reemplace <resource-group> y <server-name> por el nombre de su grupo de recursos y el nombre del servidor de réplica que desea eliminar.
Para eliminar un servidor primario o réplica, utilice la API de eliminación de servidores. Si el servidor tiene réplicas de lectura, las réplicas de lectura se deben eliminar primero antes de eliminar el servidor principal.
Solo puede eliminar el servidor principal una vez que elimine todas las réplicas de lectura. Para eliminar réplicas, siga las instrucciones de la sección Eliminar una réplica y, a continuación, continúe con los pasos proporcionados.
Para eliminar un servidor de Azure Portal, siga estos pasos:
En Azure Portal, seleccione su instancia de Servidor flexible principal de Azure Database for PostgreSQL.
En la página Información general del servidor, seleccione Eliminar.
Escriba el nombre del servidor principal que desea eliminar. Seleccione Eliminar para confirmar la eliminación del servidor principal.
Para eliminar un servidor primario o réplica, utilice el comando az postgres flexible-server delete. Si el servidor tiene réplicas de lectura, las réplicas de lectura se deben eliminar primero antes de eliminar el servidor principal.
az postgres flexible-server delete \
--resource-group <resource-group> \
--name <server-name>
Reemplace <resource-group> y <server-name> por el nombre de su grupo de recursos y el nombre del servidor principal que desea eliminar.
Para eliminar un servidor primario o réplica, utilice la API de eliminación de servidores. Si el servidor tiene réplicas de lectura, las réplicas de lectura se deben eliminar primero antes de eliminar el servidor principal.
Están disponibles dos métricas para supervisar las réplicas de lectura.
Retraso máximo de replicación física
Solo está disponible en el servidor principal.
La métrica Retraso máximo de replicación física muestra el retardo en bytes entre el servidor principal y la réplica con mayor retardo.
En Azure Portal, seleccione el servidor principal.
Seleccione Métricas. En la ventana Métricas, seleccione Retraso máximo de replicación física.
En Agregación, seleccione Máx.
Métrica Retraso de réplica de lectura
La métrica Retraso de réplica de lectura muestra el tiempo transcurrido desde la última transacción reproducida en una réplica. Si no se produce ninguna transacción en el servidor principal, la métrica refleja este retardo de tiempo. Por ejemplo, si no se producen transacciones en el servidor principal y la última transacción se reprodujo hace 5 segundos, el retraso de réplica de lectura mostrará 5 segundos de retraso.
En Azure Portal, seleccione Réplica de lectura.
Seleccione Métricas. En la ventana Métricas, seleccione Retraso de réplica de lectura.