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 para cada etapa, según tu base de datos de origen y otros factores. Las herramientas recomendadas incluyen productos de Google Cloud y herramientas de código abierto y comerciales. En conjunto, estas herramientas te ayudan a acelerar las migraciones y reducir el riesgo.
Cualquier migración de Spanner implica las siguientes etapas principales:
- Evalúa la complejidad de tu migración.
- Migra tu esquema.
- Carga datos de muestra.
- Migra tu aplicación.
- Prueba y ajusta tu rendimiento.
- Migrar los datos
- Valida la migración.
- Configura los mecanismos de conmutación por error y de cambio.
Dentro de estas etapas, tu plan de migración puede variar mucho en función de ciertos factores como la fuente y el tamaño de tu base de datos, los requisitos de tiempo de inactividad, el código de la aplicación complejidad, esquema de fragmentación, funciones o transformaciones personalizadas y conmutación por error y la estrategia de replicación.
Herramientas de migración
Te recomendamos que uses las siguientes herramientas para ayudarte en las diferentes etapas de la migración, según tu base de datos de origen y otros factores. Solo algunas herramientas no admiten ciertas bases de datos de origen. Para algunos pasos del proceso, no se disponibles, así que completas esos pasos de forma manual.
La herramienta de migración de Spanner (SMT) es una herramienta de código abierto que puede realizar evaluaciones básicas, conversiones de esquemas y migraciones de datos.
La evaluación de migración de bases de datos (DMA) ofrece una evaluación básica para migrar PostgreSQL a Spanner.
Datastream es un servicio de Google Cloud que permite leer eventos de captura de datos modificados (CDC) y datos masivos de un y escribir en un destino especificado.
Dataflow es un servicio de Google Cloud que te ayuda a escribir una gran cantidad de datos en Spanner con eficiencia usando plantillas.
Migración de datos masiva es una plantilla de Dataflow que permite migrar grandes conjuntos de datos directamente a Spanner.
La migración con tiempo de inactividad mínimo usa Datastream y Dataflow migrar:
- Datos existentes en tu base de datos de origen
- Flujo de cambios que se realizan en tu base de datos de origen durante la migración.
Herramienta de validación de datos (DVT) es un método de validación de datos estandarizado, creado por Google y respaldado por a la comunidad de código abierto. Puede integrar la DVT en en todos los productos de Google Cloud.
Herramientas de migración para bases de datos de origen de MySQL
Si tu base de datos de origen es MySQL, puedes realizar parte de la migración inicial. con archivos de volcado de MySQL. Debes conectarte directamente a la base de datos de MySQL de origen en ejecución para completar una migración a producción.
En la siguiente tabla, se recomiendan herramientas de migración según la etapa de migración y si trabajas con un archivo de volcado o si conectas directamente tu base de datos de origen:
Etapa de migración | Archivo de volcado | Conexión directa a la base de datos de origen |
---|---|---|
Evaluación | Usa SMT con mysqldump . |
Usa SMT con mysqldump . |
Conversión de esquemas | Usa SMT con mysqldump . |
Usa SMT para configurar y convertir el esquema. |
Carga de datos de muestra |
|
Realiza una migración masiva. |
Migración de datos | No aplicable | Realiza una migración masiva y, luego, una migración con tiempo de inactividad mínimo. |
Validación de datos | No aplicable | Usa DVT. |
Configuración de la conmutación por error | No aplicable | Usa SMT para la replicación inversa. |
Herramientas de migración para bases de datos de origen de PostgreSQL
Si tu base de datos de origen usa PostgreSQL, puedes realizar algunas de las etapas de la migración con un archivo de volcado de PostgreSQL. Debes conectarte directamente a la base de datos de PostgreSQL de origen en ejecución para completar la migración.
En la siguiente tabla, se recomiendan herramientas de migración según la etapa de migración y si trabajas con un archivo de volcado o te conectas directamente desde tu base de datos de origen:
Etapa de migración | Archivo de volcado | Conexión directa a la base de datos de origen |
---|---|---|
Evaluación | Usa SMT con pg_dump . |
Usa DMA. |
Conversión de esquemas | Usa SMT con pg_dump . |
Usa SMT para configurar y convertir el esquema. |
Carga de datos de muestra |
|
Realiza una migración con tiempo de inactividad mínimo. |
Migración de datos | No aplicable | Realiza una migración con tiempo de inactividad mínimo. |
Validación de datos | No aplicable | Usa DVT. |
Conmutación por error | No aplicable | No aplicable |
Evalúa la complejidad de tu migración
Para evaluar el alcance y la complejidad de tu migración y planificar el enfoque, puedes necesitas recopilar datos sobre tu base de datos de origen, incluidos los siguientes:
- Patrones de consulta
- 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, podrías querer cambiar las claves, soltar o agregar índices, o agregar o quitar columnas de tablas existentes. Optimizar el esquema para Spanner, consulta Recomendaciones sobre el diseño del esquema y Recomendaciones estrategias de migración de clave primaria.
Herramienta de migración de Spanner, una herramienta de código abierto mantenida por la comunidad creada por desarrolladores de Google, crea automáticamente un esquema de Spanner a partir de tu 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 el esquema y los datos de una de las siguientes ubicaciones:
- Un archivo de volcado de 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 las evaluaciones, las recomendaciones y las migraciones de esquemas:
- Evaluación y recomendaciones de compatibilidad de los tipos de datos
- Recomendaciones y edición de clave primaria
- Recomendaciones y edición de índices secundarios
- Intercalación de la edición de tablas y las recomendaciones
- Recomendaciones generales para el diseño de esquemas de Spanner
- Control de versiones de esquemas
- Modificación del esquema colaborativo
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.
Carga datos de muestra
Después de crear un esquema compatible con Spanner, puedes preparar tu base de datos para que se pruebe con datos de muestra. Puedes usar la Flujo de trabajo de ETL inverso de BigQuery para cargar los datos de muestra. Para obtener más información, consulta Carga datos de muestra.
Migra tu aplicación
Una migración de bases de datos requiere diferentes controladores y bibliotecas, así como una compensación por las funciones que Spanner no admite. Para optimizar según las fortalezas de Spanner, quizás debas cambiar tu código, los flujos de la aplicación y la arquitectura.
Estos son algunos de los cambios necesarios para migrar tu aplicación a Spanner:
- Spanner no admite la ejecución de código de usuario a nivel de base de datos, por lo que debes mover los procedimientos y activadores almacenados a nivel de la base de datos en la aplicación.
- Usar las bibliotecas cliente y los asignadores relacionales de objetos de Spanner (ORM). Para obtener más información, consulta Descripción general de las APIs, las bibliotecas cliente y los controladores de ORM.
- Si necesitas traducir consultas, hazlas de forma manual o usa otro herramientas de terceros.
- Ten en cuenta el DML particionado, las transacciones de solo lectura, las marcas de tiempo de confirmación y las marcas de tiempo de lectura, y cómo pueden optimizar el rendimiento de la aplicación.
También es posible que debas realizar cambios en el manejo de transacciones. No hay herramientas. disponible para ayudarte, 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 con mutaciones, consulta Inserta, actualiza y borra datos con mutaciones. Para modificar una gran cantidad de datos, usa DML particionado.
- Para el nivel de aislamiento de transacción, no se requiere control debido a que Las transacciones de Spanner están más aisladas.
- Como Spanner es linealizable, controla la coherencia y con bloqueo de forma predeterminada.
Prueba y ajusta el esquema y el rendimiento de la aplicación
El ajuste de rendimiento es un proceso iterativo en el que evalúas métricas como el uso de CPU y la latencia según un subconjunto de tus datos, ajusta tu esquema y aplicación para mejorar el rendimiento, y volver 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 evitar sorpresas. El ajuste del rendimiento es más eficaz cuanto más cerca esté la configuración de la producción en vivo en cuanto a la capacidad de procesamiento y los tamaños de datos del tráfico.
Para probar y ajustar el esquema y el rendimiento de la aplicación, sigue estos pasos:
- Sube un subconjunto de tus datos a una base de datos de Spanner. Para obtener más información, consulta Cómo migrar tus datos.
- Apuntar la aplicación a Spanner
- Para verificar la exactitud, busca flujos básicos.
- Realiza pruebas de carga para verificar que el rendimiento cumpla con tus expectativas
en tu aplicación. Si deseas obtener ayuda para identificar y optimizar tus consultas más
costosas, consulta
Cómo detectar problemas de rendimiento de las consultas con las estadísticas de consultas.
En particular, los siguientes factores pueden contribuir
a que las consultas sean deficientes
rendimiento:
- Consultas ineficientes: para obtener información sobre cómo escribir consultas eficientes, consulta Prácticas recomendadas sobre SQL.
- Uso alto de CPU: Para obtener más información, consulta Investiga el uso alto de CPU.
- Bloqueos: Para reducir los cuellos de botella causados por el bloqueo de transacciones, consulta Cómo identificar las transacciones que podrían causar latencias altas.
- Diseño de esquema ineficiente: si el esquema no está bien diseñado, consulta la optimización no es muy útil.
- Hotspots: Los hotspots en Spanner limitan la capacidad de procesamiento de escritura, especialmente para aplicaciones con un QPS alto. Para identificar puntos de acceso o antipatrones, marca el encabezado Elementos visuales estadísticas de la consola de Google Cloud. Para obtener más información sobre cómo evitar los hotspots, consulta Elige una clave primaria para evitar los hotspots.
- Si modificas el esquema o los índices, repite las pruebas de exactitud y rendimiento hasta obtener resultados satisfactorios.
Para obtener más información sobre cómo ajustar el rendimiento de tu base de datos, comunícate con Compatibilidad con Spanner.
Migre sus datos
Después de optimizar el esquema de Spanner y migrar traslada tus datos a un contenedor vacío de tamaño Spanner y, luego, pasamos al Base de datos de Spanner.
Según la base de datos de origen, es posible que puedas migrar tu base de datos con un tiempo de inactividad mínimo o que necesites un tiempo de inactividad prolongado.
Para las migraciones con tiempo de inactividad mínimo y las migraciones con tiempo de inactividad prolongado, te 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, incluidos los orígenes, 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 pueda exportar a CSV o Avro. |
Formatos de datos compatibles | Conéctate directamente. Consulta Directamente conectarte a una base de datos MySQL. | MySQL, PostgreSQL, CSV y Avro |
Tamaños de bases de datos compatibles | Sin límite | Sin límite |
Capacidad de procesamiento máxima | 45 GB por hora | 200 GB por hora |
Migración con tiempo de inactividad mínimo
Spanner admite migraciones con tiempo de inactividad mínimo desde MySQL, PostgreSQL y Oracle Database. Una migración con tiempo de inactividad mínimo consta de dos componentes:
- Una instantánea coherente de todos los datos de la base de datos
- El flujo de cambios (inserciones y actualizaciones) desde esa instantánea conocida como captura de datos modificados (CDC)
Si bien las migraciones con tiempo de inactividad mínimo ayudan a proteger los 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 el flujo de CDC entrante
- Garantiza 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 orquesta los siguientes procesos por ti:
- Configura un bucket de Cloud Storage para almacenar eventos de CDC en la base de datos de origen mientras avanza la migración de instantáneas.
- Configura un trabajo de Datastream que mueve la masa de datos de CDC y transmite continuamente datos incrementales de CDC al bucket de Cloud Storage. Configuras el perfil de conexión fuente dentro de la herramienta de migración de Spanner.
- 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 migrar. Esto da como resultado en poco tiempo de inactividad, mientras Spanner se pone al día con la fuente en la base de datos. Luego, la aplicación puede migrar a Spanner.
En el diagrama a continuación, se muestra este proceso.
Migración con tiempo de inactividad
En el caso de bases de datos que no sean MySQL, PostgreSQL ni Oracle Database, si la base de datos puede exportar a CSV o Avro, puedes migrar a Spanner con tiempo de inactividad. Te recomendamos usar Dataflow o Herramienta de migración de Spanner.
Las migraciones con tiempo de inactividad solo se recomiendan para entornos de pruebas o aplicaciones que puedan manejar algunas horas 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 con tiempo de inactividad, sigue estos pasos generales:
- Genera un archivo de volcado de los datos de la base de datos de origen.
- Sube el archivo de volcado a Cloud Storage en formato de volcado de MySQL, PostgreSQL, Avro o CSV.
- Cargar el archivo de volcado en Spanner con Dataflow o la herramienta de migración de Spanner.
La generación de varios archivos de volcado pequeños acelera el proceso de escritura en Spanner, ya que puede leer varios archivos de volcado en paralelo.
Cuando generes un archivo de volcado desde la base de datos de origen, ten en cuenta lo siguiente para generar un resumen coherente de los datos:
- 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 con una réplica de lectura de la base de datos de origen con la replicación inhabilitada.
Formatos recomendados para la migración masiva
Avro es el formato preferido para una migración masiva a Spanner. Si Si usas Avro, ten en cuenta lo siguiente:
- Para generar un volcado de Avro de los datos, usa una herramienta como DBeam. Para obtener más información sobre la exportación a Avro, consulta Cómo exportar datos de una base de datos que no es de Spanner a archivos Avro.
- Para importar datos de Avro, usa un trabajo de importación de Dataflow. Para ver más información, consulta Importa archivos Avro desde bases de datos que no sean de Spanner a Spanner
Si usas CSV, ten en cuenta lo siguiente:
- Para generar un volcado de los datos de CSV, 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 CSV, usa un trabajo de importación de Dataflow. Puedes crear tu propia plantilla de importación de Dataflow o usar una plantilla de importación 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 deseas obtener información para usar secuencias de comandos personalizadas para cargar datos en Spanner, consulta Lineamientos de rendimiento para la carga masiva.
Valida la migración de datos
La validación de datos es el proceso de comparar los datos de las tablas de origen y de destino para garantizar que coincidan.
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 usarlo para realizar validaciones básicas como parte de tu migración, como las siguientes:
- Verifica 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 la exactitud.
- Valida tus columnas (
count
,sum
,avg
,min
,max
,group by
). - Compara cualquier verificación de redundancia cíclica o función hash a nivel de la fila.
Para realizar validaciones más específicas, crea verificaciones personalizadas durante la migración.
Configura mecanismos de transición y conmutación por error
Las migraciones suelen consumir mucho tiempo y ser complejas. Integra resguardos para evitar un impacto significativo en caso de que se produzca un error durante la migración, lo que te permitirá volver a la base de datos de origen con un tiempo de inactividad mínimo.
La recomendación actual es consumir transmisiones de cambios para realizar la replicación inversa, y volver a escribir en la base de datos de origen a través de un flujo, Pub/Sub o Cloud Storage.
La replicación inversa debe realizar las siguientes acciones:
- Controla los cambios en los tipos de datos o el contenido.
- Invierte las transformaciones que se realizaron durante la migración.
- Envía los datos al destino adecuado, teniendo en cuenta los esquemas de fragmentación en la fuente.