Descripción general de la migración

En este documento, se describe el proceso de migración de tu base de datos a Spanner. Describimos las etapas de la migración y las herramientas que recomendamos para cada etapa, según tu base de datos de origen y otros factores. Las herramientas recomendadas incluyen productos de Google Cloud y herramientas comerciales y de código abierto de terceros. Juntas, estas herramientas te ayudan a acelerar las migraciones y reducir el riesgo.

Cualquier migración de Spanner implica las siguientes etapas principales:

  1. Evalúa la complejidad de tu migración.
  2. Migra tu esquema.
  3. Migra tu aplicación.
  4. Prueba y ajusta tu rendimiento.
  5. Migrar los datos
  6. Valida la migración.
  7. Configurar mecanismos de migración de sistemas y conmutación por error

En el diagrama a continuación, se muestra este proceso.

Diagrama del proceso de migración que muestra la evaluación, la migración de esquemas y aplicaciones, las pruebas y el ajuste, la migración de datos, la validación y la migración de sistemas.

Dentro de estas etapas, tu plan de migración puede variar ampliamente según factores como la fuente y el tamaño de la base de datos, los requisitos de tiempo de inactividad, la complejidad del código de la aplicación, el esquema de fragmentación, las funciones o transformaciones personalizadas y la estrategia de conmutación por error y replicación.

Proporcionamos guías de migración para Amazon DynamoDB, MySQL, Oracle Database y PostgreSQL. Si migras desde una de estas bases de datos, también sigue la guía relevante:

Si migras desde otra base de datos, es posible que necesites personalizaciones y herramientas adicionales que no se abordan en esta guía.

Herramientas de migración

Recomendamos usar las siguientes herramientas para ayudarte en varias etapas de la migración, según la base de datos de origen y otros factores. Algunas herramientas solo admiten ciertas bases de datos de origen. Para algunos pasos del proceso, no hay ninguna herramienta disponible, por lo que debes completar esos pasos de forma manual.

  • La herramienta de migración de Spanner es una herramienta de código abierto que realiza evaluaciones básicas y migraciones de esquemas y datos.
  • La herramienta de validación de datos (DVT) es un método de validación de datos estandarizado que compiló Google y respalda la comunidad de código abierto. Puedes integrar DVT en productos existentes de Google Cloud.
  • Datastream es un servicio de Google Cloud que te permite leer eventos de captura de datos modificados (CDC) y datos masivos de una base de datos de origen.
  • Dataflow es un servicio de Google Cloud que te ayuda a escribir grandes cantidades de datos en Spanner de manera más eficiente mediante plantillas. Estas plantillas no generan un archivo de volcado; el archivo de volcado se debe generar con las herramientas de la base de datos de origen o de terceros.

En la siguiente tabla, se resumen las herramientas principales que recomendamos para cada etapa de la migración de algunas bases de datos de origen comunes. Puedes migrar de otras bases de datos con personalizaciones.

Base de datos de origen Evalúa el alcance Migra tu esquema Cómo migrar tu app Migra tus datos Valida la migración de datos Configura la migración de sistemas y la conmutación por error
MySQL Manual Herramienta de migración de Spanner Manual Herramienta de migración de Spanner DVT Manual
PostgreSQL Manual Herramienta de migración de Spanner Manual Herramienta de migración de Spanner DVT Manual
Otras bases de datos Manual Herramienta de migración de Spanner Manual Manual DVT Manual

Evalúa la complejidad de tu migración

Para evaluar el alcance y la complejidad de la migración y planificar el enfoque, debes recopilar datos sobre la base de datos de origen, incluidos los siguientes:

  • Patrones de consulta
  • La cantidad de lógica de la aplicación que depende de las funciones de la base de datos, como los procedimientos almacenados y los activadores
  • Requisitos de hardware
  • Costo total de propiedad (TCO)

Migra tu esquema

Antes de migrar un esquema a un esquema de Spanner, evalúa la compatibilidad entre los esquemas y optimiza tu esquema para Spanner. Por ejemplo, es posible que desees cambiar claves, descartar o agregar índices, o agregar o quitar columnas de tablas existentes. Si deseas optimizar tu esquema para Spanner, consulta Prácticas recomendadas para el diseño de esquemas y Estrategias recomendadas de migración de clave primaria.

La herramienta de migración de Spanner, una herramienta de código abierto mantenida por la comunidad creada por desarrolladores de Google, compila de forma automática un esquema de Spanner a partir de tu esquema de base de datos de origen. Puedes personalizar el esquema con el asistente de esquema de la herramienta de migración de Spanner.

La herramienta de migración de Spanner transfiere esquemas y datos desde una de las siguientes ubicaciones:

  • Un archivo de volcado desde una ubicación local o Cloud Storage (MySQL, PostgreSQL, CSV)
  • Directamente desde la base de datos de origen (MySQL, PostgreSQL)

La herramienta de migración de Spanner realiza las siguientes funciones para la evaluación de esquemas, las recomendaciones y las migraciones:

  • Evaluación y recomendaciones de compatibilidad de tipos de datos
  • Edición de claves primarias y recomendaciones
  • Edición de índices secundarios y recomendaciones
  • Cómo intercalar la edición y las recomendaciones de tablas
  • Recomendaciones generales sobre el diseño de esquemas de Spanner
  • Control de versiones de esquemas
  • Modificación colaborativa del esquema

Para obtener más información sobre las migraciones de esquemas con la herramienta de migración de Spanner, consulta el archivo README.md de la herramienta de migración de Spanner.

También puedes usar la herramienta de migración de Spanner para la migración de datos.

Migra tu aplicación

Una migración de base de datos requiere diferentes controladores y bibliotecas, así como una compensación por las funciones que Spanner no admite. Para lograr una funcionalidad similar y optimizar las fortalezas de Spanner, es posible que debas cambiar el código, los flujos de aplicaciones y la arquitectura.

Estos son algunos de los cambios necesarios para migrar tu aplicación a Spanner:

Es posible que también debas realizar cambios en el manejo de las transacciones. No hay herramientas disponibles para ayudarte con esto, por lo que debes completar este paso de forma manual. Ten en cuenta lo siguiente:

  • El límite de mutaciones por confirmación es de 40,000. Cada índice secundario de una tabla es una mutación adicional por fila. Para modificar datos mediante mutaciones, consulta Inserta, actualiza y borra datos mediante mutaciones. Para modificar una gran cantidad de datos, usa DML particionado.
  • Para el nivel de aislamiento de transacciones, no se requiere control porque las transacciones de Spanner están más aisladas.
  • Debido a que Spanner es linealizable, controla la coherencia y el bloqueo de forma predeterminada.

Prueba y ajusta el esquema y el rendimiento de las aplicaciones

El ajuste del rendimiento es un proceso iterativo en el que evalúas métricas como el uso de CPU y la latencia en función de un subconjunto de datos, ajustas el esquema y la aplicación para mejorar el rendimiento y vuelves a realizar pruebas.

Por ejemplo, en tu esquema, puedes agregar o cambiar un índice o cambiar una clave primaria. En tu aplicación, puedes realizar escrituras por lotes o combinar o modificar tus consultas.

Para el tráfico de producción en particular, el ajuste de rendimiento es importante para evitar sorpresas. El ajuste del rendimiento es más eficaz cuanto más se acerque la configuración a la capacidad de procesamiento del tráfico de producción y los tamaños de los datos en tiempo real.

Para probar y ajustar el esquema y el rendimiento de las aplicaciones, sigue estos pasos:

  1. Subir un subconjunto de tus datos a una base de datos de Spanner Si deseas obtener más información, consulta Cómo migrar tus datos.
  2. Apuntar la aplicación a Spanner
  3. Para verificar la precisión, verifica los flujos básicos.
  4. Verifica que el rendimiento cumpla con tus expectativas mediante pruebas de carga en tu aplicación. Si deseas obtener ayuda para identificar y optimizar las consultas más costosas, revisa Detecta problemas de rendimiento de las consultas con las estadísticas de consultas. En particular, los siguientes factores pueden contribuir a que el rendimiento de las consultas sea deficiente:
    1. Consultas ineficientes: si quieres obtener información para escribir consultas eficientes, consulta las prácticas recomendadas de SQL.
    2. Uso de CPU alto: Para obtener más información, consulta Investiga el uso de CPU alto.
    3. Bloqueo: para reducir los cuellos de botella causados por el bloqueo de transacciones, consulta Identifica transacciones que pueden causar latencias altas.
    4. Diseño de esquema ineficiente: si el esquema no está bien diseñado, la optimización de consultas no es muy útil.
    5. Hotspots: Los hotspots en Spanner limitan la capacidad de procesamiento de escritura, en especial para las aplicaciones con una alta tasa de QPS. Para identificar hotspots o antipatrones, consulta las estadísticas de Key Visualizer en la consola de Google Cloud. Para obtener más información sobre cómo evitar hotspots, consulta Cómo elegir una clave primaria para evitar hotspots.
  5. Si modificas el esquema o los índices, repite las pruebas de precisión y rendimiento hasta que obtengas resultados satisfactorios.

Para obtener más información sobre cómo ajustar el rendimiento de la base de datos, comunícate con el equipo de asistencia de Spanner.

Migre sus datos

Después de optimizar el esquema de Spanner y migrar la aplicación, debes mover los datos a una base de datos de Spanner vacía de tamaño de producción y, luego, cambiar a la base de datos de Spanner.

Según tu base de datos de origen, es posible que puedas migrarla con un tiempo de inactividad mínimo, o tal vez necesites un tiempo de inactividad prolongado.

Para las migraciones con tiempo de inactividad mínimo y las migraciones con tiempo de inactividad prolongado, recomendamos usar Dataflow y la herramienta de migración de Spanner.

En la siguiente tabla, se muestran las diferencias entre las migraciones con tiempo de inactividad mínimo y las migraciones con más tiempo de inactividad, incluidas las fuentes, los formatos, el tamaño y la capacidad de procesamiento admitidos.

Migración con tiempo de inactividad mínimo Migración con tiempo de inactividad
Fuentes admitidas MySQL, PostgreSQL Cualquier base de datos que se pueda exportar a CSV o Avro.
Formatos de datos compatibles Conéctate directamente. Consulta Conexión directa a una base de datos MySQL. MySQL, PostgreSQL, CSV y Avro
Tamaños de bases de datos compatibles No limit No limit
Capacidad de procesamiento máxima 45 GB por hora 200 GB por hora

Migración con tiempo de inactividad mínimo

Spanner admite migraciones de tiempo de inactividad mínimo desde MySQL, PostgreSQL y Oracle Database. Una migración con tiempo de inactividad mínimo consta de dos componentes:

  • Un resumen coherente de todos los datos de la base de datos
  • La transmisión de cambios (inserciones y actualizaciones) desde esa instantánea, denominada captura de datos modificados (CDC)

Si bien las migraciones con tiempo de inactividad mínimo ayudan a proteger tus datos, el proceso implica desafíos como los siguientes:

  • Almacenar datos de CDC mientras se migra la instantánea.
  • Escribir los datos de CDC en Spanner mientras se captura la transmisión de CDC entrante
  • Garantizar que la migración de datos de CDC a Spanner sea más rápida que la transmisión de CDC entrante

Para administrar una migración con un tiempo de inactividad mínimo, la herramienta de migración de Spanner organiza los siguientes procesos por ti:

  1. Configura un bucket de Cloud Storage para almacenar eventos de CDC en la base de datos de origen mientras se avanza la migración de instantáneas.
  2. Configura un trabajo de Datastream que mueve la carga masiva de datos de CDC y transmite de forma continua datos de CDC incrementales al bucket de Cloud Storage. El perfil de conexión fuente se configura en la herramienta de migración de Spanner.
  3. Configura el trabajo de Dataflow para migrar los eventos de CDC a Spanner.

Cuando Dataflow copia la mayoría de los datos, deja de escribir en la base de datos de origen y espera a que los datos terminen de migrarse. Esto genera un breve tiempo de inactividad mientras Spanner se pone al día con la base de datos de origen. Después, la aplicación se puede realizar la transición a Spanner.

En el diagrama a continuación, se muestra este proceso.

En el diagrama, se muestra el proceso de una migración con tiempo de inactividad mínimo.

Migración con tiempo de inactividad

En el caso de las bases de datos que no son MySQL, PostgreSQL ni Oracle Database, si la base de datos puede exportarse a CSV o Avro, puedes migrar a Spanner con tiempo de inactividad. Recomendamos usar Dataflow o la herramienta de migración Spanner.

Las migraciones con tiempo de inactividad solo se recomiendan para entornos de prueba o aplicaciones que pueden manejar unas pocas horas de tiempo de inactividad. En una base de datos activa, una migración con tiempo de inactividad puede provocar la pérdida de datos.

Para realizar una migración de tiempo de inactividad, sigue estos pasos de alto nivel:

  1. Genera un archivo de volcado de los datos desde la base de datos de origen.
  2. Sube el archivo de volcado a Cloud Storage en un formato de volcado de MySQL, PostgreSQL, Avro o CSV.
  3. Carga el archivo de volcado en Spanner mediante Dataflow o la herramienta de migración de Spanner.

Generar varios archivos de volcado pequeños acelera la escritura en Spanner, ya que este puede leer varios archivos de volcado en paralelo.

Cuando generes un archivo de volcado desde la base de datos de origen, para generar una instantánea coherente de los datos, ten en cuenta lo siguiente:

  • Para evitar que los datos cambien durante la generación del archivo de volcado, antes de realizar el volcado, aplica un bloqueo de lectura en la base de datos de origen.
  • Genera el archivo de volcado mediante una réplica de lectura de la base de datos de origen con la replicación inhabilitada.

Avro es el formato preferido para una migración masiva a Spanner. Si usas Avro, considera lo siguiente:

Si usas CSV, ten en cuenta lo siguiente:

  • Para generar un volcado de CSV de los datos, usa la generación de CSV compatible con la fuente. Si los datos contienen líneas nuevas, usa un separador de línea personalizado.
  • Para importar datos de CSV, usa un trabajo de importación de Dataflow. Puedes crear tu propia plantilla de importación de Dataflow o usar una de Google Cloud. Para obtener más información, consulta Plantillas de canalización de datos de Dataflow.

Si usas MySQL o PostgreSQL, puedes usar la herramienta de migración de Spanner.

Si quieres obtener información sobre el uso de secuencias de comandos personalizadas para cargar datos en Spanner, consulta Lineamientos de rendimiento para la carga masiva.

Valida la migración de tus datos

La validación de datos es el proceso de comparar datos de las tablas fuente y de destino para garantizar que coincidan.

La herramienta de validación de datos (DVT) es una herramienta de código abierto que puede conectarse a almacenes de datos y realizar verificaciones entre la fuente y Spanner. Te recomendamos que lo uses para realizar validaciones básicas como parte de la migración, como las siguientes:

  • Comprueba que se hayan creado todas las tablas y que todas las asignaciones de esquemas sean correctas .
  • Haz coincidir el recuento de filas de cada tabla.
  • Extrae filas aleatorias para verificar que sean correctas.
  • Valida tus columnas (count, sum, avg, min, max, group by).
  • Compara las verificaciones de redundancia cíclica o las funciones hash a nivel de fila.

Para realizar validaciones más específicas, crea verificaciones personalizadas durante la migración.

Configura los mecanismos de migración de sistemas y de conmutación por error

Las migraciones suelen ser lentas y complejas. Compila en resguardos para evitar un impacto significativo en caso de un error durante la migración, lo que te permite volver a la base de datos de origen con un tiempo de inactividad mínimo.

La recomendación actual es consumir flujos de cambios para realizar la replicación inversa y escribir de vuelta en la base de datos de origen a través de una transmisión como Pub/Sub o Cloud Storage.

En el diagrama, se muestra el proceso de migración de sistemas.

La replicación inversa debe realizar las siguientes acciones:

  • Controla cambios en los tipos de datos o el contenido.
  • Revierte las transformaciones realizadas durante la migración.
  • Envía los datos al destino adecuado, teniendo en cuenta los esquemas de fragmentación en la fuente.