Importa datos de bases de datos ajenas a Cloud Spanner

En esta página, se describe cómo preparar archivos Avro que se exportaron de bases de datos que no son de Cloud Spanner y, luego, importarlos a Cloud Spanner. Si deseas importar una base de datos de Cloud Spanner que ya exportaste, consulta la página sobre cómo importar archivos Avro de Cloud Spanner .

En el proceso, se usa Dataflow, que importa datos de un depósito de Cloud Storage que contiene un archivo de manifiesto JSON y un conjunto de archivos Avro.

Antes de comenzar

Para importar una base de datos de Cloud Spanner, primero debes habilitar las API de Cloud Spanner, Cloud Storage, Compute Engine y Dataflow:

Habilita lasAPI

También necesitas cuota suficiente y los permisos necesarios de Cloud IAM.

Requisitos de la cuota

Los requisitos de la cuota para los trabajos de importación, por parte del servicio de Google Cloud, son los que se mencionan a continuación:

  • Cloud Spanner: Debes tener nodos suficientes para admitir la cantidad de datos que estás importando. No se requieren nodos adicionales con el fin de importar una base de datos, aunque es posible que debas agregar más nodos para que el trabajo se complete en un período razonable. Consulta la sección sobre optimización de trabajos para obtener más detalles.
  • Cloud Storage: Para importar, debes tener un depósito que contenga los archivos exportados con anterioridad. No es necesario que establezcas un tamaño para tu depósito.
  • Dataflow: Los trabajos de importación están sujetos a la misma CPU, uso del disco y dirección IP que las cuotas de Compute Engine, al igual que otros trabajos de Dataflow.
  • Compute Engine: Antes de ejecutar el trabajo de importación, debes establecer las cuotas iniciales para Compute Engine, que son usadas por Dataflow. Estas cuotas representan la cantidad máxima de recursos que permites que Dataflow use para tu trabajo. Los valores iniciales recomendados se mencionan a continuación:

    • CPU: 200
    • Direcciones IP en uso: 200
    • Disco persistente estándar: 50 TB

    Por lo general, no es necesario realizar ningún otro ajuste. Dataflow proporciona ajuste de escala automático para que solo pagues por los recursos que sí se usan durante la importación. Si tu trabajo puede hacer uso de más recursos, la IU de Dataflow muestra un ícono de advertencia. El trabajo debería completarse incluso si hay un ícono de advertencia.

Requisitos de Cloud IAM

Para importar una base de datos, también necesitas tener funciones de Cloud IAM con permisos suficientes para usar todos los servicios involucrados en un trabajo de importación. Para obtener información sobre cómo otorgar permisos y funciones, consulta la página sobre cómo aplicar funciones de IAM.

Para importar una base de datos, necesitas las funciones mencionadas a continuación:

  • A nivel de proyecto de Google Cloud:
    • Visualizador de Cloud Spanner
    • Administrador de Dataflow
    • Administrador de almacenamiento
  • En la base de datos de Cloud Spanner o a nivel de la instancia, o a nivel de proyecto de Google Cloud:
    • Lector de Cloud Spanner
    • Administrador de base de datos de Cloud Spanner (obligatorio solo para trabajos de importación)

Exporta datos desde una base de datos ajena a Cloud Spanner hacia archivos Avro

El proceso de importación incluye datos de archivos Avro ubicados en un depósito de Cloud Storage. Puedes exportar datos en formato Avro desde cualquier fuente y puedes usar cualquier método disponible para hacerlo.

Cuando exportes tus datos, ten en cuenta lo que se menciona a continuación:

  • Puedes exportar mediante el uso de cualquiera de los tipos primitivos de Avro y el tipo de arreglo complejo.
  • Cada columna de tus archivos Avro debe usar uno de los siguientes tipos de columnas:

    • ARRAY
    • BOOL
    • BYTES
    • DOUBLE
    • FLOAT
    • INT
    • LONG*
    • STRING*

    * Puedes importar un LONG si almacenas una marca de tiempo o un STRING si almacenas una marca de tiempo como si fuera una TIMESTAMP de Cloud Spanner. Consulta las asignaciones recomendadas que aparecen a continuación para obtener más información.

  • No es necesario incluir ni generar metadatos cuando se exportan los archivos Avro.

  • No es necesario que sigas ninguna convención de nombres específica para tus archivos.

Si no exportas tus archivos directamente a Cloud Storage, debes subir los archivos Avro a un depósito de Cloud Storage. Para obtener instrucciones detalladas, consulta Subida de objetos.

Crea el esquema para tu base de datos de Cloud Spanner

Antes de ejecutar la importación, debes crear la tabla de destino en Cloud Spanner y definir su esquema.

Debes crear un esquema que use el tipo de columna adecuado para cada columna en los archivos Avro.

Tipo de columna Avro Tipo de columna de Cloud Spanner
ARRAY ARRAY
BOOL BOOL
BYTES BYTES
DOUBLE FLOAT64
FLOAT FLOAT64
INT INT64
LONG

INT64

TIMESTAMP (cuando LONG representa una marca de tiempo de la cantidad de microsegundos desde 01-01-1970 00:00:00 UTC)

STRING

STRING

TIMESTAMP (cuando STRING representa una marca de tiempo en el formato canónico para consultas de SQL)

Te recomendamos que crees índices secundarios después de importar tus datos a Cloud Spanner, en lugar de definir al principio el esquema de la tabla.

Crea un archivo spanner-export.json

También debes crear un archivo llamado spanner-export.json en tu depósito de Cloud Storage. Este archivo contiene un arreglo de tables que muestra el nombre y las ubicaciones de los archivos de datos de cada tabla.

El contenido del archivo tiene el formato que se menciona a continuación:

{
  "tables": [
   {
    "name": "TABLE1",
    "dataFiles": [
      "RELATIVE/PATH/TO/TABLE1_FILE1",
      "RELATIVE/PATH/TO/TABLE1_FILE2"
    ]
   },
   {
    "name": "TABLE2",
    "dataFiles": ["RELATIVE/PATH/TO/TABLE2_FILE1"]
   }
  ]
}

Ejecuta un trabajo de importación de Dataflow con gcloud

Si deseas iniciar el trabajo de importación, sigue las instrucciones para usar la herramienta de línea de comandos de gcloud a fin de ejecutar un trabajo con la plantilla de Avro a Cloud Spaner.

Después de iniciar un trabajo de importación, puedes ver los detalles del trabajo en Cloud Console.

Una vez finalizado el trabajo de importación, agrega los índices secundarios necesarios.

Elige una región para tu trabajo de importación

Se recomienda elegir una región diferente en función de si el depósito de Cloud Storage usa una configuración regional o multirregional. Para evitar los cargos de salida de red, elige una región que se superponga con la ubicación del depósito de Cloud Storage.

Ubicaciones de depósitos regionales

Si la ubicación de tu depósito de Cloud Storage es regional, elige la misma región para tu trabajo de importación si esa región está disponible a fin de aprovechar el uso gratuito de red.

Si la misma región no está disponible, se aplicarán cargos de salida. Consulta los precios de salida de red de Cloud Storage para elegir una región que incurrirá en los cargos de salida de red más bajos.

Ubicaciones del depósito multirregional

Si la ubicación de tu depósito de Cloud Storage es multirregional, elige una de las regiones que conforman la ubicación multirregional para aprovechar el uso gratuito de red.

Si una región superpuesta no está disponible, se aplicarán los cargos de salida. Consulta los precios de salida de red de Cloud Storage para elegir una región que incurrirá en los cargos de salida de red más bajos.

Visualiza o soluciona problemas de trabajos en la IU de Dataflow

Después de iniciar un trabajo de importación, podrás ver los detalles del trabajo, incluidos los registros, en la sección de Dataflow de Cloud Console.

Visualiza los detalles del trabajo de Dataflow

Para ver los detalles de un trabajo en ejecución, sigue estos pasos:

  1. Navega hasta la página Detalles de la base de datos de la base de datos.
  2. Haz clic en Ver detalles del trabajo en Dataflow en el mensaje de estado del trabajo, que tiene un aspecto similar al que se muestra a continuación:

    Mensaje de estado del trabajo en curso

    En Cloud Console, se muestran los detalles del trabajo de Dataflow.

Para ver un trabajo que ejecutaste hace poco tiempo, haz lo siguiente:

  1. Navega hasta la página Detalles de la base de datos de la base de datos.
  2. Haz clic en la pestaña Importar o exportar.
  3. Haz clic en el nombre de tu trabajo en la lista.

    En Cloud Console, se muestran los detalles del trabajo de Dataflow.

Para ver un trabajo que ejecutaste hace más de una semana, sigue estos pasos:

  1. Ve a la página de trabajos de Dataflow en Cloud Console.

    Ir a la página de trabajos

  2. Busca tu trabajo en la lista y haz clic en su nombre.

    En Cloud Console, se muestran los detalles del trabajo de Dataflow.

Visualiza los registros de Dataflow para tu trabajo

Para ver los registros de un trabajo de Dataflow, navega hasta la página de detalles del trabajo como se describió con anterioridad y, luego, haz clic en Registros a la derecha del nombre del trabajo.

Si un trabajo falla, busca errores en los registros. Si hay errores, el recuento de errores se muestra junto a los Registros:

Ejemplo de recuento de errores junto al botón Registros

Para ver los errores del trabajo, sigue estos pasos:

  1. Haz clic en el recuento de errores junto a los Registros.

    En Cloud Console, se muestran los registros del trabajo. Es posible que debas desplazarte para ver los errores.

  2. Ubica las entradas con el ícono de error Ícono de error.

  3. Haz clic en una entrada de registro individual para expandir su contenido.

Para obtener más información sobre cómo solucionar problemas de trabajos de Dataflow, consulta Solución de problemas y depuración.

Optimiza los trabajos de importación de ejecución lenta

Si seguiste las sugerencias de la configuración inicial, por general, no se debe realizar ningún otro ajuste. Si tu trabajo se ejecuta a poca velocidad, existen otras optimizaciones que puedes probar:

  • Optimiza el trabajo y la ubicación de datos: Ejecuta tu trabajo de Dataflow en la misma región donde se encuentran tu instancia de Cloud Spanner y el depósito de Cloud Storage.

  • Garantiza recursos suficientes de Dataflow: Si las cuotas relevantes de Compute Engine limitan los recursos de tu trabajo de Dataflow, la página de Dataflow del trabajo en Google Cloud Console muestra un ícono de advertencia Ícono de advertencia y mensajes de registro:

    Captura de pantalla de la advertencia del límite de cuota

    En esta situación, aumentar las cuotas para CPU, direcciones IP en uso y disco persistente estándar podría reducir el tiempo de ejecución del trabajo, pero puede que genere más cargos de Compute Engine.

  • Comprueba el uso de CPU de Cloud Spanner: Si ves que el uso de CPU de la instancia supera el 65%, puedes aumentar la cantidad de nodos en esa instancia. Los nodos adicionales agregan más recursos de Cloud Spanner, por lo que el trabajo debería acelerarse, pero se te cobrarán más cargos de Cloud Spanner.

Factores que afectan el rendimiento del trabajo de importación

Varios factores influyen en el tiempo que tarda en completarse un trabajo de importación.

  • El tamaño de la base de datos de Cloud Spanner: Procesar más datos requiere más tiempo y recursos.

  • El esquema de la base de datos de Cloud Spanner (incluidos los índices): La cantidad de tablas, el tamaño de las filas y la cantidad de índices secundarios influyen en el tiempo necesario para ejecutar un trabajo de importación.

  • La ubicación de los datos: Los datos se transfieren entre Cloud Spanner y Cloud Storage mediante Dataflow. Lo ideal es que los tres componentes se encuentren en la misma región. Si los componentes no están en la misma región, mover los datos entre las regiones hace que la ejecución del trabajo sea más lenta.

  • La cantidad de trabajadores de Dataflow: Mediante el ajuste de escala automático, Dataflow elige la cantidad de trabajadores en función de la cantidad de trabajo que se debe realizar. Sin embargo, la cantidad de trabajadores estará limitada por las cuotas de las CPU, las direcciones IP en uso y el disco persistente estándar. La IU de Dataflow muestra un ícono de advertencia si se alcanzan los límites de cuota. En esta situación, el progreso es más lento, pero el trabajo se completará de todos modos.

  • La carga existente en Cloud Spanner: Un trabajo de importación agrega una carga de CPU significativa en una instancia de Cloud Spanner. Si la instancia ya tiene una carga sustancial existente, el trabajo se ejecuta más lento.

  • La cantidad de nodos de Cloud Spanner: Si el uso de CPU de la instancia supera el 65%, el trabajo se ejecutará más lento.