Administrar réplicas de lectura

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.

Nota: Esta página se aplica a las réplicas de una instancia de Cloud SQL. A fin de configurar una instancia de Cloud SQL para que actúe como publicador para un suscriptor externo, consulta Configura réplicas externas.

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

  1. En la consola de Google Cloud, 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 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

  1. En la consola de Google Cloud, 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. Haga clic en Ok.

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:

  1. Detén todas las operaciones de escritura en la instancia principal.
  2. Comprueba el estado de replicación de la réplica. Una opción para hacerlo es el panel del grupo de disponibilidad siempre activado en SQL Server Management Studio (SSMS).
  3. Verifica que la réplica se replique y, luego, verifica el retraso de replicación, por ejemplo, como lo informa la métrica seconds_behind_master.

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

  1. En la consola de Google Cloud, 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 Promover réplica.
  4. Haga clic en Ok.

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.

Comprobar el estado de la replicación

Por el momento, debes usar consultas T-SQL o SSMS para supervisar el estado de la replicación. Para obtener más información, consulta lo siguiente:

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

Si la marca max_connections se configuró de forma correcta, inspecciona los registros en Cloud Logging para encontrar el error real.

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

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

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:
  • Consultas lentas en la réplica. Encuéntralas y corrígelas.
  • Las consultas como DELETE ... WHERE field < 50000000 provocan un retraso de la replicación basado en filas, ya que se acumula una gran cantidad de actualizaciones en la réplica.

Estas son algunas de las soluciones posibles:

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