En esta página, se describe cómo administrar réplicas de lectura. Estas operaciones incluyen inhabilitar y habilitar la replicación, promover una réplica, configurar la replicación paralela y verificar el estado de la replicación.
Para obtener más información sobre cómo funciona la replicación, consulta Replicación en Cloud SQL.
Inhabilitar replicación
Según la configuración predeterminada, una réplica se inicia con su habilitación. Sin embargo, puedes inhabilitar la replicación, por ejemplo, para depurar o analizar el estado de una instancia. Cuando estés listo, habilita de nuevo la replicación de forma explícita. Inhabilitar o volver a habilitar la replicación no reinicia la instancia de réplica.
Cuando se inhabilita la replicación, no se detiene la instancia de réplica, sino que se convierte en una instancia de solo lectura que ya no se replica a partir de su instancia principal. Se te seguirá cobrando por la instancia. En la réplica inhabilitada, puedes volver a habilitar la replicación, borrar la réplica o ascenderla a una instancia independiente.
Para inhabilitar la replicación:
Console
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Haz clic en el nombre de una instancia de réplica para seleccionarla.
- Haz clic en Inhabilitar replicación en la barra de botones.
- Haz clic en Aceptar.
gcloud
gcloud sql instances patch REPLICA_NAME \ --no-enable-database-replication
REST v1
Para ejecutar este comando cURL en una ventana de línea de comandos, debes adquirir un token de acceso con el comando gcloud auth print-access-token. También puedes usar el Explorador de API en la página de parches de instancias para enviar la solicitud a la API de REST.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: El ID del proyecto
- replica-name: El nombre de la instancia de réplica
Método HTTP y URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name
Cuerpo JSON de la solicitud:
{ "settings": { "databaseReplicationEnabled": "False" } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
REST v1beta4
Para ejecutar este comando cURL en una ventana de línea de comandos, debes adquirir un token de acceso con el comando gcloud auth print-access-token. También puedes usar el Explorador de API en la página de parches de instancias para enviar la solicitud a la API de REST.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: El ID del proyecto
- replica-name: El nombre de la instancia de réplica
Método HTTP y URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name
Cuerpo JSON de la solicitud:
{ "settings": { "databaseReplicationEnabled": "False" } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Habilitar replicación
Si una réplica no se repitió durante mucho tiempo, tardará más en alcanzar a la instancia principal. En este caso, borra la réplica y crea una nueva.
Para habilitar la replicación:
Console
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Haz clic en el nombre de una instancia de réplica para seleccionarla.
- Haz clic en Habilitar replicación.
- Haz clic en Aceptar.
gcloud
gcloud sql instances patch REPLICA_NAME \ --enable-database-replication
REST v1
Para ejecutar este comando cURL en una ventana de línea de comandos, debes adquirir un token de acceso con el comando gcloud auth print-access-token. También puedes usar el Explorador de API en la página de parches de instancias para enviar la solicitud a la API de REST.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: El ID del proyecto
- replica-name: El nombre de la instancia de réplica
Método HTTP y URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name
Cuerpo JSON de la solicitud:
{ "settings": { "databaseReplicationEnabled": "True" } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
REST v1beta4
Para ejecutar este comando cURL en una ventana de línea de comandos, debes adquirir un token de acceso con el comando gcloud auth print-access-token. También puedes usar el Explorador de API en la página de parches de instancias para enviar la solicitud a la API de REST.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: El ID del proyecto
- replica-name: El nombre de la instancia de réplica
Método HTTP y URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name
Cuerpo JSON de la solicitud:
{ "settings": { "databaseReplicationEnabled": "True" } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Ascender una réplica
Si asciendes una réplica de lectura, se detendrá la replicación y la instancia pasará a ser una instancia principal de Cloud SQL independiente con funciones de lectura y escritura.
Cuando se ascienden, las réplicas de lectura se configuran de forma automática con copias de seguridad, pero no se configuran automáticamente como instancias con alta disponibilidad (HA). Puedes habilitar la alta disponibilidad después de ascender la réplica como lo harías con cualquier instancia que no sea de réplica. La configuración de una réplica de lectura para alta disponibilidad se realiza de la misma manera que para una instancia principal. Obtén más información sobre cómo configurar la instancia para alta disponibilidad.
Antes de ascender una réplica de lectura, si la instancia principal sigue disponible y entrega contenido a los clientes, debes hacer lo siguiente:
- Detén todas las operaciones de escritura en la instancia principal.
- Verifica el estado de replicación de la réplica (sigue las instrucciones que se indican en la pestaña Cliente mysql).
- Verifica que la réplica se replique y, luego, espera hasta que el retraso de replicación que informa la métrica
Seconds_Behind_Master
sea 0.
De lo contrario, es posible que a una instancia recién ascendida le falten algunas transacciones confirmadas en la instancia principal.
Para ascender una réplica a una instancia independiente, sigue estos pasos:
Console
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Haz clic en el nombre de una instancia de réplica para seleccionarla.
- Haz clic en Promover réplica.
- Haz clic en Aceptar.
gcloud
gcloud sql instances promote-replica REPLICA_NAME
REST v1
Para ejecutar este comando cURL en una ventana de línea de comandos, debes adquirir un token de acceso con el comando gcloud auth print-access-token. También puedes usar el Explorador de API en la página de ascenso de réplicas de instancias para enviar la solicitud a la API de REST.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: El ID del proyecto
- replica-name: El nombre de la instancia de réplica
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name/promoteReplica
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
REST v1beta4
Para ejecutar este comando cURL en una ventana de línea de comandos, debes adquirir un token de acceso con el comando gcloud auth print-access-token. También puedes usar el Explorador de API en la página de ascenso de réplicas de instancias para enviar la solicitud a la API de REST.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: El ID del proyecto
- replica-name: El nombre de la instancia de réplica
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name/promoteReplica
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Confirma que la instancia ascendida esté configurada de forma correcta. En particular, considera configurar la instancia para alta disponibilidad si es necesario.
Configurar una replicación paralela
Reducir el retraso de replicación es importante para administrar el rendimiento de la replicación. El retraso de replicación ocurre cuando las actualizaciones de una réplica de lectura se encuentran detrás de las actualizaciones de la instancia principal. En esta sección, se describe cómo los usuarios pueden habilitar la replicación paralela, que puede reducir el retraso de replicación.
En la replicación de MySQL, se usa un subproceso de replicación de SQL para ejecutar las transacciones que se recopilan en el registro de retransmisión en la réplica de lectura. La replicación paralela reduce el retraso de replicación mediante el aumento del número de subprocesos de SQL que funcionan para ejecutar estas transacciones. A veces, las réplicas de lectura con replicación paralela habilitada se denominan réplicas multiproceso.
La replicación paralela está disponible en estas tres situaciones en Cloud SQL para MySQL:
- Réplicas de lectura
- Replicación desde un servidor externo
- Configuración de alta disponibilidad heredada
Para simplificar, en esta página se usan los términos "instancia principal" y "réplica de lectura".
Pasos básicos para cambiar las marcas de replicación paralela
Los pasos para habilitar la replicación paralela son los siguientes:
- En una réplica de lectura, inhabilita la replicación.
- En la réplica de lectura, establece las marcas para la replicación paralela. Usa el comando
gcloud
para establecer las marcas. La opción de la consola de Google Cloud se inhabilita cuando se inhabilita la replicación. - En la réplica de lectura, habilita la replicación.
- De manera opcional, en las instancias principales, configura las marcas para optimizar el rendimiento de la replicación paralela.
Réplicas de lectura: Marcas para la replicación paralela
Cloud SQL para MySQL admite varias marcas para la replicación paralela en réplicas de lectura. Para obtener información sobre las marcas, haz clic en estos vínculos a la documentación de MySQL 8.0:
Cambiar estas marcas no reinicia la réplica de lectura.
En la siguiente tabla, se muestran los rangos permitidos y los valores predeterminados para estas marcas:
Marca de réplica de lectura | Valores permitidos | MySQL 5.7 (valor predeterminado) | MySQL 8.0 (valor predeterminado) |
---|---|---|---|
slave_parallel_workers |
0-1024 | 0 | 0 (MySQL 8.0.26 y versiones anteriores) 4 (MySQL 8.0.27 y versiones posteriores) |
slave_parallel_type |
DATABASE, LOGICAL_CLOCK |
DATABASE |
DATABASE (MySQL 8.0.26 y versiones anteriores)LOGICAL_CLOCK (MySQL 8.0.27 y versiones posteriores) |
slave_preserve_commit_order |
ON, OFF |
OFF |
OFF (MySQL 8.0.26 y versiones anteriores)ON (MySQL 8.0.27 y versiones posteriores) |
slave_pending_jobs_size_max |
1024-1 GB | 16 MB | 128 MB |
La marca slave_preserve_commit_order
evita brechas en la secuencia de transacciones ejecutadas del registro de retransmisión de la réplica.
La configuración de slave_preserve_commit_order=1
requiere lo siguiente:
- Habilita registros binarios en la réplica (solo para MySQL 5.7, MySQL 8.0.18 y versiones anteriores)
- Configura
slave_parallel_type
enLOGICAL_CLOCK
La marca slave_pending_jobs_size_max
establece la memoria máxima (en bytes) disponible para las colas del aplicador que contienen eventos que aún no se aplicaron.
Instancia principal: Marcas para la replicación paralela
Cloud SQL para MySQL admite varias marcas que se pueden usar en una instancia principal. Puedes usar estas marcas para ajustar el rendimiento de la replicación de las réplicas de lectura asociadas con la replicación paralela habilitada. Para obtener información sobre las marcas, haz clic en estos vínculos a la documentación de MySQL 8.0:
- binlog_transaction_dependency_history_size
- binlog_transaction_dependency_tracking
- transaction_write_set_extraction
Cambiar estas marcas no reinicia la instancia principal.
En la siguiente tabla, se muestran los rangos permitidos y los valores predeterminados para estas marcas:
Marca de la instancia principal | Valores permitidos | MySQL 5.7 (valor predeterminado) | MySQL 8.0 (valor predeterminado) |
---|---|---|---|
binlog_transaction_dependency_history_size |
1-1000000 | 25000 | 25000 |
binlog_transaction_dependency_tracking |
COMMIT_ORDER, WRITESET, WRITESET_SESSION |
COMMIT_ORDER |
WRITESET |
transaction_write_set_extraction |
OFF, MURMUR32, XXHASH64 |
OFF |
XXHASH64 |
En MySQL 5.7, si binlog_transaction_dependency_tracking
se configura como WRITESET
o WRITESET_SESSION
, entonces transaction_write_set_extraction
se debe establecer en un valor que no sea OFF
(XXHASH64
o MURMUR32
).
Comprobar el estado de la replicación
Cuando visualizas una instancia de réplica con la consola de Google Cloud o accedes a la instancia con un cliente de administración, obtienes los detalles de la replicación, incluidos el estado y las métricas. Cuando usas gcloud, obtienes un breve resumen de la configuración de la replicación.
Antes de verificar el estado de replicación de una instancia de réplica de Cloud SQL, usa el comando gcloud sql instances describe
para mostrar el estado de la instancia. Como resultado, puedes ver si la replicación está habilitada para la instancia de réplica.
Las siguientes métricas están disponibles para instancias de réplica. (Obtén más información sobre las métricas adicionales disponibles para todas las instancias, incluidas las que no son de réplica).
Métrica | Descripción |
---|---|
Estado de replicació ( cloudsql.googleapis.com ) |
Indica si la replicación transmite de forma activa los registros desde la instancia principal hacia la réplica. Los valores posibles son los siguientes:
Esta métrica informa a |
Retraso de replicación ( cloudsql.googleapis.com ) |
La cantidad de tiempo que el estado de la réplica se encuentra detrás del estado de la instancia principal. Esta es la diferencia entre (1) la hora actual y (2) la marca de tiempo original en la que la confirmación principal confirmó la transacción que se está aplicando en la réplica. En particular, las operaciones de escritura se pueden contar como atrasadas incluso si la réplica las recibió, si la réplica aún no aplica la operación de escritura en la base de datos. Para las réplicas en cascada, cada par de réplica principal se supervisa por separado y no hay una sola métrica que genere el retraso de extremo a extremo (principal para réplica). Esta métrica informa el valor de |
Retraso de red ( cloudsql.googleapis.com ) |
La cantidad de tiempo, en segundos, que lleva escribir el binlog en la base de datos principal para alcanzar el subproceso de E/S en la réplica. Si el valor de network_lag es cero o insignificante, pero el valor de “replica_lag” es alto, indica que el subproceso de SQL no puede aplicar los cambios de replicación lo suficientemente rápido. |
Estado de ejecución del subproceso secundario de E/S ( cloudsql.googleapis.com ) |
Indica si el subproceso de E/S para leer el registro binario de la instancia principal se está ejecutando en la réplica. Los valores posibles son los siguientes:
Esta métrica informa el valor de |
Estado de ejecución del subproceso secundario de SQL ( cloudsql.googleapis.com ) |
Indica si el subproceso de SQL para ejecutar eventos en el registro de retransmisión se está ejecutando en la réplica. Los valores posibles son los siguientes:
Esta métrica informa el valor de |
Para verificar el estado de la replicación:
Console
Cloud SQL informa las métricas Replication State
y Replication Lag
en el panel de supervisión predeterminado de Cloud SQL.
Si deseas ver otras métricas de réplicas en región y entre regiones, y las réplicas de los servidores externos, crea un panel personalizado y agrega las métricas que deseas supervisar en él:
-
En la consola de Google Cloud, ve a la página Supervisión.
- Selecciona la pestaña Paneles.
- Haz clic en Crear panel de control.
- Asigna un nombre al panel y haz clic en Aceptar.
- Haz clic en Agregar gráfico.
- En Tipo de recurso, selecciona Cloud SQL Database.
- Sigue uno de estos pasos:
- Para supervisar la métrica del estado de replicación: En el campo Seleccionar una métrica, escribe
Replication state
. Luego, agrega un filtro parastate = "Running"
. En el gráfico, se muestra 1 si la replicación está en ejecución y 0 en caso contrario. - Para supervisar la métrica del retraso de replicación: En el campo Seleccionar una métrica, escribe
replica_lag
. En el gráfico, se muestra la cantidad de tiempo que el estado de la réplica se retrasa con respecto al de su principal. - Para supervisar el estado del subproceso de E/S de la réplica: En el campo Seleccionar una métrica, escribe
Slave I/O thread running state
. Luego, agrega un filtro enstate = "Yes"
. En el gráfico, se muestra 1 si el subproceso está en ejecución y 0 en caso contrario. - Para supervisar el estado del subproceso de SQL de la réplica, en el campo Seleccionar una métrica, escribe
Slave SQL thread running state
. Luego, agrega un filtro enstate = "Yes"
. En el gráfico, se muestra 1 si el subproceso está en ejecución y 0 en caso contrario.
gcloud
Para una instancia de réplica, verifica el estado de la replicación de la siguiente forma:
gcloud sql instances describe REPLICA_NAME
En el resultado, busca las propiedades databaseReplicationEnabled
y masterInstanceName
.
En el caso de una instancia principal, puedes verificar si hay réplicas de la siguiente forma:
gcloud sql instances describe PRIMARY_INSTANCE_NAME
Busca la propiedad replicaNames
en el resultado.
Cliente mysql
- Conéctate a la réplica con un cliente MySQL.
Si quieres obtener más información, consulta Opciones de conexión para aplicaciones externas.
- Verifica el estado de la réplica:
SHOW SLAVE STATUS \G
Busca las siguientes métricas en el resultado del comando:
Master_Host
: Es el nombre de la instancia principal.Slave_IO_Running
,Slave_SQL_Running
: Determina si los subprocesos de E/S y SQL, respectivamente, están en ejecución. Estos subprocesos son responsables de transferir eventos de la instancia principal al registro de retransmisión de la réplica y ejecutar esos eventos desde este registro. El valor de la métrica esYes
si el subproceso está en ejecución. Ambos subprocesos deben estar ejecutándose para que la replicación esté activa.Seconds_Behind_Master
: La cantidad de tiempo, en segundos, durante el cual la réplica retrasa el procesamiento de las transacciones de la instancia principal, es decir, la diferencia entre (1) la hora actual y (2) la marca de tiempo original en que la instancia principal confirmó la transacción que se está aplicando en la réplica. El valor esNULL
si se rompe la replicación.-
Master_Log_file
,Read_Master_Log_Pos
,Relay_Master_Log_File
yExec_Master_Log_Pos
: Estas métricas muestran las coordenadas (nombre de archivo y desplazamiento) en los que el subproceso de E/S tiene eventos de lectura hasta (Master_Log_file
yRead_Master_Log_Pos
) y que el subproceso de SQL haya ejecutado eventos hasta (Relay_Master_Log_File
yExec_Master_Log_Pos
). Si son iguales (es decir,Master_Log_file
es igual aRelay_Master_Log_File
yRead_Master_Log_Pos
es igual aExec_Master_Log_Pos
), la réplica procesó todos los eventos que recibió de la instancia principal.
Para obtener más detalles sobre el resultado de este comando, consulta la documentación de MySQL sobre cómo verificar el estado de replicación.
Solucionar problemas
Problema | Soluciona problemas |
---|---|
La réplica de lectura no comenzó a replicarse cuando se creó. | Es probable que haya un error más específico en los archivos de registro. Inspecciona los registros en Cloud Logging para encontrar el error real. |
No se puede crear una réplica de lectura: error invalidFlagValue. | Una de las marcas de la solicitud no es válida. Puede ser una marca que proporcionaste explícitamente o una que se configuró como un valor predeterminado.
Primero, comprueba que el valor de la marca Si la marca |
No se puede crear una réplica de lectura: error desconocido. | Es probable que haya un error más específico en los archivos de registro.
Inspecciona los registros en Cloud Logging para encontrar el error real.
Si el error es |
El disco está lleno. | El tamaño del disco de la instancia principal puede llenarse durante la creación de una réplica. Edita la instancia principal para actualizarla a un tamaño de disco más grande. |
La instancia de réplica usa demasiada memoria. | La réplica usa memoria temporal para almacenar en caché las operaciones de lectura solicitadas con frecuencia, lo que puede ocasionar que use más memoria que la instancia principal.
Reinicia la instancia de réplica para recuperar el espacio de memoria temporal. |
Se detuvo la replicación. | Se alcanzó el límite de almacenamiento máximo y el aumento de almacenamiento automático no está habilitado.
Edita la instancia para habilitar |
El retraso de replicación se mantiene alto. | La carga de escritura es demasiado alta para que la réplica la maneje. El retraso de la replicación se produce cuando el subproceso de SQL en una réplica no puede mantener el ritmo del subproceso de E/S. Algunos tipos de consultas o cargas de trabajo pueden causar un gran retraso de la replicación de forma temporal o permanente en un esquema determinado. Algunas de las causas típicas del retraso de la replicación son las siguientes:
Estas son algunas de las soluciones posibles:
|
El retraso de la replicación aumenta de manera repentina. | Esto se debe a las transacciones de larga duración. Cuando se confirma una transacción (una sola declaración o varias declaraciones) en la instancia de origen, la hora de inicio de la transacción se registra en el registro binario. Cuando la réplica recibe este evento binlog, compara esa marca de tiempo con la marca de tiempo actual para calcular el retraso de replicación. Por lo tanto, una transacción de larga duración en la fuente generaría un gran retraso de replicación inmediato en la réplica. Si la cantidad de cambios de fila en la transacción es grande, la réplica también tardaría mucho tiempo en ejecutarla. Durante ese tiempo, el retraso de la replicación aumenta. Una vez que la réplica finalice esta transacción, el período de actualización dependerá de la carga de trabajo de escritura en el origen y la velocidad de procesamiento de la réplica.
Para evitar una transacción larga, algunas soluciones posibles incluyen las siguientes:
|
Si cambias las marcas de replicación paralelas, se generará un error. | Se configuró un valor incorrecto para una o más de estas marcas.
En la instancia principal que muestra el mensaje de error, configura las marcas de replicación paralelas:
|
La creación de la réplica falla con el tiempo de espera. | Las transacciones no confirmadas de larga duración en la instancia principal pueden generar una falla en la creación de la réplica de lectura.
Vuelve a crear la réplica después de detener todas las consultas en ejecución. |
¿Qué sigue?
- Aprende a crear una réplica de lectura.
- Obtén información sobre los procedimientos almacenados de Cloud SQL para los índices de réplica de lectura.
- Obtén información sobre cómo configurar una réplica externa.
- Obtén información sobre cómo configurar una instancia principal externa.
- Obtén más información sobre los requisitos y recomendaciones para la replicación.