Gestionar réplicas de lectura

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.

Esta página se aplica a las réplicas de una instancia de Cloud SQL. Para configurar una instancia de Cloud SQL de forma que actúe como editor de una réplica externa, consulta Configurar réplicas externas.

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

  1. En la Google Cloud consola, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Haz clic en el nombre de una instancia de réplica para seleccionarla.
  3. Haz clic en Inhabilitar replicación en la barra de botones.
  4. 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

  1. En la Google Cloud consola, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Haz clic en el nombre de una instancia de réplica para seleccionarla.
  3. Haz clic en Habilitar replicación.
  4. 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:

  1. Detener todas las escrituras en la instancia principal.
  2. Comprueba el estado de la réplica. Una de las opciones para hacerlo es el panel de control de grupos de disponibilidad Always On de SQL Server Management Studio (SSMS).
  3. Verifica que la réplica se esté replicando y, a continuación, comprueba el retraso de la replicación, por ejemplo, tal como se indica en la métrica seconds_behind_master.

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

  1. En la Google Cloud consola, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Haz clic en el nombre de una instancia de réplica para seleccionarla.
  3. Haz clic en Promocionar réplica.
  4. 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.

Comprobar el estado de la replicación

Actualmente, debe usar consultas T-SQL o SSMS para monitorizar el estado de la replicación. Para obtener más información, consulta las siguientes secciones:

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 max_connections sea mayor o igual que el del elemento principal.

Si la marca max_connections está configurada correctamente, inspecciona los registros en Cloud Logging para encontrar el error real.

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 set Service Networking service account as servicenetworking.serviceAgent role on consumer project, inhabilita y vuelve a habilitar Service Networking API. Esta acción crea la cuenta de servicio necesaria para continuar con el proceso.

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 automatic storage increase.

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:
  • Consultas lentas en la réplica. Identifícalos y corrígelos.
  • Las consultas como DELETE ... WHERE field < 50000000 provocan un retraso en la replicación basada en filas, ya que se acumula un gran número de actualizaciones en la réplica.

Estas son algunas posibles soluciones:

  • Edita la instancia para aumentar el tamaño de la réplica.
  • Reducir la carga de la base de datos.
  • Envía el tráfico de lectura a la réplica de lectura.
  • Indexa las tablas.
  • Identifica y corrige las consultas de escritura lentas.
  • Vuelve a crear la réplica.
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