Acerca de la replicación en Cloud SQL

La replicación es la capacidad de crear copias de una instancia de Cloud SQL o una base de datos local y dejar que las copias hagan el trabajo.

Introducción

La razón principal para usar la replicación es escalar el uso de datos en una base de datos sin degradar el rendimiento.

Otros motivos incluyen los siguientes:

  • Migrar datos entre regiones
  • Migrar datos entre plataformas
  • Migrar datos desde una base de datos local a Cloud SQL

Además, una réplica podría ascender si la instancia original se daña.

Cuando se hace referencia a una instancia de Cloud SQL, la instancia que se replica se denomina instancia principal y las copias se denominan réplicas de lectura. La instancia principal y las réplicas de lectura residen en Cloud SQL.

Cuando se hace referencia a una base de datos local, la situación de replicación se denomina replicación desde un servidor externo. En esta situación, la base de datos que se replica es el servidor de base de datos de origen. Las copias que residen en Cloud SQL se llaman réplicas de Cloud SQL. También hay una instancia que representa el servidor de base de datos de origen en Cloud SQL que se denomina instancia de representación de origen.

En una situación de recuperación ante desastres, puedes ascender una réplica para convertirla en una instancia principal. De esta manera, puedes usarla en lugar de una instancia en una región que tenga una interrupción. También puedes ascender una réplica para reemplazar una instancia dañada.

Cloud SQL admite los siguientes tipos de réplicas:

También puedes usar Database Migration Service para la replicación continua desde un servidor de la base de datos de origen a Cloud SQL. Nota: Cloud SQL permite que los usuarios administren su propia replicación mediante las características de replicación lógica de PostgreSQL.

Cloud SQL no admite la replicación entre dos servidores externos.

Réplicas de lectura

Se usa una réplica de lectura para descargar el trabajo de una instancia de Cloud SQL. La réplica de lectura es una copia exacta de la instancia principal. Los datos y otros cambios que se realizan en la instancia principal se actualizan casi en tiempo real en la réplica de lectura.

Las réplicas de lectura son de solo lectura, por lo que no puedes realizar operaciones de escritura en ellas. La réplica de lectura procesa consultas, solicitudes de lectura y tráfico de estadísticas, lo que reduce la carga en la instancia principal.

Te conectas a una réplica directamente con su nombre y dirección IP de conexión. Si te conectas a una réplica mediante una dirección IP privada, no necesitas crear una conexión privada de VPC adicional para la réplica, porque la conexión se hereda de la instancia principal.

Para obtener más información sobre cómo crear una réplica de lectura, consulta Crea réplicas de lectura. Para obtener más información sobre cómo administrar una réplica de lectura, consulta Administra réplicas de lectura.

Como práctica recomendada, coloca réplicas de lectura en una zona diferente a la instancia principal cuando usas la alta disponibilidad en tu instancia principal. Esta práctica garantiza que las réplicas de lectura sigan funcionando cuando la zona que contiene la instancia principal tenga una interrupción. Consulta la Descripción general de la alta disponibilidad para obtener más información.

Selecciona un tipo de máquina adecuado

Las réplicas de lectura pueden tener un tipo de máquina diferente al de la principal. Debes supervisar las métricas en tu instancia, como el uso de memoria y CPU, para asegurarte de que la instancia de réplica tenga el tamaño adecuado para su carga de trabajo, en especial si es más pequeña que la instancia principal. Una instancia de réplica que tiene un tamaño insuficiente es más propensa a un rendimiento deficiente, como eventos frecuentes de memoria insuficiente (OOM).

Impacto en la marca max_connections cuando la réplica de lectura tiene un tipo de máquina con menos memoria que la principal

En una instancia de PostgreSQL, si no estableces la marca max_connections en un valor de tu elección, Cloud SQL lo configura de forma automática en función de la cantidad de memoria en la instancia. Para obtener más información, consulta las marcas admitidas. PostgreSQL requiere que el valor de max_connections siempre sea al menos tan grande en una réplica de lectura como en su instancia principal. Por lo tanto, si una réplica de lectura tiene menos memoria que su instancia principal y no configuraste la marca max_connections, es posible que herede un valor mayor de max_connections según el tamaño de la instancia principal. En esta situación, si usas la configuración max_connections para limitar la cantidad de conexiones a la instancia de réplica, podría sobrecargarse porque el valor es demasiado alto en relación con el tipo de máquina de la instancia. Para evitar esto, puedes realizar alguna de las siguientes acciones:

  1. Cambia el tamaño de la instancia de réplica a un tipo de máquina más grande.
  2. Configura tu aplicación cliente para limitarla a una cantidad de conexiones menor que el valor de max_connections.
  3. Establece la marca max_connections en la instancia principal y la réplica en un valor adecuado.

Operaciones de índice hash mediante réplicas de lectura

Las operaciones de índice hash no usan registros de escritura por adelantado para PostgreSQL 9.6. Cloud SQL solo tiene una versión disponible en PostgreSQL 10. Esto se documenta en el cuadro de precaución amarillo en la página de versiones de PostgreSQL. Esto también se aplica a las réplicas de lectura de Cloud SQL.

Debido a que las actualizaciones del índice de hash no se propagan a la réplica de lectura en PostgreSQL 9.6, no pueden usarse en ella. Como solución alternativa, puedes evitar tener réplicas de lectura o actualizar a una versión principal de PostgreSQL (10 o superior).

Réplicas de lectura entre regiones

La replicación entre regiones te permite crear una réplica de lectura en una región diferente a la de la instancia principal. Una réplica de lectura entre regiones se crea de la misma manera en la que se creas una réplica dentro de una región.

Las réplicas entre regiones realizan las siguientes acciones:

  • Mejoran el rendimiento de lectura, ya que pueden hacer que las réplicas estén disponibles más cerca de la región de la aplicación.
  • Proporcionan una capacidad de recuperación ante desastres adicional para protegerte contra fallas regionales.
  • Te permiten migrar datos de una región a otra.

Consulta la sección sobre cómo ascender réplicas para la migración regional o la recuperación ante desastres a fin de obtener más información sobre las réplicas entre regiones.

Réplicas de lectura en cascada

La replicación en cascada te permite crear una réplica de lectura en otra réplica de lectura en la misma región o en una diferente. A continuación, se describen algunos casos para usar réplicas en cascada:

  • Recuperación ante desastres: puedes usar una jerarquía de cascada de réplicas de lectura para simular la topología de tu instancia principal y sus réplicas de lectura. Durante una interrupción, la réplica de lectura seleccionada asciende a principal y las réplicas de lectura en la nueva instancia principal se siguen replicando y están listas para usarse.
  • Mejoras de rendimiento: reduce la carga en la instancia principal mediante la transferencia del trabajo de replicación en varias réplicas de lectura.
  • Escala las lecturas: puedes tener más réplicas para compartir la carga de lectura.
  • Reducción de costos: puedes reducir los costos de las herramientas de redes mediante una sola réplica en cascada con replicación entre regiones en otras regiones.

Terminología

  • Réplica de cascada: una réplica de lectura que tiene su propia réplica.
  • Niveles: puedes crear niveles de réplicas en una jerarquía de réplica en cascada. Por ejemplo, si agregas cuatro réplicas a una instancia, esas cuatro réplicas estarán en el mismo nivel.
  • Instancias del mismo nivel: varias réplicas que se replican desde la misma instancia principal. Los grupos del mismo nivel se encuentran en el mismo nivel de la jerarquía de réplica. Una réplica puede tener hasta nueve grupos del mismo nivel.
  • Réplica de hoja: una réplica de lectura que no tiene ninguna réplica propia. En una jerarquía de replicación de varios niveles, la réplica de hoja es el último nivel.
  • Ascender: una acción que convierte una réplica, en cualquier nivel de la jerarquía, en una instancia principal. Cuando se asciende, se conserva la jerarquía de réplica en cascada de la réplica.

Configura réplicas en cascada

Las réplicas en cascada te permiten agregar réplicas de lectura a cualquier réplica existente. Puedes agregar hasta cuatro niveles de réplicas, incluida la instancia principal. Cuando asciendes la réplica en la parte superior de una jerarquía de réplica en cascada, esta se convierte en una instancia principal y sus réplicas en cascada se siguen replicando.

A fin de planificar tu configuración, debes tener un objetivo de lo que pretenden hacer las réplicas de lectura. En las siguientes dos secciones, se describen las configuraciones para la recuperación ante desastres y la replicación multirregional.

Recuperación ante desastres

Para comprender cómo las réplicas en cascada te ayudan a recuperarte rápidamente durante una interrupción, considera la siguiente situación de replicación:

Configuración

Diagrama de una configuración de réplica en cascada con la réplica en cascada en una región separada

Interrupción

Diagrama de la promoción durante una interrupción

Promoción

Diagrama de la instancia nueva con réplicas

Si deseas usar una instancia en la región B en una configuración de recuperación ante desastres y tienes lo siguiente:

  • Réplicas en la misma región conectadas a la instancia principal (réplica A)
  • Réplicas en otras regiones (réplica en cascada) conectadas a la instancia principal.

Puedes crear réplicas de lectura en la réplica en cascada en la región B.

En la pestaña Interrupción, si hay una interrupción en la región A, la réplica en cascada asciende a una instancia principal. Ya tiene réplicas de lectura debajo, lo que reduce el objetivo de tiempo de recuperación (RTO).

En la pestaña Ascender, verás que cuando una réplica en cascada asciende, sus réplicas también ascienden y se continúan replicando debajo de ella.

Replicación multirregión

Otro caso de uso para las réplicas en cascada es distribuir la capacidad de lectura a una segunda región de manera rentable. Se pueden crear réplicas en cascada C y D que replican desde la réplica B. Los clientes pueden distribuir consultas de lectura en las réplicas B, C y D para reducir la carga en cada réplica. El costo del tráfico de red entre regiones se genera solo una vez, desde la instancia principal hasta la réplica B. La replicación de B a C y D usa la transferencia de red dentro de la región, que es gratuita.

Puedes crear una jerarquía de hasta cuatro instancias mediante réplicas en cascada para la replicación multirregional.

Principal A → Réplica B → Réplica C y Réplica D

Restricciones

  • No puedes borrar una réplica que tenga réplicas. Para borrar la réplica, debes comenzar con las réplicas de hoja y avanzar en la jerarquía.
  • No se admite la dependencia de la región circular. Para tener la réplica de una réplica en cascada en la misma región que la instancia principal, la réplica en cascada también debe estar en la misma región.

Replicación lógica

Cloud SQL te permite configurar tus propias soluciones de replicación mediante las funciones de replicación lógica de PostgreSQL. La replicación lógica es una solución flexible que permite lo siguiente:

  • Replicación estándar de una instancia principal a una réplica
  • Replicación selectiva de solo ciertas tablas o filas
  • Replicación en las versiones principales de PostgreSQL
  • Replicación en bases de datos que no son de PostgreSQL
  • Cambia los flujos de trabajo de captura de datos (CDC) en los que todos los cambios de la base de datos se transmiten a un consumidor

Para obtener más información, consulta Configura la replicación lógica. Esa página incluye información sobre lo siguiente:

  • Replicación lógica nativa
  • La extensión pglogical

Casos de uso de replicación

Los siguientes casos de uso se aplican a cada tipo de replicación.

Nombre Principal Réplica Beneficios y casos prácticos Más información
Réplica de lectura Instancia de Cloud SQL Instancia de Cloud SQL
  • Capacidad de lectura adicional
  • Objetivo de estadísticas
Réplica de lectura entre regiones Instancia de Cloud SQL Instancia de Cloud SQL
  • Capacidad de lectura adicional
  • Objetivo de estadísticas
  • Función adicional de recuperación ante desastres
  • Mejora en el rendimiento de lectura
  • Migra datos entre regiones
Replicación lógica Cualquier instancia de PostgreSQL Cualquier instancia de PostgreSQL o consumidor externo
  • Replicación desde fuera de Cloud SQL
  • Replicación en todas las versiones de PostgreSQL
  • Replica solo un subconjunto de datos en algunas tablas mediante el filtrado de filas y columnas. También consulta pglogical 2.1 y la lógica de replicación en PostgreSQL 10.
  • Replicación en destinos que no son de PostgreSQL (captura de datos modificados)

Facturación

  • Una réplica de lectura se cobra a la misma tarifa que una instancia de Cloud SQL estándar. No se aplican cargos por la replicación de datos.
  • El precio de una réplica de lectura entre regiones es el mismo que el de la creación de una instancia de Cloud SQL nueva en la región. Consulta los precios de las instancias de Cloud SQL y selecciona la región adecuada. Además del costo normal asociado a la instancia, una réplica entre regiones genera cargos de salida de red entre regiones por los registros de replicación enviados desde la instancia principal hasta la instancia de la réplica, como se describe en Precios de salida de la red

Referencia rápida para las réplicas de lectura de Cloud SQL

Tema Debate
Copias de seguridad No puedes configurar copias de seguridad en la réplica.
Núcleos y memoria Las réplicas de lectura pueden usar una cantidad diferente de núcleos y de memoria de las de la instancia principal.
Borra la instancia principal Antes de borrar una instancia principal, debes promover todas sus réplicas de lectura a instancias independientes o borrar las réplicas de lectura.
Borra la réplica Cuando borras una réplica, el estado de la instancia principal no se ve afectado.
Inhabilita el registro de escritura por adelantado Antes de inhabilitar los registros de escritura por adelantado en una instancia principal, debes ascender o borrar todas sus réplicas de lectura.
Conmutación por error Una instancia principal no puede conmutar por error a una réplica de lectura, y las réplicas de lectura no pueden conmutar por error de ninguna manera durante una interrupción.
Alta disponibilidad Las réplicas de lectura te permiten habilitar la alta disponibilidad en las réplicas.
Balanceo de cargas Cloud SQL no proporciona balanceo de cargas entre las réplicas. Puedes implementar el balanceo de cargas para la instancia de Cloud SQL. También puedes usar la agrupación de conexiones para distribuir consultas entre las réplicas con tu configuración de balanceo de cargas a fin de obtener un mejor rendimiento.
Períodos de mantenimiento Los períodos de mantenimiento no se pueden establecer en réplicas de lectura y no comparten períodos de mantenimiento con la instancia principal. En la réplica de lectura, el mantenimiento puede ocurrir en cualquier momento. El mantenimiento de las réplicas de lectura ocurre en una hora diferente a la de la instancia principal.
Varias réplicas de lectura Cloud SQL admite réplicas en cascada. Como resultado, puedes crear hasta 10 réplicas para una sola instancia principal, y las réplicas se pueden encadenar hasta para cuatro niveles, incluida la principal.
IP privada Si te conectas a una réplica mediante una dirección IP privada, no necesitas crear una conexión privada de VPC adicional para la réplica, ya que se hereda de la instancia principal.
Restablece la instancia principal No puedes restablecer la instancia principal de una réplica mientras exista dicha réplica. Para restablecer una instancia desde una copia de seguridad o realizar una recuperación de un momento determinado, debes ascender o borrar todas sus réplicas.
Configuración La configuración de la instancia principal se propaga a la réplica, incluidas la contraseña para el usuario de postgres y los cambios en la tabla del usuario.
Detener una réplica No puedes stop una réplica. Puedes aplicar restart, delete o disable replication en ella, pero no puedes detenerla como lo haces con una instancia principal.
Actualiza una réplica Las réplicas de lectura pueden experimentar una actualización perjudicial en cualquier momento.
Tablas de usuarios No puedes realizar cambios en la réplica. Todas las modificaciones de usuario se deben realizar en la instancia principal.

¿Qué sigue?