En esta página se describe cómo gestionar las réplicas de lectura. Entre estas operaciones se incluyen la habilitación e inhabilitación de la réplica, la promoción de una réplica, la configuración de la réplica paralela y la comprobación del estado de la réplica.
Para obtener más información sobre cómo funciona la replicación, consulta Replicación en Cloud SQL.
Inhabilitar replicación
De forma predeterminada, las réplicas se inician con la replicación habilitada. Sin embargo, puedes inhabilitar la replicación en determinadas situaciones; por ejemplo, para depurar o analizar el estado de una instancia. Cuando lo tengas todo listo, vuelve a habilitar la replicación de forma explícita. Si inhabilitas o vuelves a habilitar la replicación, no se reiniciará la instancia de réplica.
Si inhabilitas la replicación, la instancia de réplica no se detendrá, sino que se convertirá en una instancia de solo lectura que ya no replicará datos de su instancia principal. Se te seguirá cobrando por la instancia. En la réplica inhabilitada, puedes volver a habilitar la replicación, eliminar la réplica o convertirla en una instancia independiente.
Si inhabilitas la replicación durante un periodo prolongado, es posible que aumenten los requisitos de almacenamiento en disco. Por ejemplo, tu instancia puede acumular registros de transacciones para permitirte reanudar la replicación cuando la vuelvas a habilitar. Para evitar que aumenten los requisitos de almacenamiento en disco, en lugar de inhabilitar la réplica durante un periodo prolongado, te recomendamos que promociones la réplica o crees un clon de la instancia principal.
Para inhabilitar la replicación, efectúa los pasos siguientes:
Consola
-
En la Google Cloud consola, 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 un símbolo del sistema, debes obtener un token de acceso con el comando gcloud auth print-access-token. También puede usar el Explorador de APIs en la página Instances:patch para enviar la solicitud de la API REST.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- replica-name: 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, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
REST v1beta4
Para ejecutar este comando cURL en un símbolo del sistema, debes obtener un token de acceso con el comando gcloud auth print-access-token. También puede usar el Explorador de APIs en la página Instances:patch para enviar la solicitud de la API REST.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- replica-name: 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, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
Habilitar replicación
Si una réplica no se ha replicado durante mucho tiempo, tardará más en ponerse al día con la instancia principal. En ese caso, elimina la réplica y crea otra.
Para habilitar la replicación, efectúa los pasos siguientes:
Consola
-
En la Google Cloud consola, 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 un símbolo del sistema, debes obtener un token de acceso con el comando gcloud auth print-access-token. También puede usar el Explorador de APIs en la página Instances:patch para enviar la solicitud de la API REST.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- replica-name: 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, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
REST v1beta4
Para ejecutar este comando cURL en un símbolo del sistema, debes obtener un token de acceso con el comando gcloud auth print-access-token. También puede usar el Explorador de APIs en la página Instances:patch para enviar la solicitud de la API REST.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- replica-name: 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, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
Promocionar una réplica
Si promueves una réplica de lectura, se detendrá la replicación y la instancia se convertirá en una instancia principal de Cloud SQL independiente con permisos de lectura y escritura.
Cuando se ascienden, las réplicas de lectura se configuran automáticamente con copias de seguridad, pero no se configuran automáticamente como instancias de alta disponibilidad. Puedes habilitar la alta disponibilidad después de promocionar la réplica, igual que harías con cualquier instancia que no sea una réplica. La configuración de una réplica de lectura para alta disponibilidad se realiza de la misma forma que en una instancia principal. Consulta más información sobre cómo configurar la instancia para alta disponibilidad.
Antes de promover una réplica de lectura, si la principal sigue estando disponible y atendiendo a los clientes, debes hacer lo siguiente:
- Detener todas las escrituras en la instancia principal.
- Comprueba el estado de la réplica (sigue las instrucciones de la pestaña Cliente de MySQL).
- Verifica que la réplica se esté replicando y, a continuación, espera hasta que la latencia de replicación que indica la métrica
Seconds_Behind_Master
sea 0.
De lo contrario, es posible que a la instancia recién ascendida le falten algunas transacciones que se hayan confirmado en la instancia principal.
Para promover una réplica a una instancia independiente, sigue estos pasos:
Consola
-
En la Google Cloud consola, 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 Promocionar réplica.
- Haz clic en Aceptar.
gcloud
gcloud sql instances promote-replica REPLICA_NAME
REST v1
Para ejecutar este comando cURL en un símbolo del sistema, debes obtener un token de acceso con el comando gcloud auth print-access-token. También puede usar el Explorador de APIs en la página Instances:promoteReplica para enviar la solicitud de la API REST.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- replica-name: 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, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
REST v1beta4
Para ejecutar este comando cURL en un símbolo del sistema, debes obtener un token de acceso con el comando gcloud auth print-access-token. También puede usar el Explorador de APIs en la página Instances:promoteReplica para enviar la solicitud de la API REST.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- replica-name: 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, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
Confirma que la instancia promocionada esté configurada correctamente. En concreto, plantéate configurar la instancia para alta disponibilidad si es necesario.
Configurar la replicación paralela
Reducir la latencia de replicación es importante para gestionar el rendimiento de la replicación. El retraso de la replicación se produce cuando las actualizaciones de una réplica de lectura se retrasan con respecto a las actualizaciones de la instancia principal. En esta sección se describe cómo pueden habilitar los usuarios la replicación paralela, que puede reducir el retraso de la replicación.
En la replicación de MySQL, se usa un subproceso SQL de replicación para ejecutar las transacciones que se recogen en el registro de retransmisión de la réplica de lectura. La replicación paralela reduce el retraso de la replicación aumentando el número de subprocesos SQL que se encargan de ejecutar estas transacciones. Las réplicas de lectura con la replicación paralela habilitada se denominan a veces réplicas multihilo.
La replicación paralela está disponible en estos tres casos de Cloud SQL para MySQL:
- Réplicas de lectura
- Replicación desde un servidor externo
- Configuración antigua de alta disponibilidad
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
Para habilitar la replicación en paralelo, sigue estos pasos:
- En una réplica de lectura, inhabilita la replicación.
- En la réplica de lectura, define las marcas para la replicación en paralelo. Usa el comando
gcloud
para definir las marcas. La opción de consola Google Cloud se inhabilita cuando la replicación está inhabilitada. - En la réplica de lectura, habilita la replicación.
- De forma opcional, en la instancia principal, defina las marcas para optimizar el rendimiento de la replicación paralela.
Réplicas de lectura: marcas para la replicación en paralelo
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 enlaces a la documentación de MySQL 8.0:
- replica_parallel_workers
- replica_parallel_type
- replica_preserve_commit_order
- replica_pending_jobs_size_max
Cambiar estas marcas no reinicia la réplica de lectura.
En la siguiente tabla se muestran los intervalos permitidos y los valores predeterminados de estas marcas:
Marca de réplica de lectura | Valores permitidos | Valor predeterminado de MySQL 5.7 | Valor predeterminado de MySQL 8.0 y versiones posteriores |
---|---|---|---|
replica_parallel_workers |
0-1024 | 0 | 0 (MySQL 8.0.26 y versiones anteriores) 4 (MySQL 8.0.27 y versiones posteriores) |
replica_parallel_type |
DATABASE, LOGICAL_CLOCK |
DATABASE |
DATABASE (MySQL 8.0.26 y versiones anteriores)LOGICAL_CLOCK (MySQL 8.0.27 y versiones posteriores) |
replica_preserve_commit_order |
ON, OFF |
OFF |
OFF (MySQL 8.0.26 y versiones anteriores)ON (MySQL 8.0.27 y versiones posteriores) |
replica_pending_jobs_size_max |
1024-1GB | 16 MB | 128 MB |
La marca replica_preserve_commit_order
evita que haya lagunas en la secuencia de transacciones ejecutadas desde el registro de relay de la réplica.
El ajuste
replica_preserve_commit_order=1
requiere lo siguiente:
- Habilitar los registros binarios en la réplica (solo para MySQL 5.7, MySQL 8.0.18 y versiones anteriores)
- Definir
replica_parallel_type
enLOGICAL_CLOCK
La marca replica_pending_jobs_size_max
define la memoria máxima, en bytes, disponible para las colas de aplicador que contienen eventos que aún no se han aplicado.
Instancia principal: marcas de replicación en paralelo
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 que tengan habilitada la replicación paralela. Para obtener información sobre las marcas, haz clic en estos enlaces a la documentación de MySQL 8.0:
- binlog_transaction_dependency_history_size
- binlog_transaction_dependency_tracking
- transaction_write_set_extraction
Si cambias estas marcas, no se reiniciará la instancia principal.
En la siguiente tabla se muestran los intervalos permitidos y los valores predeterminados de estas marcas:
Marca de instancia principal | Valores permitidos | Valor predeterminado de MySQL 5.7 | Valor predeterminado de MySQL 8.0 | Valor predeterminado de MySQL 8.4 |
---|---|---|---|---|
binlog_transaction_dependency_history_size |
1-1000000 | 25000 | 25000 | 25000 |
binlog_transaction_dependency_tracking |
COMMIT_ORDER, WRITESET, WRITESET_SESSION |
COMMIT_ORDER |
WRITESET |
No disponible (obsoleto en MySQL 8.4) |
transaction_write_set_extraction |
OFF, MURMUR32, XXHASH64 |
OFF |
XXHASH64 |
No disponible (obsoleto en MySQL 8.4) |
En MySQL 5.7, si binlog_transaction_dependency_tracking
se define como WRITESET
o WRITESET_SESSION
, transaction_write_set_extraction
debe definirse como un valor que no sea OFF
(XXHASH64
o MURMUR32
).
Comprobar el estado de la replicación
Cuando ves una instancia de réplica mediante la Google Cloud consola o inicias sesión en la instancia con un cliente de administración, obtienes detalles sobre la replicación, como el estado y las métricas. Cuando usas gcloud CLI, obtienes un breve resumen de la configuración de la réplica.
Antes de comprobar el estado de la 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, puede ver si la replicación está habilitada en la instancia de réplica.
Las siguientes métricas están disponibles para las instancias réplica. Más información sobre las métricas adicionales disponibles para todas las instancias, incluidas las que no son réplicas.
Métrica | Descripción |
---|---|
Estado de replicación ( cloudsql.googleapis.com ) |
Indica si la réplica está transmitiendo registros de forma activa desde la principal. Los valores posibles son:
Esta métrica informa de |
Latencia de replicación ( cloudsql.googleapis.com ) |
Tiempo que tarda en replicarse el estado de la réplica con respecto al estado de la instancia principal. Es la diferencia entre (1) la hora actual y (2) la marca de tiempo original en la que la réplica principal confirmó la transacción que se está aplicando en la réplica. En concreto, las escrituras pueden considerarse retrasadas aunque la réplica las haya recibido, si la réplica aún no ha aplicado la escritura a la base de datos. En el caso de las réplicas en cascada, cada par principal-réplica se monitoriza por separado y no hay una métrica única que proporcione la latencia de extremo a extremo (de principal a réplica). Esta métrica indica el valor de |
Latencia de red ( cloudsql.googleapis.com ) |
Tiempo, en segundos, que transcurre desde que se escribe el archivo de registro binario en la base de datos principal hasta que llega al subproceso de E/S de la réplica. Si `network_lag` es cero o insignificante, pero `replica_lag` es alto, significa que el subproceso SQL no puede aplicar los cambios de replicación con la suficiente rapidez. |
Estado de ejecución del subproceso de E/S secundario ( cloudsql.googleapis.com ) |
Indica si el hilo de E/S para leer el registro binario de la instancia principal se está ejecutando en la réplica. Los valores posibles son:
Esta métrica informa del valor de |
Estado de ejecución del subproceso SQL esclavo ( cloudsql.googleapis.com ) |
Indica si el subproceso SQL para ejecutar eventos en el registro de retransmisión se está ejecutando en la réplica. Los valores posibles son:
Esta métrica informa del valor de |
Para comprobar el estado de la replicación, efectúa los pasos siguientes:
Consola
Cloud SQL registra las métricas Replication State
y Replication Lag
en el
panel de control de monitorización de Cloud SQL predeterminado.
Para ver otras métricas de las réplicas de la misma región y de otras regiones, así como de las réplicas de servidores externos, cree un panel de control personalizado y añada las métricas que quiera monitorizar:
-
En la Google Cloud consola, ve a la página Monitorización.
- Seleccione la pestaña Paneles.
- Haz clic en Crear panel de control.
- Asigna un nombre al panel de control y haz clic en Aceptar.
- Haz clic en Añadir gráfico.
- En Tipo de recurso, selecciona Base de datos de Cloud SQL.
- Sigue uno de estos métodos:
- Para monitorizar la métrica de estado de la réplica: en el campo Selecciona una métrica, escribe
Replication state
. A continuación, añade un filtro parastate = "Running"
. El gráfico muestra 1 si la replicación está en curso y 0 en caso contrario. - Para monitorizar la métrica de latencia de replicación: en el campo Selecciona una métrica, escribe
replica_lag
. El gráfico muestra el tiempo que el estado de la réplica va por detrás del de su principal. - Para monitorizar el estado del subproceso de E/de la réplica, en el campo Seleccionar una métrica, escribe
Slave I/O thread running state
. A continuación, añade un filtro enstate = "Yes"
. El gráfico muestra 1 si el hilo se está ejecutando y 0 en caso contrario. - Para monitorizar el estado del subproceso SQL de la réplica, en el campo Seleccionar una métrica, escribe
Slave SQL thread running state
. A continuación, añade un filtro enstate = "Yes"
. El gráfico muestra 1 si el hilo se está ejecutando y 0 en caso contrario.
gcloud
Para una instancia de réplica, comprueba el estado de la replicación con:
gcloud sql instances describe REPLICA_NAME
En el resultado, busca las propiedades databaseReplicationEnabled
y masterInstanceName
.
En el caso de una instancia principal, comprueba si hay réplicas con lo siguiente:
gcloud sql instances describe PRIMARY_INSTANCE_NAME
En el resultado, busca la propiedad replicaNames
.
Cliente mysql
- Conéctate a la réplica con un cliente MySQL.
Para obtener más información, consulta Opciones de conexión para aplicaciones externas.
- Comprueba el estado de la réplica:
SHOW REPLICA STATUS \G
Busca las siguientes métricas en el resultado del comando:
Master_Host
: nombre de la instancia principal.Slave_IO_Running
,Slave_SQL_Running
: Indica si los subprocesos de E/S y SQL, respectivamente, están en ejecución. Estos hilos se encargan de transferir eventos del registro principal al registro de retransmisión de la réplica y de ejecutar esos eventos desde el registro de retransmisión. El valor de la métrica esYes
si el subproceso está en ejecución. Ambos deben estar en ejecución para que la réplica esté activa.Seconds_Behind_Master
: cantidad de tiempo, en segundos, que tarda la réplica en procesar las transacciones de la principal, es decir, la diferencia entre (1) la hora actual y (2) la marca de tiempo original en la que la principal confirmó la transacción que se está aplicando en la réplica. El valor esNULL
si la replicación se ha interrumpido.-
Master_Log_file
,Read_Master_Log_Pos
,Relay_Master_Log_File
,Exec_Master_Log_Pos
: Estas métricas muestran las coordenadas (nombre de archivo y desplazamiento) hasta las que el hilo de E/S ha leído eventos (Master_Log_file
yRead_Master_Log_Pos
) y hasta las que el hilo de SQL ha ejecutado eventos (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
), significa que la réplica ha procesado todos los eventos que ha recibido del primario.
Para obtener más información sobre el resultado de este comando, consulta la documentación de MySQL sobre comprobación del estado de la replicación.
Solucionar problemas
Problema | Solución de problemas |
---|---|
La réplica de lectura no ha empezado a replicarse al crearse. | Probablemente 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 hayas proporcionado explícitamente o una que se haya definido con un valor predeterminado.
En primer lugar, comprueba que el valor de la marca Si la marca |
No se ha podido crear la réplica de lectura debido a un error desconocido. | Probablemente 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 disco de la instancia principal puede llenarse durante la creación de la réplica. Edita la instancia principal para actualizarla a un tamaño de disco mayor. |
La instancia de réplica está usando demasiada memoria. | La réplica usa memoria temporal para almacenar en caché las operaciones de lectura solicitadas con frecuencia, lo que puede hacer que use más memoria que la instancia principal.
Reinicia la instancia de réplica para recuperar el espacio de memoria temporal. |
Replicación detenida. | Se ha alcanzado el límite máximo de almacenamiento y el aumento automático del almacenamiento no está habilitado.
Edita la instancia para habilitar |
La latencia de replicación es constantemente alta. | La carga de escritura es demasiado alta para que la réplica pueda gestionarla. El retraso de la réplica se produce cuando el subproceso SQL de una réplica no puede seguir el ritmo del subproceso de E/S. Algunos tipos de consultas o cargas de trabajo pueden provocar una latencia de replicación alta temporal o permanente en un esquema determinado. Estas son algunas de las causas habituales del retraso de la réplica:
Estas son algunas posibles soluciones:
|
El retraso de la replicación aumenta de repente. | Esto se debe a transacciones de larga duración. Cuando se confirma una transacción (una o varias instrucciones) 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 de registro binario, compara esa marca de tiempo con la marca de tiempo actual para calcular el retraso de la replicación. Por lo tanto, una transacción de larga duración en la fuente provocaría un retraso de replicación grande e inmediato en la réplica. Si el número de cambios en las filas de la transacción es elevado, la réplica también tardará mucho en ejecutarla. Durante ese tiempo,
la latencia de replicación aumenta. Una vez que la réplica finalice esta transacción, el periodo de puesta al día dependerá de la carga de trabajo de escritura en el origen y de la velocidad de procesamiento de la réplica.
Para evitar que la transacción se prolongue, puedes probar estas soluciones:
|
Si se cambian las marcas de replicación paralela, se produce un error. | Se ha asignado un valor incorrecto a una o varias de estas marcas.
En la instancia principal que muestra el mensaje de error, define las marcas de replicación en paralelo:
|
La creación de réplicas falla por tiempo de espera agotado. | Las transacciones sin confirmar de larga duración en la instancia principal pueden provocar que falle la creación de réplicas de lectura.
Vuelve a crear la réplica después de detener todas las consultas en ejecución. |
Siguientes pasos
- Aprende a crear una réplica de lectura.
- Consulta información sobre los procedimientos almacenados de Cloud SQL para índices de réplicas de lectura.
- Aprende a configurar una configuración de réplica externa.
- Consulte cómo configurar una configuración principal externa.
- Obtén más información sobre los requisitos y las prácticas recomendadas para la replicación.