Replicación

En esta página, se describe cómo se replican los datos en Spanner, los diferentes tipos de réplicas de Spanner y sus roles en las lecturas y escrituras, y los beneficios de la replicación.

Descripción general

Spanner realiza la replicación automáticamente a nivel de bytes. Como se describe en Ciclo de vida de las operaciones de lectura y escritura de Spanner, aprovecha esta capacidad del sistema de archivos subyacente en el que se basa. Spanner escribe mutaciones de la base de datos en archivos de este sistema de archivos, y el sistema de archivos se encarga de replicar y recuperar los archivos cuando falla una máquina o un disco.

Si bien el sistema de archivos distribuido subyacente en el que se basa Spanner ya proporciona replicación a nivel de bytes, Spanner también replica los datos para brindar los beneficios adicionales de disponibilidad de datos y localidad geográfica. A grandes rasgos, todos los datos de Spanner se organizan en filas. Spanner crea varias copias, o réplicas, de estas filas y, luego, las almacena en diferentes áreas geográficas. Spanner usa un esquema de replicación síncrona basado en Paxos, en el que las réplicas de votación votan sobre cada solicitud de escritura antes de que se confirme la escritura. Esta propiedad de la replicación síncrona global te permite leer los datos más actualizados desde cualquier réplica de lectura y escritura o de solo lectura de Spanner.

Spanner crea réplicas de cada división de la base de datos. Una división contiene un rango de filas contiguas, en el que las filas se ordenan por clave primaria. Todos los datos de una división se almacenan físicamente juntos en la réplica, y Spanner entrega cada réplica desde una zona de falla independiente. Para obtener más información, consulta la Descripción general de los esquemas.

Los conjuntos de divisiones se almacenan y replican con Paxos. Dentro de cada conjunto de réplicas de Paxos, se elige una réplica para que actúe como líder. Las réplicas líderes controlan las escrituras, mientras que las réplicas de lectura y escritura o de solo lectura pueden entregar una solicitud de lectura sin comunicarse con la líder. Si se solicita una lectura sólida, por lo general, se consulta al líder para garantizar que la réplica de solo lectura haya recibido todas las mutaciones recientes. Para supervisar la tasa de cambio y la cantidad de datos que se replican desde tu réplica líder hasta las réplicas entre regiones en la configuración de tu instancia, consulta Supervisa la replicación de datos.

Beneficios de la replicación de Spanner

Estos son algunos de los beneficios de la replicación de Spanner:

  • Disponibilidad de los datos: Tener más copias de tus datos hace que los clientes que desean leerlos tengan mejor acceso a los datos. Además, Spanner puede seguir procesando escrituras incluso si algunas de las réplicas no están disponibles, ya que solo se requiere una mayoría de réplicas con derecho a voto para confirmar una escritura.

  • Localidad geográfica: La capacidad de colocar datos en diferentes regiones y continentes con Spanner significa que los datos pueden estar geográficamente más cerca y, por lo tanto, ser más rápidos de acceder para los usuarios y los servicios que los necesitan.

  • Experiencia de base de datos única: Spanner puede ofrecer una experiencia de base de datos única debido a su replicación síncrona y su coherencia sólida global.

  • Desarrollo de aplicaciones más sencillo: Como Spanner cumple con los requisitos de ACID y ofrece coherencia sólida global, los desarrolladores que trabajan con Spanner no tienen que agregar lógica adicional en sus aplicaciones para lidiar con la coherencia eventual, lo que hace que el desarrollo de aplicaciones y el mantenimiento posterior sean más rápidos y sencillos.

Tipos de réplicas

Spanner tiene tres tipos de réplicas: réplicas de lectura y escritura, réplicas de solo lectura y réplicas testigo. Las regiones y las topologías de replicación que forman las configuraciones de instancias básicas son fijas:

Puedes crear configuraciones de instancias personalizadas y agregar réplicas de solo lectura adicionales para las configuraciones de instancias regionales y multirregionales.

En la siguiente tabla, se resumen los tipos de réplicas de Spanner y sus propiedades:

Tipo de réplica Puede votar Puede convertirse en líder Entrega operaciones de lectura Se puede configurar la réplica de forma manual
Lectura y escritura Sí sí sí no
Solo lectura No no sí sí*
Testigo Sí no no no

* Para obtener más información, consulta cómo crear una instancia con una configuración de instancia personalizada.

Réplicas de lectura y escritura

Las réplicas de lectura y escritura son compatibles con las operaciones de lectura y escritura. Estas réplicas realizan las acciones que se mencionan a continuación:

  • Conservan una copia completa de tus datos.
  • Entregan operaciones de lectura.
  • Pueden votar para confirmar una operación de escritura.
  • Participan en la elección de liderazgo.
  • Son aptas para convertirse en líderes.
  • Son el único tipo de réplica que se usa en las instancias regionales.

Réplicas de solo lectura

Las réplicas de solo lectura solo admiten lecturas, pero no escrituras. Estas réplicas no votan por los líderes ni por la confirmación de escrituras, por lo que te permiten escalar tu capacidad de lectura sin aumentar el tamaño del quórum necesario para las escrituras. Las réplicas de solo lectura cumplen con las condiciones que se mencionan a continuación:

  • Mantienen una copia completa de tus datos, que se replica desde la réplica de lectura y escritura líder.
  • No participan en la votación para confirmar las operaciones de escritura. Por lo tanto, la ubicación de las réplicas de solo lectura nunca contribuye a la latencia de escritura.
  • No reúnen los requisitos para convertirse en líderes.
  • Entregan operaciones de lectura.
  • Se puede escalar de forma asimétrica. Para obtener más información, consulta Ajuste de escala automático asimétrico de solo lectura.
  • No funcionan como una solución de recuperación ante desastres (DR) independiente. La disponibilidad de la instancia se determina según el quórum de las réplicas de votación. Si la instancia de Spanner se desconecta, las réplicas de solo lectura también se desconectarán poco después y no podrán atender lecturas, incluidas las lecturas inactivas.
  • Si es la réplica más cercana a tu aplicación, la réplica de solo lectura suele poder entregar lecturas inactivas sin necesidad de un viaje de ida y vuelta a la región principal, siempre que la inactividad sea de al menos 15 segundos. También puedes usar lecturas dirigidas para enrutar transacciones de solo lectura y lecturas únicas a un tipo de réplica específico o a una región en una configuración de instancia multirregional. Para obtener más información, consulta Lecturas dirigidas.

    Las lecturas sólidas pueden requerir un viaje de ida y vuelta a la réplica líder. El viaje de ida y vuelta solo sirve para negociar la marca de tiempo, no para enviar los datos reales del líder. La negociación de la marca de tiempo es una operación de CPU eficiente en el líder y, por lo general, los datos ya están en camino. El sistema controla esta comunicación automáticamente.

    Para obtener más información sobre las lecturas obsoletas y las lecturas sólidas, consulta la sección sobre lecturas.

Réplicas de solo lectura opcionales

Puedes crear una configuración de instancia regional o multirregional personalizada y agregar réplicas opcionales de solo lectura para escalar las lecturas y admitir lecturas inactivas de baja latencia. La réplica de solo lectura agregada debe estar en una región que no forme parte de la configuración de la instancia base predefinida. Para obtener una lista de las regiones opcionales de solo lectura que puedes agregar, consulta la columna Región opcional en Configuraciones regionales disponibles y Configuraciones multirregionales disponibles. Si no ves la ubicación de la réplica de solo lectura que elegiste, puedes solicitar una nueva región de réplica de solo lectura opcional.

Todas las réplicas opcionales de solo lectura están sujetas a costos de capacidad de procesamiento, almacenamiento y replicación.

Además, agregar réplicas de solo lectura a una configuración de instancia personalizada no cambia los ANS de Spanner de la configuración de la instancia.

Si decides agregar una réplica de solo lectura a un continente diferente de la región principal, te recomendamos que agregues un mínimo de dos réplicas de solo lectura. Esto ayuda a mantener una latencia de lectura baja en caso de que una de las réplicas de solo lectura deje de estar disponible.

Como práctica recomendada, primero prueba las cargas de trabajo de rendimiento en instancias que no sean de producción en la configuración de instancias personalizadas. Puedes consultar el panel de comparativas de latencia y capacidad de procesamiento interregionales para obtener datos de latencia interregional mediana. Por ejemplo, si creas una configuración de instancia personalizada con la configuración base multirregional eur6 y una réplica de solo lectura opcional en us-east1, la latencia de lectura sólida esperada para un cliente en us-east1 es de alrededor de 100 milisegundos debido al tiempo de ida y vuelta a la región líder en europe-west4. Las lecturas inactivas con suficiente inactividad no generan el viaje de ida y vuelta y, por lo tanto, son mucho más rápidas. También puedes usar las estadísticas de bloqueo y de transacciones para identificar las transacciones que generan latencias altas.

Para obtener instrucciones sobre cómo agregar réplicas opcionales de solo lectura, consulta Crea una configuración de instancia personalizada.

Réplicas testigo

Las réplicas de testigo no admiten lecturas, pero sí participan en la votación para confirmar escrituras. Estas réplicas facilitan la obtención de quórum para las operaciones de escritura sin los recursos de procesamiento y almacenamiento que requieren las réplicas de lectura y escritura para almacenar una copia completa de datos y entregar operaciones de lectura. Las réplicas testigo cumplen con las condiciones que se mencionan a continuación:

  • Se usan en instancias birregionales y multirregionales.
  • No conservan una copia completa de los datos.
  • No entregan operaciones de lectura.
  • Votan para confirmar las operaciones de escritura.
  • Participan en la elección de líder, pero no reúnen los requisitos para convertirse en réplicas de líder.

El rol de las réplicas en las escrituras y lecturas

En esta sección, se describe la función de las réplicas en las operaciones de escritura y lectura de Spanner, lo que resulta útil para comprender por qué Spanner usa réplicas testigo en configuraciones birregionales y multirregionales.

En operaciones de escritura

Las solicitudes de escritura del cliente siempre se procesan primero en la réplica principal, incluso si hay una réplica no principal que está más cerca del cliente o si la réplica principal está geográficamente lejos del cliente. Si usas una configuración de instancia de doble región o multirregional, y tu aplicación cliente se encuentra en una región que no es líder, Spanner usa el enrutamiento adaptado al líder para enrutar las transacciones de lectura y escritura de forma dinámica y reducir la latencia en tu base de datos. Para obtener más información, consulta Enrutamiento con reconocimiento del líder.

La réplica líder registra la operación de escritura entrante y la reenvía, en paralelo, a las otras réplicas que son aptas para votar en esa operación de escritura. Cada réplica apta completa su operación escritura y, luego, responde a la líder con un voto sobre si la operación de escritura debe confirmarse. La escritura se confirma cuando la mayoría de las réplicas de votación (o el quórum de escritura) aceptan confirmar la escritura. En segundo plano, todas las réplicas restantes (no testigo) registran la operación de escritura. Si una réplica de lectura y escritura o de solo lectura se retrasa en el registro de las operaciones de escritura, puede solicitar los datos faltantes a otra réplica que tenga una copia completa y actualizada de los datos.

En operaciones de lectura

Las solicitudes de lectura del cliente se pueden ejecutar o requerir la comunicación con la réplica líder, según el modo de simultaneidad de la solicitud de lectura.

  • Las operaciones de lectura que son parte de una transacción de lectura y escritura se entregan desde la réplica líder, porque esta mantiene los bloqueos necesarios para aplicar la serializabilidad.

  • Los métodos de operación de lectura única (una operación de lectura fuera del contexto de una transacción) y las operaciones de lectura en transacciones de operaciones de solo lectura pueden requerir la comunicación con la líder, según el modo de simultaneidad de la lectura. Para obtener más información sobre los modos de simultaneidad, consulta Tipos de lectura.

    • Las solicitudes de lectura sólidas pueden ir a cualquier réplica de escritura y lectura o de solo lectura. Si la solicitud va a una réplica no líder, esa réplica debe comunicarse con la líder para ejecutar la operación de lectura.

    • Las solicitudes de lectura inactiva se dirigen a la réplica de solo lectura o de lectura y escritura disponible más cercana que se haya actualizado a la marca de tiempo de la solicitud. Esta puede ser la réplica líder si la líder es la réplica más cercana al cliente que emitió la solicitud de lectura.

Supervisa la replicación de datos

Puedes supervisar la tasa de cambio y la cantidad de datos que se replican desde tu réplica principal a las réplicas entre regiones en la configuración de tu instancia. La tasa de cambio se expresa en bytes por segundo y la cantidad de datos, en bytes. Para ello, usa la métrica de supervisión Bytes replicados entre regiones (instance/cross_region_replicated_bytes_count).

Para ver esta métrica en la consola de Google Cloud , sigue estos pasos:

  1. En la consola de Google Cloud , ve a Monitoring:

    Ir a Monitoring

  2. En el menú de navegación, selecciona Explorador de métricas.

  3. En el campo Métrica, haz clic en el menú desplegable Seleccionar una métrica.

  4. En el campo Filtrar por nombre de recurso o métrica, selecciona Instancia de Cloud Spanner > Instancia > Bytes replicados entre regiones y, luego, haz clic en Aplicar.

    Esta métrica solo está disponible en Métricas activas si hay actividad de replicación entre regiones en tu instancia. De lo contrario, aparecerá en Métricas inactivas. De forma predeterminada, la IU filtra y muestra solo las métricas activas. Borra la marca de verificación Activa para ver las métricas activas e inactivas.

    En el gráfico, se muestra la tasa de cambio (en bytes por segundo) de los datos replicados en todas las instancias de Spanner dentro del período especificado.

  5. Opcional: Para mostrar la cantidad de datos (en bytes) que se replican en lugar de la tasa de cambio, haz lo siguiente:

    1. En el campo Agregación, haz clic en el menú desplegable Suma y selecciona Configurar alineador.
    2. En el campo Función de alineación, haz clic en el menú desplegable Tasa y selecciona Delta.
    3. Selecciona Tabla o Ambos como el tipo de tabla en lugar de Gráfico.

      En la tabla, se muestra la cantidad de datos (en bytes) que se replicaron dentro del período especificado.

  6. Opcional: Para ver el uso de una instancia o un atributo en particular, haz lo siguiente:

    1. Usa el campo Filtro para agregar filtros, como un ID de instancia, un ID de base de datos, una región de origen, una región de destino o una etiqueta.
    2. Haz clic en Agregar filtro para agregar varios filtros.

Para ver una lista completa de las métricas de Google Cloud , consulta métricas deGoogle Cloud .

¿Qué sigue?