IBM Cloud Docs
Configuración de réplicas de lectura

Configuración de réplicas de lectura

Puede configurar su implantación de IBM Cloud® Databases for MySQL para que sea una réplica de lectura de otra implantación de Databases for MySQL.

Una réplica de lectura se configura para replicar todos sus datos desde la instancia de origen al despliegue de réplica mediante replicación asíncrona. Como su nombre indica, las réplicas de lectura admiten transacciones de lectura y pueden utilizarse para equilibrar bases de datos con operaciones tanto de escritura como de lectura intensivas. También puede utilizar la promoción de duplicación de lectura para la recuperación de datos si la instancia de base de datos de origen falla. La réplica de lectura tiene un único miembro de datos MySQL, y se factura con las mismas tarifas de consumo por miembro que la instancia de base de datos de origen.

Leer las réplicas

  • Una réplica de lectura puede existir en la misma región que su instancia de base de datos de origen o en una diferente, lo que permite replicar sus datos entre regiones.

  • Una réplica de lectura debe tener la misma versión principal que su instancia de base de datos de origen.

  • Las copias de seguridad están inhabilitadas en réplicas de lectura. Las copias de seguridad sólo se realizan en las instancias de la base de datos de origen.

  • No se admite la réplica de lectura hacia adentro o hacia afuera de las regiones habilitadas para la nube de la UE (actualmente, eu-de). Se admite dentro de dichas regiones.

  • Existe un límite de cinco réplicas de lectura por instancia de origen.

  • La réplica de lectura no participa en las elecciones para la instancia de base de datos de origen y la conmutación por error a la réplica de lectura no está automatizada. La promoción de la réplica de lectura a un despliegue completo es una tarea manual iniciada por el usuario.

  • El tamaño mínimo de una réplica de lectura es de 2 GB de RAM y 20 GB de disco. Esto es cierto incluso si el despliegue de su instancia de base de datos de origen es menor.

  • Las réplicas de lectura no se autoescalan para adaptarse a la instancia de base de datos de origen. Si la cantidad de datos que almacena supera el disco asignado a sus implantaciones, escale el disco en las réplicas de lectura y, a continuación, en la instancia de base de datos de origen. Escalar primero la réplica de lectura garantiza que no se quede sin espacio en las réplicas de lectura. Si escaló el disco de la instancia de base de datos de origen por rendimiento y no por espacio, no es necesario escalar las réplicas de lectura.

  • La réplica es asíncrona y podría estar sujeta a un retardo de réplica. De forma predeterminada, no hay comunicación entre el primario y la réplica en cuanto a la coherencia. Es posible que una réplica de lectura se retrase lo suficiente como para tener que resincronizarse. El retraso en la replicación puede ser mayor cuando la réplica se encuentra en una región alejada geográficamente de su instancia de base de datos de origen.

  • Una réplica de 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 dependen de réplicas de lectura, asegúrese de tener lógica para reintentar consultas fallidas, o balanceo de carga sobre múltiples réplicas de lectura.

  • Databases for MySQL réplicas de lectura en Madrid (eu-es): El despliegue de réplicas de lectura en Madrid en la región eu-es está actualmente suspendido. Las actualizaciones sobre la disponibilidad se proporcionarán tan pronto como sea posible.

El líder

En la pestaña Réplicas de lectura de una implantación de Databases for MySQL, antes de que se aprovisione ninguna réplica de lectura, el panel central indica que no existen réplicas de lectura y proporciona un botón Crear.

Panel de réplica antes de una réplica*Panel de
antes de una

Si un despliegue es líder y tiene una réplica de lectura ya adjunta, el panel Replicación tiene una lista de despliegues de réplica y un enlace a cada uno.

de réplicas asociadas a un
de réplicas asociadas a un líder*

Aprovisionamiento de una réplica de lectura

Puede aprovisionar una réplica de lectura desde la pestaña Réplicas de lectura del líder haciendo clic en Crear réplica de lectura. La instancia de origen se rellena automáticamente. El nombre de la réplica de lectura se genera automáticamente en el campo Nombre del servicio, pero puede cambiarle el nombre libremente. Puede elegir la región en la que realizar el despliegue, así como la asignación de memoria inicial. El tamaño del disco, la versión y los puntos finales públicos o privados se configuran automáticamente para que coincidan con los ajustes del despliegue de la instancia de base de datos de origen.

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 lectura se encripta con una clave generada.

Suministro a través de la API o la CLI

El aprovisionamiento de una réplica de lectura a través de la CLI y la API funciona de forma similar al aprovisionamiento de una implantación estándar de Databases for MySQL. 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.

Por ejemplo, para aprovisionar una réplica de lectura a través de la CLI,

ibmcloud resource service-instance-create <replica_name> databases-for-mysql standard <region> \
-p \ '{
  "remote_leader_id": "crn:v1:bluemix:public:databases-for-mysql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71819::",
  "members_memory_allocation_mb": "2048",
  "members_disk_allocation_mb": "10240"
}'

El mismo parámetro se utiliza para aprovisionar una réplica de lectura a través de la API del controlador de recursos.

curl -X POST \
  https://resource-controller.cloud.ibm.com/v2/resource_instances \
  -H 'Authorization: Bearer <>' \
  -H 'Content-Type: application/json' \
    -d '{
    "name": "<replica_name>",
    "target": "<region>",
    "resource_group": "<your_resource_group_id>",
    "resource_plan_id": "databases-for-mysql-standard",
    "remote_leader_id": "crn:v1:bluemix:public:databases-for-mysql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71819::",
    "members_memory_allocation_mb": "2048",
    "members_disk_allocation_mb": "10240"
  }'

Para los mandatos de CLI y de API, debe especificar tanto la cantidad de RAM como de disco, teniendo en cuenta que el tamaño mínimo es de 2 GB de RAM y 20 GB de disco. Puede especificar opcionalmente si la réplica de lectura utiliza puntos finales públicos o privados. No puede especificar una versión para la réplica de lectura. La versión se establece automáticamente en la misma versión principal que el despliegue de la instancia de base de datos de origen.

La réplica de lectura

En la pestaña Réplicas de lectura de una réplica de lectura, el panel Replicación contiene su nombre y región, y el nombre y región de su instancia de base de datos de origen. También tiene botones para resincronizar la réplica de lectura y para promoverla.

Panel de réplica de una réplica de lectura*Panel de
de una
de lectura*

Comprobación del estado de réplica

El estado de réplica no se supervisa automáticamente, debe supervisar la réplica.

Puede comprobar el estado de replicación, así como el retardo de replicación, de una réplica de lectura con mysql desde su instancia de base de datos de origen. Conéctese al despliegue de la instancia de base de datos de origen con mysql utilizando las credenciales de administrador. Una vez conectado, ejecute el mandato siguiente:

mysql> SHOW SLAVE STATUS \G

Un campo de clave del informe de estado del mandato será Seconds_Behind_Master: _. Este es el número de segundos de retraso de la hebra de SQL de réplica respecto al proceso del registro binario del origen.

Para obtener más información, consulte Checking Replication Status de MySQL.

Leer usuarios y privilegios de réplica

  • Cualquier usuario de la instancia de base de datos de origen, incluso los presentes antes de la provisión de la réplica de lectura, puede iniciar sesión y ejecutar lecturas en una réplica de lectura con los mismos privilegios para los objetos que tienen en la instancia de base de datos de origen.

  • Si tiene más de una réplica de lectura adjunta a una instancia de base de datos de origen, el usuario que se crea en el origen también se crea en todas las demás réplicas de lectura.

  • Los usuarios creados en la instancia de base de datos de origen persisten en la réplica de lectura cuando se promueve a un despliegue independiente, incluido el usuario admin. Cuando se promociona la réplica de lectura, los usuarios y privilegios de todos los usuarios de la instancia de base de datos de origen se transfieren al despliegue promocionado.

  • Las operaciones de escritura en la réplica de lectura para todos los usuarios no se filtran ni se rechazan, pero fallan a nivel de la base de datos.

  • Los usuarios de réplica de lectura creados en una réplica de lectura pueden conectarse a la instancia de base de datos de origen con permiso SELECT.

Resincronización de una réplica de lectura

Si necesita resincronizar una réplica de lectura, haga clic en el botón Resincronizar réplica de lectura. La resincronización es una operación disruptiva y la realización de una resincronización destruye y reconstruye los datos en la réplica de lectura. La réplica de lectura no puede realizar ninguna otra operación ni ejecutar ninguna consulta mientras se esté ejecutando una resincronización. Las consultas no se redirigen a la instancia de base de datos de origen, por lo que las conexiones a la réplica de lectura fallan hasta que finaliza la resincronización.

El tiempo que se tarda en resincronizar una réplica de lectura varía, pero el proceso puede ser muy largo.

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>

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 <>'

Promover una réplica de lectura

Una réplica de lectura puede promocionarse a un clúster independiente que puede aceptar operaciones de escritura además de operaciones de lectura. Si algo le ocurre a la instancia de base de datos de origen, la réplica de lectura puede promocionarse a un clúster independiente y empezar a aceptar escrituras de su aplicación.

Para promover una réplica de lectura desde la interfaz de usuario, haga clic en el botón Promocionar réplica de lectura.

Tras la promoción, la réplica de lectura finaliza su conexión con la instancia de base de datos de origen y se convierte en un despliegue independiente de Databases for MySQL. 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 para que el despliegue se convierta en un clúster con tres miembros de datos. Esto aumenta el coste, ya que se factura con el mismo índice de consumo por miembro, pero el despliegue tiene tres miembros en lugar de uno.

Cuando promocionas una réplica de lectura, puedes omitir la copia de seguridad inicial que normalmente se realizaría al promocionarla. 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 una réplica de lectura es promovida a un despliegue independiente, no es posible revertirla a una réplica de lectura, o hacer que vuelva a unirse a una instancia de base de datos de origen.

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>

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 receta de promoción solo se completa cuando la base de datos está altamente disponible. Sin embargo, la disponibilidad de lectura/escritura se produce después de unos 10 minutos con una advertencia importante: la base de datos no está muy disponible hasta que se completa la receta.

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 promueve, se añaden dos miembros adicionales como réplicas. El tiempo que esto requiere depende del tamaño de los datos. A medida que crecen las bases de datos, la creación puede tardar una cantidad considerable de tiempo. La operación de promoción no se completa hasta que se ha completado la creación de ambas réplicas.
  • Si elige realizar una copia de seguridad como parte de la promoción, la finalización de dicha copia de seguridad también debe finalizar antes de que se complete la receta. De nuevo, esto depende del tamaño de la base de datos.

Recuerde que no existe ningún miembro de Alta Disponibilidad hasta que se completa la receta 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.