La réplica de solo lectura
Una Databases for PostgreSQL réplica de sólo lectura replica todos sus datos desde el despliegue líder al despliegue réplica mediante replicación asíncrona. Como indica su nombre, las réplicas de solo lectura admiten transacciones de lectura y se pueden utilizar para equilibrar las bases de datos que tengan un gran número de operaciones de escritura y de lectura. La réplica de solo lectura tiene un único miembro de datos de PostgreSQL y se factura con las mismas tasas de consumo por miembro que el líder.
La réplica de sólo lectura de alta disponibilidad
Una réplica de sólo lectura de alta disponibilidad Databases for PostgreSQL proporciona ventajas como una mejor escalabilidad de lectura, mayor disponibilidad, latencia de lectura reducida, capacidades de copia de seguridad y recuperación ante desastres, y la capacidad de distribuir el tráfico de lectura de forma eficiente. Contribuye a una infraestructura de base de datos más sólida y con mayor capacidad de respuesta para su aplicación. Para obtener más información, consulte La Databases for PostgreSQL réplica de sólo lectura de alta disponibilidad.
El líder
En la pestaña Réplicas de sólo lectura de un despliegue de Databases for PostgreSQL, antes de que se aprovisione ninguna réplica de sólo lectura, el panel central indica que no existen réplicas de lectura y proporciona un botón Crear.
Si un despliegue es un líder y tiene una réplica de solo lectura que ya está unida a él, el panel Réplica tiene una lista de despliegues de réplica y un enlace a cada uno de ellos. Haga clic en el icono de engranaje situado a la derecha del nombre de despliegue de la réplica de sólo lectura para gestionarla.
Suministro de una réplica de solo lectura
Los recursos para despliegues de PostgreSQL se asignan por despliegue, y los despliegues normales tienen dos miembros. Puesto que una réplica de sólo lectura sólo tiene un miembro, y el aprovisionamiento utiliza actualmente valores que son la mitad de los valores solicitados para la memoria y el almacenamiento, el aprovisionamiento puede fallar. La interfaz web no puede modificar el valor de almacenamiento y utiliza automáticamente el valor de la implantación líder, que se reduce a la mitad. Si eso es insuficiente para que quepan sus datos, deberá utilizar la API o la CLI para especificar el doble de almacenamiento que desea que se aprovisione. (Lo mismo se aplica a la memoria, aunque una cantidad menor de memoria podría no impedir que la restauración tuviera éxito) Se está realizando una actualización para remediar esta situación.
Aprovisionamiento a través de la interfaz de usuario
Aprovisiona una réplica de sólo lectura desde la pestaña Réplicas de lectura del líder haciendo clic en Crear réplica de sólo lectura. La instancia de origen se completa automáticamente. El nombre de la réplica de sólo lectura se genera automáticamente en el campo Nombre del servicio, pero puede cambiar su nombre libremente. Puede elegir la región en la que realizar el despliegue, así como la asignación de memoria inicial. El tamaño de disco, la versión y los puntos finales públicos o privados se configuran automáticamente para que coincidan con los valores del despliegue de líder.
Si utiliza Key Protect, solo hay soporte para Bring Your Own Key (BYOK) cuando el suministro se lleva a cabo desde la CLI y la API. En caso contrario, la réplica de solo lectura se cifra con una clave generada.
Aprovisionamiento a través de la CLI
El suministro de una réplica de solo lectura a través de la CLI o de la API funciona de manera similar al suministro de un despliegue de Databases for PostgreSQL estándar.
El controlador de recursos maneja el suministro y utiliza un parámetro {"remote_leader_id": "crn:v1:..."} para especificar el líder de la réplica que está suministrando.
Para aprovisionar una réplica de sólo lectura a través de la CLI, utilice un comando como:
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"
}'
Debes especificar tanto la cantidad de RAM como de disco, teniendo en cuenta que el tamaño mínimo es de 8 GB de RAM y 10 GB de disco. Opcionalmente, puede especificar si la réplica de solo lectura utiliza o no puntos finales públicos o privados. No puede especificar una versión para la réplica de solo lectura. La versión se establece automáticamente en la misma versión principal que el despliegue del líder.
Suministro a través de la API
El aprovisionamiento de una réplica de sólo lectura a través de la API funciona de forma similar al aprovisionamiento de un despliegue estándar Databases for PostgreSQL.
El controlador de recursos maneja el suministro y utiliza un parámetro {"remote_leader_id": "crn:v1:..."} para especificar el líder de la réplica que está suministrando.
Para aprovisionar una réplica de sólo lectura a través de la API, utilice un comando como:
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"
}
}'
Debes especificar tanto la cantidad de RAM como de disco, teniendo en cuenta que el tamaño mínimo es de 8 GB de RAM y 10 GB de disco. Opcionalmente, puede especificar si la réplica de solo lectura utiliza o no puntos finales públicos o privados. No puede especificar una versión para la réplica de solo lectura. La versión se establece automáticamente en la misma versión principal que el despliegue del líder.
La réplica de solo lectura
En la pestaña Réplicas de lectura de una réplica de sólo lectura, Replicación contiene su nombre y región, y el nombre y región de su líder. También tiene botones para resincronizar la réplica de solo lectura y para promocionarla.
Comprobación del estado de réplica
Debe supervisar la replicación, ya que el estado de replicación no se supervisa automáticamente.
Compruebe el estado de replicación de una réplica de sólo lectura con psql, pero sólo desde su líder. Conéctese al despliegue del líder con psql utilizando las credenciales de administrador. Una vez conectado ejecute el siguiente comando :
SELECT * from pg_stat_replication;
Al supervisar la salida del retardo de replicación, tenga en cuenta que application_name se refiere al ID de formación de las réplicas: la última sección poblada del nombre del recurso en la nube (CRN). Busque un sync_state valor de «async», un state valor de «Streaming» durante la replicación y estadísticas de tiempo.
Su despliegue siempre tiene una réplica para su nodo emparejado HA, el application_name será el mismo que su despliegue principal, y el valor sync_state será "sync". Debe esperar una fila adicional de salida
para cada réplica de sólo lectura, el application_name será diferente y el sync_state será "async". A continuación, puede evaluar si está en sintonía con la información adicional proporcionada por los
resultados de la consulta.
Para obtener más información, consulte pg_stat_replication.
Usuarios y privilegios de la réplica de solo lectura
-
Cualquier usuario en el líder, incluso los presentes antes de la disposición de réplica de solo lectura, puede iniciar sesión y ejecutar lecturas en una réplica de solo lectura con los mismos privilegios para los objetos que tienen en el líder.
-
Si tiene más de una réplica de solo lectura conectada al líder, un usuario que se cree en el líder se creará también en todas las demás réplicas de solo lectura.
-
Los usuarios que se crean en el líder persisten en la réplica de solo lectura cuando se promociona a un despliegue autónomo, incluyendo el usuario
admin. Cuando se promociona la réplica de solo lectura, los usuarios y privilegios para todos los usuarios del líder se transfieren al despliegue promocionado. -
Las operaciones de escritura en la réplica de solo lectura para todos los usuarios no se filtran ni se rechazan, pero fallan a nivel de base de datos.
También puede crear usuarios con acceso a la réplica de solo lectura y sin acceso al líder desde la réplica de solo lectura. Si tiene más de una réplica de solo lectura conectada al líder, un usuario que se cree en cualquiera de las réplicas de solo lectura se creará también en todas las demás réplicas de solo lectura.
Los usuarios de réplica de solo lectura que se crean en una réplica de solo lectura pueden conectarse a las réplicas y ejecutar lecturas. Los usuarios de réplica de solo lectura no pueden conectar y ejecutar operaciones en el líder. Tampoco persistirán cuando una réplica de solo lectura se promocione a un despliegue autónomo.
El líder asigna privilegios a los usuarios creados en la réplica de solo lectura, así como el rol ibm-cloud-base-user-ro, y son miembros del grupo ibm-cloud-base-user. Tienen acceso a todos los objetos creados por
otros miembros de este grupo, incluidos los usuarios del líder que se han creado a través de Credenciales de servicio, la CLI o la API. En consonancia con los privilegios de ibm-cloud-base-user, un usuario creado como
réplica de sólo lectura no tiene acceso a los objetos creados por el usuario admin, ni a otros usuarios creados a través de psql. Para obtener más información, consulte la página Roles y privilegios de PostgreSQL.
Resincronización de una réplica de solo lectura
Si necesita resincronizar una réplica de solo lectura, pulse el botón Resincronizar réplica de solo lectura. La resincronización es una operación disruptiva y la realización de una resincronización elimina y vuelve a crear los datos en la réplica de solo lectura. La réplica de solo lectura no puede realizar ninguna otra operación ni ejecutar consultas mientras haya una resincronización en curso. Las consultas no se redireccionan al líder, por lo que cualquier conexión con la réplica de solo lectura fallará hasta que finalice la resincronización.
La cantidad de tiempo que tarda en resincronizar una réplica de solo lectura varía, pero el proceso puede ser largo.
Resincronización de una réplica de sólo lectura a través de la CLI
Para iniciar la resincronización a través de la CLI, utilice el mandato cdb read-replica-resync.
ibmcloud cdb read-replica-resync <DEPLOYMENT_NAME_OR_CRN>
Resincronización de una réplica de sólo lectura a través de la API
Para iniciar una resincronización a través de la API, envíe una POST al punto final /deployments/{id}/remotes/resync.
curl -X POST \
https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/remotes/resync \
-H 'Authorization: Bearer <>'
Promoción de una réplica de solo lectura
Es posible promocionar una réplica de solo lectura a un clúster independiente que pueda aceptar operaciones de escritura además de operaciones de lectura. Si le ocurriera algo al despliegue del líder, la réplica de solo lectura se podría promocionar a un clúster autónomo y empezaría a aceptar escrituras de la aplicación. La promoción de un clúster de réplica de lectura a un clúster independiente será más rápida si el clúster de réplica de lectura ya tiene más de un miembro de datos.
Tras la promoción, la réplica de solo lectura termina su conexión con el líder y pasa a ser un despliegue de Databases for PostgreSQL autónomo. El despliegue puede empezar a aceptar y ejecutar operaciones de lectura y escritura, las copias de seguridad están habilitadas y se emite su propio usuario administrativo. Se añade un nuevo miembro de datos, de manera que el despliegue pasa a ser un clúster con dos miembros de datos. Esto aumenta el coste, ya que se factura con la misma tasa de consumo por miembro, pero el despliegue tiene dos miembros en lugar de uno.
Al promocionar una réplica de solo lectura, puede omitir la copia de seguridad inicial que se realizaría normalmente tras la promoción. La omisión de la copia de seguridad inicial implica que la réplica estará disponible con mayor rapidez, pero no habrá una copia de seguridad inmediata disponible. Puede iniciar una copia de seguridad a demanda una vez que el proceso de promoción haya finalizado.
Una vez que la réplica de solo lectura se haya promocionado a un despliegue independiente, no será posible revertirla a una réplica de solo lectura o hacer que vuelva a unirse a un líder.
Promover una réplica de sólo lectura en la interfaz de usuario
Para promover una réplica de sólo lectura desde la interfaz de usuario, haga clic en Promover réplica de sólo lectura.
Promoción de una réplica de sólo lectura en la CLI
Para realizar la promoción a través de la CLI, utilice el mandato cdb read-replica-promote.
ibmcloud cdb read-replica-promote <DEPLOYMENT_NAME_OR_CRN>
Promoción de una réplica de sólo lectura a través de la API
Para realizar la promoción a través de la API, envíe una POST al punto 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": {}}' \
Para promocionar y omitir la copia de seguridad inicial después de la promoción, también establezca skip_initial_backup en el cuerpo 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}}' \
Tiempo de finalización
La tarea de promoción se completa sólo cuando la base de datos tiene alta disponibilidad. Sin embargo, la disponibilidad de lectura/escritura se produce después de unos 10 minutos con una advertencia importante: la base de datos no tiene alta disponibilidad hasta que se completa la tarea.
El tiempo de promoción completo de una réplica de lectura se determina por el tamaño de los datos de dos maneras posibles:
- Las réplicas de lectura son miembros individuales. Cuando se promociona, la especificación de formación se cambia a dos miembros, lo que crea una segunda réplica. El tiempo de creación de esa réplica depende del tamaño de los datos. La creación de esa réplica se ejecuta a 25 MB/s para evitar saturar la red. A medida que crecen las bases de datos, la creación puede tardar una cantidad considerable de tiempo. La tarea no se completa hasta que se completa la creación de esa réplica.
- Si elige realizar una copia de seguridad como parte de la promoción, también debe haberse completado dicha copia de seguridad para que se complete la tarea. De nuevo, esto depende del tamaño de la base de datos.
No hay ningún miembro de Alta Disponibilidad hasta que finaliza la tarea de promoción. Asimismo, si ha seleccionado tener una copia de seguridad inicial, no existe ninguna copia de seguridad hasta que se complete el segundo punto o se cree una copia de seguridad manual.
Actualización al promocionar
Si necesita actualizar a una nueva versión principal de la base de datos, puede hacerlo al promocionar una réplica de solo lectura a un despliegue autónomo. Para obtener más información, consulte Actualización a una nueva versión principal.
Consideraciones de la réplica de solo lectura
-
La réplica de solo lectura puede existir en la misma región que la formación de origen o en otra distinta, permitiendo que los datos se repliquen entre regiones.
-
Una réplica de solo lectura debe tener la misma versión principal que el líder.
-
Las copias de seguridad están inhabilitadas en las réplicas de solo lectura. Solo se realizan copias de seguridad en los despliegues del líder.
-
Las réplicas son restaurables en otras regiones, excepto en las regiones habilitadas para EU Cloud (actualmente
eu-de,eu-es, ypar-01), que sólo son restaurables entre sí (por ejemplo, las réplicas depar-01pueden restaurarse eneu-de, y viceversa). -
Hay un límite de cinco réplicas de sólo lectura por líder.
-
La réplica de solo lectura no participa en las elecciones de líder->seguidor para el clúster líder, y la migración tras error a la réplica de solo lectura no está automatizada. La promoción de la réplica de solo lectura a un despliegue completo es una tarea manual iniciada por el usuario.
-
El tamaño mínimo de una réplica de sólo lectura es de 8 GB de RAM y 10 GB de disco. Esto es cierto incluso aunque el despliegue del líder sea más pequeño.
-
Las réplicas de solo lectura no realizan un escalado automático para ajustarse al líder. Si la cantidad de datos que almacena supera la cantidad de disco asignada a los despliegues, escale el disco en las réplicas de solo lectura y, a continuación, el líder. El escalado de la réplica de solo lectura en primer lugar garantiza que no se quede sin espacio en las réplicas de solo lectura. Si ha escalado el disco del líder por motivos de rendimiento y no de espacio, no es necesario escalar las réplicas de solo lectura.
-
La réplica es asíncrona y podría estar sujeta a un retardo de réplica. Por defecto, no hay comunicación consistente entre el primario y la réplica. Es posible que una réplica de solo lectura quede lo suficientemente atrás como para necesitar una resincronización. El retardo de réplica puede ser mayor cuando la réplica está en una región muy alejada geográficamente a la del líder.
-
Si monitoriza su despliegue con el servicio IBM Cloud Monitoring, puede observar la métrica PostgreSQL Read replication lag para ver tendencias. Si ve un valor de
-2para esta métrica, lo que podría indicar un problema, complete los pasos en Comprobación del estado de la replicación para determinar si la replicación funciona como se espera. Si tiene dudas después de comprobar el estado de la replicación, póngase en contacto con el servicio de asistencia de IBM Cloud para comprobar su implantación antes de volver a sincronizar. -
Una réplica de sólo lectura es un despliegue con un único miembro de datos y no tiene ninguna alta disponibilidad interna. Es propensa a tener interrupciones temporales y un tiempo de inactividad durante el mantenimiento. Si tiene aplicaciones que se basan en réplicas de solo lectura, asegúrese de tener la lógica para reintentar consultas fallidas, o equilibrio de carga en varias réplicas de solo lectura.
Estado de réplica de solo lectura en actualizaciones de versión principal in situ
Con la introducción de actualizaciones de versiones principales in situ en nuestro Databases for PostgreSQL servicio, las réplicas de solo lectura pueden ayudar a mantener la continuidad de las transacciones de lectura y resultar especialmente útiles durante los procesos de actualización. Sin embargo, tenga en cuenta que esta función aún no es aplicable a las réplicas de solo lectura en este momento. No obstante, si su servicio necesita leer datos de la instancia en la que se está realizando la actualización, puede considerar la posibilidad de crear una instancia en espera y actualizar los detalles de conexión de su aplicación para que apunten a la instancia en espera. Esto garantiza que disponga de una copia actualizada de su base de datos antes de iniciar la actualización. La instancia en espera también se puede promover y utilizar como instancia principal si la actualización in situ no se completa correctamente.
Durante una actualización importante de la versión in situ, la instancia de origen y sus réplicas de solo lectura pierden la funcionalidad de replicación, y la replicación no se restaura automáticamente después de la actualización (tenga en cuenta también que el cambio de versión las hace incompatibles). Sin embargo, las réplicas de solo lectura siguen siendo totalmente operativas como instancias independientes. Por lo tanto, puede promover de forma segura una réplica de solo lectura a una instancia principal en cualquier momento, independientemente del resultado de la actualización. En caso de que falle la actualización, promover una réplica de solo lectura le permite restaurar rápidamente su base de datos.