Migra un esquema y datos desde Teradata

La combinación del Servicio de transferencia de datos de BigQuery y un agente de migración especial te permite copiar los datos de una instancia de almacén de datos local de Teradata a BigQuery. En este documento, se describe el proceso paso a paso para migrar datos desde Teradata con el Servicio de transferencia de datos de BigQuery.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

  4. Habilita las API de BigQuery, BigQuery Data Transfer Service, Cloud Storage, and Pub/Sub.

    Habilita las API

  5. Crear una cuenta de servicio:

    1. En la consola de Google Cloud, ve a la página Crear cuenta de servicio.

      Ve a Crear cuenta de servicio
    2. Elige tu proyecto.
    3. Ingresa un nombre en el campo Nombre de cuenta de servicio. La consola de Google Cloud completa el campo ID de cuenta de servicio en función de este nombre.

      Opcional: en el campo Descripción de la cuenta de servicio, ingresa una descripción. Por ejemplo, Service account for quickstart.

    4. Haz clic en Crear y continuar.
    5. Otorga los siguientes roles a la cuenta de servicio: roles/bigquery.user, roles/storage.objectAdmin, roles/iam.serviceAccountTokenCreator.

      Para otorgar un rol, busca la lista Selecciona un rol y, luego, selecciona el rol.

      Para otorgar roles adicionales, haz clic en Agregar otro rol y agrega cada rol adicional.

    6. Haga clic en Continuar.
    7. Haz clic en Listo para terminar de crear la cuenta de servicio.

      No cierres la ventana del navegador. La usarás en la próxima tarea.

  6. Haz lo siguiente para crear una clave de cuenta de servicio:

    1. En la consola de Google Cloud, haz clic en la dirección de correo electrónico de la cuenta de servicio que creaste.
    2. Haga clic en Claves.
    3. Haz clic en Agregar clave y, luego, en Crear clave nueva.
    4. Haga clic en Crear. Se descargará un archivo de claves JSON en tu computadora.
    5. Haga clic en Cerrar.
  7. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  8. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

  9. Habilita las API de BigQuery, BigQuery Data Transfer Service, Cloud Storage, and Pub/Sub.

    Habilita las API

  10. Crear una cuenta de servicio:

    1. En la consola de Google Cloud, ve a la página Crear cuenta de servicio.

      Ve a Crear cuenta de servicio
    2. Elige tu proyecto.
    3. Ingresa un nombre en el campo Nombre de cuenta de servicio. La consola de Google Cloud completa el campo ID de cuenta de servicio en función de este nombre.

      Opcional: en el campo Descripción de la cuenta de servicio, ingresa una descripción. Por ejemplo, Service account for quickstart.

    4. Haz clic en Crear y continuar.
    5. Otorga los siguientes roles a la cuenta de servicio: roles/bigquery.user, roles/storage.objectAdmin, roles/iam.serviceAccountTokenCreator.

      Para otorgar un rol, busca la lista Selecciona un rol y, luego, selecciona el rol.

      Para otorgar roles adicionales, haz clic en Agregar otro rol y agrega cada rol adicional.

    6. Haga clic en Continuar.
    7. Haz clic en Listo para terminar de crear la cuenta de servicio.

      No cierres la ventana del navegador. La usarás en la próxima tarea.

  11. Haz lo siguiente para crear una clave de cuenta de servicio:

    1. En la consola de Google Cloud, haz clic en la dirección de correo electrónico de la cuenta de servicio que creaste.
    2. Haga clic en Claves.
    3. Haz clic en Agregar clave y, luego, en Crear clave nueva.
    4. Haga clic en Crear. Se descargará un archivo de claves JSON en tu computadora.
    5. Haga clic en Cerrar.
  12. La clave descargada tiene el siguiente formato:

    {
      "type": "service_account",
      "project_id": "PROJECT_ID",
      "private_key_id": "KEY_ID",
      "private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n",
      "client_email": "SERVICE_ACCOUNT_EMAIL",
      "client_id": "CLIENT_ID",
      "auth_uri": "https://accounts.google.com/o/oauth2/auth",
      "token_uri": "https://accounts.google.com/o/oauth2/token",
      "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
      "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL"
    }
    

    Asegúrate de almacenar la clave de forma segura, ya que se puede usar para autenticarse como tu cuenta de servicio. Puedes mover y cambiar el nombre de este archivo si es necesario.

Establece los permisos necesarios

Asegúrate de que la cuenta principal que crea la transferencia tenga los siguientes roles en el proyecto que contiene el trabajo de transferencia:

  • Logs Viewer (roles/logging.viewer)
  • Storage Admin (roles/storage.admin) o un rol personalizado que otorgue los siguientes permisos:
    • storage.objects.create
    • storage.objects.get
    • storage.objects.list
  • BigQuery Admin (roles/bigquery.admin) o un rol personalizado que otorga los siguientes permisos:
    • bigquery.datasets.create
    • bigquery.jobs.create
    • bigquery.jobs.get
    • bigquery.jobs.listAll
    • bigquery.transfers.get
    • bigquery.transfers.update

Cree un conjunto de datos

Crea un conjunto de datos de BigQuery para almacenar tus datos. No es necesario crear ninguna tabla.

Cree un bucket de Cloud Storage

Crea un bucket de Cloud Storage para almacenar los datos en etapa intermedia durante el trabajo de transferencia.

Prepara el entorno local

Completa las tareas de esta sección a fin de preparar el entorno local para el trabajo de transferencia.

Requisitos de la máquina local

  • El agente de migración usa una conexión JDBC con la instancia de Teradata y las API de Google Cloud. Asegúrate de que un firewall no bloquee el acceso a la red.
  • Asegúrate de tener instalado Java Runtime Environment 8 o una versión posterior.
  • Asegúrate de tener suficiente espacio de almacenamiento para el método de extracción que elegiste, como se describe en Método de extracción.
  • Si decidiste usar la extracción del Transportador paralelo de Teradata (TPT), asegúrate de que la utilidad tbuild esté instalada. Para obtener más información sobre cómo elegir un método de extracción, consulta Método de extracción.

Detalles de la conexión de Teradata

  • Asegúrate de tener el nombre de usuario y la contraseña de un usuario de Teradata con acceso de lectura a las tablas del sistema y a las tablas que se están migrando.

  • Asegúrate de conocer el nombre de host y el número de puerto para conectarte a la instancia de Teradata.

Descarga el controlador de JDBC

Descarga el archivo del controlador de JDBC terajdbc4.jar de Teradata a una máquina que pueda conectarse al almacén de datos.

Configura la variable GOOGLE_APPLICATION_CREDENTIALS

Configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS con la clave de la cuenta de servicio que descargaste en la sección Antes de comenzar.

Actualiza la regla de salida de los Controles del servicio de VPC

Agrega un proyecto administrado de Google Cloud de transferencia de datos de BigQuery (número de proyecto: 990232121269) a la regla de salida en el perímetro de los Controles del servicio de VPC.

El canal de comunicación entre el agente que se ejecuta de forma local y el Servicio de transferencia de datos de BigQuery es publicar mensajes de Pub/Sub en un tema de transferencia. El Servicio de transferencia de datos de BigQuery debe enviar comandos al agente para extraer datos, y el agente debe volver a publicar mensajes en ese servicio a fin de actualizar el estado y mostrar respuestas de extracción de datos.

Crea un archivo de esquema personalizado

Para usar un Archivo de esquema personalizado en lugar de la detección automática de esquemas, crea uno de forma manual o haz que el agente de migración cree uno por ti cuando inicialices el agente.

Si creas un archivo de esquema de forma manual y quieres usar la consola de Google Cloud para crear una transferencia, sube el archivo de esquema a un bucket de Cloud Storage en el mismo proyecto que planeas usar para la transferencia.

Descarga el agente de migración

Descarga el agente de migración a una máquina que pueda conectarse al almacén de datos. Mueve el archivo JAR del agente de migración al mismo directorio que el archivo JAR del controlador de JDBC de Teradata.

Configura una transferencia

Crea una transferencia con el Servicio de transferencia de datos de BigQuery.

Si deseas que se cree automáticamente un archivo de esquema personalizado, usa el agente de migración para configurar la transferencia.

No puedes crear una transferencia a pedido con la herramienta de línea de comandos de bq; en su lugar, debes usar la consola de Google Cloud o la API del Servicio de transferencia de datos de BigQuery.

Si creas una transferencia recurrente, te recomendamos que especifiques un archivo de esquema para que los datos de las transferencias posteriores puedan particionarse correctamente cuando se carguen en BigQuery. Sin un archivo de esquema, el Servicio de transferencia de datos de BigQuery infiere el esquema de la tabla desde los datos de origen que se transfieren, y se pierde toda la información sobre particiones, clústeres, claves primarias y el seguimiento de cambios. Además, las transferencias posteriores omiten las tablas migradas de forma previa después de la transferencia inicial. Para obtener más información sobre cómo crear un archivo de esquema, consulta Archivo de esquema personalizado.

Consola

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a la página de BigQuery

  2. Haz clic en Transferencias de datos.

  3. Haz clic en Crear transferencia.

  4. En la sección Tipo de fuente, haz lo siguiente:

    • Selecciona Migración: Teradata.
    • En Nombre de la configuración de transferencia, ingresa un nombre para la transferencia, como My Migration. El nombre visible puede ser cualquier valor que te permita identificarla con facilidad si es necesario hacerle modificaciones más tarde.
    • En Opciones de programa, puedes dejar el valor predeterminado Diario (según la hora de creación) o elegir otro momento si deseas una transferencia incremental recurrente. De lo contrario, elige Bajo demanda para una transferencia única.
    • En Configuración de destino, selecciona el conjunto de datos que corresponda.

      Vista general de una migración nueva de Teradata.

  5. En la sección Detalles de la fuente de datos, continúa configurando los detalles específicos para tu transferencia de Teradata.

    • En Tipo de base de datos, elige Teradata.
    • En Bucket de Cloud Storage, busca el nombre del bucket de Cloud Storage para la etapa de pruebas de los datos de migración. No escribas el prefijo gs://; ingresa solo el nombre del bucket.
    • En Nombre de la base de datos, ingresa el nombre de la base de datos de origen en Teradata.
    • En Patrones de nombres de tabla, ingresa un patrón para hacer coincidir los nombres de tablas en la base de datos de origen. Puedes usar expresiones regulares para especificar el patrón. Por ejemplo:

      • sales|expenses coincide con las tablas llamadas sales y expenses.
      • .* coincide con todas las tablas.
    • En Correo electrónico de la cuenta de servicio, ingresa la dirección de correo electrónico asociada con las credenciales de la cuenta de servicio que usa un agente de migración.

    • Opcional: Si usas un archivo de esquema personalizado, ingresa la ruta y el nombre de ese archivo en el campo Ruta del archivo de esquema. Si no proporcionas un archivo de esquema personalizado, BigQuery detecta automáticamente el esquema de tabla a partir de los datos de origen que se transfieren. Puedes crear tu propio archivo de esquema, como se muestra en la siguiente imagen, o puedes usar el agente de migración para ayudarte a crear un archivo de esquema. Para obtener información sobre cómo crear un archivo de esquema, consulta Inicializa el agente de migración.

  6. En el menú Cuenta de servicio, selecciona una cuenta de servicio de las cuentas de servicio asociadas a tu proyecto de Google Cloud. Puedes asociar una cuenta de servicio con tu transferencia en lugar de usar tus credenciales de usuario. Para obtener más información sobre el uso de cuentas de servicio con transferencias de datos, consulta Usa cuentas de servicio.

  7. Opcional: En la sección Opciones de notificación, haz lo siguiente:

    • Haz clic en el botón de activar o desactivar las Notificaciones por correo electrónico si deseas que el administrador de transferencias reciba una notificación por correo electrónico cuando falle una ejecución de transferencia.
    • Haz clic en el botón de activar o desactivar las Notificaciones de Pub/Sub a fin de configurar las notificaciones de ejecución de Pub/Sub para tu transferencia. En Seleccionar un tema de Cloud Pub/Sub, elige el nombre de tu tema o haz clic en Crear un tema.
  8. Haz clic en Guardar.

  9. En la página Detalles de la transferencia, haz clic en la pestaña Configuración.

  10. Toma nota del nombre del recurso de esta transferencia, ya que lo necesitarás para ejecutar el agente de migración.

bq

Cuando creas una transferencia de Cloud Storage con la herramienta de bq, la configuración de transferencia se configura para que se repita cada 24 horas. Para las transferencias a pedido, usa la consola de Google Cloud o la API del Servicio de transferencia de datos de BigQuery.

No puedes configurar las notificaciones con la herramienta de bq.

Ingresa el comando bq mk y suministra la marca de creación de transferencias --transfer_config. También se requieren las siguientes marcas:

  • --data_source
  • --display_name
  • --target_dataset
  • --params
bq mk \
--transfer_config \
--project_id=project ID \
--target_dataset=dataset \
--display_name=name \
--service_account_name=service_account \
--params='parameters' \
--data_source=data source

Aquí:

  • project ID es el ID del proyecto. Si no proporcionas --project_id para especificar un proyecto en particular, se usa el proyecto predeterminado.
  • dataset es el conjunto de datos al que deseas orientar (--target_dataset) para la configuración de transferencia.
  • name es el nombre visible (--display_name) de la configuración de transferencia. El nombre visible de la transferencia puede ser cualquier valor que te permita identificar la transferencia si necesitas modificarla más adelante.
  • service_account es el nombre de la cuenta de servicio que se usa para autenticar tu transferencia. La cuenta de servicio debe ser propiedad del mismo project_id que se usa para crear la transferencia y debe tener todos los permisos necesarios enumerados.
  • parameters contiene los parámetros (--params) para la configuración de la transferencia creada en formato JSON. Por ejemplo: --params='{"param":"param_value"}'.
    • Para las migraciones de Teradata, usa los siguientes parámetros:
      • bucket es el depósito de Cloud Storage que actuará como un área de etapa de pruebas durante la migración.
      • database_type es Teradata.
      • agent_service_account es la dirección de correo electrónico asociada a la cuenta de servicio que creaste.
      • database_name es el nombre de la base de datos de origen en Teradata.
      • table_name_patterns son los patrones para hacer coincidir los nombres de las tablas en la base de datos de origen. Puedes usar expresiones regulares para especificar el patrón. El patrón debe seguir la sintaxis de la expresión regular de Java. Por ejemplo:
        • sales|expenses coincide con las tablas llamadas sales y expenses.
        • .* coincide con todas las tablas.
  • data_source es la fuente de datos: (--data_source): on_premises.

Por ejemplo, el siguiente comando crea una transferencia de Teradata llamada My Transfer mediante el bucket de Cloud Storage mybucket y el conjunto de datos de destino mydataset. La transferencia migrará todas las tablas del almacén de datos mydatabase de Teradata y el archivo de esquema opcional es myschemafile.json.

bq mk \
--transfer_config \
--project_id=123456789876 \
--target_dataset=MyDataset \
--display_name='My Migration' \
--params='{"bucket": "mybucket", "database_type": "Teradata",
"database_name":"mydatabase", "table_name_patterns": ".*",
"agent_service_account":"myemail@mydomain.com", "schema_file_path":
"gs://mybucket/myschemafile.json"}' \
--data_source=on_premises

Después de ejecutar el comando, recibirás un mensaje como el siguiente:

[URL omitted] Please copy and paste the above URL into your web browser and follow the instructions to retrieve an authentication code.

Sigue las instrucciones y pega el código de autenticación en la línea de comandos.

API

Usa el método projects.locations.transferConfigs.create y suministra una instancia del recurso TransferConfig.

Java

Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.CreateTransferConfigRequest;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ProjectName;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.protobuf.Struct;
import com.google.protobuf.Value;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

// Sample to create a teradata transfer config.
public class CreateTeradataTransfer {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String projectId = "MY_PROJECT_ID";
    String datasetId = "MY_DATASET_ID";
    String databaseType = "Teradata";
    String bucket = "cloud-sample-data";
    String databaseName = "MY_DATABASE_NAME";
    String tableNamePatterns = "*";
    String serviceAccount = "MY_SERVICE_ACCOUNT";
    String schemaFilePath = "/your-schema-path";
    Map<String, Value> params = new HashMap<>();
    params.put("database_type", Value.newBuilder().setStringValue(databaseType).build());
    params.put("bucket", Value.newBuilder().setStringValue(bucket).build());
    params.put("database_name", Value.newBuilder().setStringValue(databaseName).build());
    params.put("table_name_patterns", Value.newBuilder().setStringValue(tableNamePatterns).build());
    params.put("agent_service_account", Value.newBuilder().setStringValue(serviceAccount).build());
    params.put("schema_file_path", Value.newBuilder().setStringValue(schemaFilePath).build());
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(datasetId)
            .setDisplayName("Your Teradata Config Name")
            .setDataSourceId("on_premises")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .setSchedule("every 24 hours")
            .build();
    createTeradataTransfer(projectId, transferConfig);
  }

  public static void createTeradataTransfer(String projectId, TransferConfig transferConfig)
      throws IOException {
    try (DataTransferServiceClient client = DataTransferServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      CreateTransferConfigRequest request =
          CreateTransferConfigRequest.newBuilder()
              .setParent(parent.toString())
              .setTransferConfig(transferConfig)
              .build();
      TransferConfig config = client.createTransferConfig(request);
      System.out.println("Cloud teradata transfer created successfully :" + config.getName());
    } catch (ApiException ex) {
      System.out.print("Cloud teradata transfer was not created." + ex.toString());
    }
  }
}

Agente de migración

De manera opcional, puedes configurar la transferencia directamente desde el agente de migración. Para obtener más información, consulta Inicializa el agente de migración.

Inicializa el agente de migración

Debes inicializar el agente de migración para una transferencia nueva. La inicialización es necesaria solo una vez para cada transferencia, ya sea recurrente o no. La inicialización solo configura el agente de migración; no inicia la transferencia.

Si vas a usar el agente de migración a fin de crear un archivo de esquema personalizado, asegúrate de tener un directorio que admita operaciones de escritura en tu directorio de trabajo con el mismo nombre que el proyecto que deseas usar para la transferencia. Aquí es donde el agente de migración crea el archivo de esquema. Por ejemplo, si trabajas en /home y configuras la transferencia en el proyecto myProject, crea el directorio /home/myProject y asegúrate de que los usuarios puedan escribir en él.

  1. Abre una sesión nueva. En la línea de comandos, ejecuta el comando de inicialización, que sigue este formato:

    java -cp \
    OS-specific-separated-paths-to-jars (JDBC and agent) \
    com.google.cloud.bigquery.dms.Agent \
    --initialize
    

    En el siguiente ejemplo, se muestra el comando de inicialización cuando el controlador de JDBC y los archivos JAR del agente de migración se encuentran en un directorio migration local:

    Unix, Linux y Mac OS

    java -cp \
    /usr/local/migration/terajdbc4.jar:/usr/local/migration/mirroring-agent.jar \
    com.google.cloud.bigquery.dms.Agent \
    --initialize
    

    Windows

    Copia todos los archivos en la carpeta C:\migration (o ajusta las rutas en el comando) y, luego, ejecuta lo siguiente:

    java -cp C:\migration\terajdbc4.jar;C:\migration\mirroring-agent.jar com.google.cloud.bigquery.dms.Agent --initialize
    
  2. Cuando se te solicite, configura las siguientes opciones:

    1. Elige si deseas guardar la plantilla del Transportador paralelo de Teradata (TPT) en el disco. Si planeas usar el método de extracción de TPT, puedes modificar la plantilla guardada con parámetros que se ajusten a tu instancia de Teradata.
    2. Escribe la ruta de acceso a un directorio local que el trabajo de transferencia puede usar para la extracción de archivos. Asegúrate de tener el espacio de almacenamiento mínimo recomendado como se describe en Método de extracción.
    3. Escribe el nombre de host de la base de datos.
    4. Escribe el puerto de la base de datos.
    5. Elige si deseas usar el Transportador paralelo de Teradata (TPT) como método de extracción.
    6. Opcional: Escribe la ruta de acceso a un archivo de credenciales de la base de datos.
    7. Elige si deseas especificar un nombre de configuración del Servicio de transferencia de datos de BigQuery.

      Si estás inicializando el agente de migración para una transferencia que ya configuraste, haz lo siguiente:

      1. Escribe el Nombre del recurso de la transferencia. Puedes encontrarlo en la pestaña Configuración de la página Detalles de la transferencia.
      2. Cuando se te solicite, escribe una ruta de acceso y el nombre de archivo para el archivo de configuración del agente de migración que se creará. Haz referencia a este archivo cuando ejecutes el agente de migración para iniciar la transferencia.
      3. Omite los pasos restantes.

      Si usas el agente de migración a fin de configurar una transferencia, presiona Intro para pasar al siguiente mensaje.

    8. Escribe el ID del proyecto de Google Cloud.

    9. Ingresa el nombre de la base de datos de origen en Teradata.

    10. Ingresa un patrón para hacer coincidir los nombres de tablas en la base de datos de origen. Puedes usar expresiones regulares para especificar el patrón. Por ejemplo:

      • sales|expenses coincide con las tablas llamadas sales y expenses.
      • .* coincide con todas las tablas.
    11. Opcional: Escribe la ruta de acceso a un archivo de esquema JSON local. Esto es muy recomendable para las transferencias recurrentes.

      Si no usas un archivo de esquema o si deseas que el agente de migración cree uno por ti, presiona Intro para pasar al siguiente mensaje.

    12. Elige si deseas crear un archivo de esquema nuevo.

      Si deseas crear un archivo de esquema, haz lo siguiente:

      1. Tipo yes.
      2. Escribe el nombre de usuario de un usuario de Teradata que tenga acceso de lectura a las tablas del sistema y las tablas que deseas migrar.
      3. Escribe la contraseña para ese usuario.

        El agente de migración crea el archivo de esquema y muestra como resultado su ubicación.

      4. Modifica el archivo de esquema con el fin de marcar las particiones, los clústeres, las claves primarias y las columnas de seguimiento de cambios, y también a fin de verificar que deseas usar este esquema para la configuración de transferencia. Consulta Archivo de esquema personalizado para obtener sugerencias.

      5. Presiona Enter para pasar al siguiente mensaje.

      Si no deseas crear un archivo de esquema, escribe no.

    13. Escribe el nombre del bucket de destino de Cloud Storage para almacenar los datos de migración en etapa intermedia antes de cargarlos en BigQuery. Si hiciste que el agente de migración creara un archivo de esquema personalizado, también se subirá a este bucket.

    14. Ingresa el nombre del conjunto de datos de destino en BigQuery.

    15. Escribe un nombre visible para la configuración de transferencia.

    16. Escribe una ruta de acceso y un nombre de archivo para el archivo de configuración del agente de migración que se creará.

  3. Después de ingresar todos los parámetros solicitados, el agente de migración creará un archivo de configuración y lo enviará a la ruta local que especificaste. Consulta la siguiente sección para obtener más detalle del archivo de configuración.

Archivo de configuración del agente de migración

El archivo de configuración creado en el paso de inicialización es similar a este ejemplo:


{
  "agent-id": "81f452cd-c931-426c-a0de-c62f726f6a6f",
  "transfer-configuration": {
    "project-id": "123456789876",
    "location": "us",
    "id": "61d7ab69-0000-2f6c-9b6c-14c14ef21038"
  },
  "source-type": "teradata",
  "console-log": false,
  "silent": false,
  "teradata-config": {
    "connection": {
      "host": "localhost"
    },
    "local-processing-space": "extracted",
    "database-credentials-file-path": "",
    "max-local-storage": "50GB",
    "gcs-upload-chunk-size": "32MB",
    "use-tpt": true,
    "transfer-views": false,
    "max-sessions": 0,
    "spool-mode": "NoSpool",
    "max-parallel-upload": 4,
    "max-parallel-extract-threads": 1,
    "session-charset": "UTF8",
    "max-unload-file-size": "2GB"
  }
}
   

Opciones de trabajo de transferencia en el archivo de configuración del agente de migración

  • transfer-configuration: Información sobre esta configuración de transferencia en BigQuery.
  • teradata-config: Información específica para esta extracción de Teradata. En ella, se incluye lo siguiente:

    • connection: Información sobre el nombre de host y el puerto.
    • local-processing-space: La carpeta de extracción en la que el agente extraerá los datos de la tabla antes de subirla a Cloud Storage.
    • database-credentials-file-path: (opcional) La ruta a un archivo que contiene credenciales para conectarse a la base de datos de Teradata de forma automática. El archivo debe contener dos líneas para las credenciales. Puedes usar un nombre de usuario y una contraseña, como se muestra en el siguiente ejemplo:
      username=abc
      password=123
      
      También puedes usar un secreto de SecretManager en su lugar:
      username=abc
      secret_resource_id=projects/my-project/secrets/my-secret-name/versions/1
      
      Cuando usas un archivo de credenciales, asegúrate de controlar el acceso a la carpeta en la que lo guardaste en el sistema de archivos local, ya que no se encriptará. Si no se proporciona ninguna ruta de acceso, se te solicitará un nombre de usuario y una contraseña cuando inicies un agente.
    • max-local-storage: La cantidad máxima de almacenamiento local que se usará para la extracción en el directorio de etapa de pruebas especificado. El valor predeterminado es 50GB. El formato admitido es numberKB|MB|GB|TB.

      En todos los modos de extracción, los archivos se borran de tu directorio de etapa de pruebas local después de que se suben a Cloud Storage.

    • use-tpt: Dirige el agente de migración para que use el Transportador paralelo de Teradata (TPT) como método de extracción.

      Para cada tabla, el agente de migración genera una secuencia de comandos de TPT, inicia un proceso tbuild y espera a que se complete. Una vez que el proceso tbuild se completa, el agente enumera y sube los archivos extraídos a Cloud Storage y, luego, borra la secuencia de comandos de TPT. Para obtener más información, consulta Método de extracción.

    • transfer-views: Dirige el agente de migración para que también transfiera datos desde vistas. Usa esto solo cuando necesites personalizar los datos durante la migración. En otros casos, migra las vistas a las vistas de BigQuery. Esta opción tiene los siguientes requisitos previos:

      • Solo puedes usar esta opción con la versión 16.10 de Teradata o una superior.
      • Una vista debe tener una columna de números enteros “particionada” que apunte a un ID de partición para la fila en cuestión de la tabla subyacente.
    • max-sessions: Especifica la cantidad máxima de sesiones que usa el trabajo de exportación (ya sea de FastExport o TPT). Si se establece en 0, la base de datos de Teradata determinará la cantidad máxima de sesiones para cada trabajo de exportación.

    • gcs-upload-chunk-size: Se sube un archivo grande a Cloud Storage en fragmentos. Este parámetro, junto con max-parallel-upload, se usa para controlar cuántos datos se suben a Cloud Storage al mismo tiempo. Por ejemplo, si gcs-upload-chunk-size es 64 MB y max-parallel-upload es 10 MB, en teoría, un agente de migración puede subir 640 MB (64 MB * 10) de datos al mismo tiempo. Si el fragmento no se sube, se debe reintentar todo el fragmento. El tamaño del fragmento debe ser pequeño.

    • max-parallel-upload: Este valor determina la cantidad máxima de subprocesos que usa el agente de migración para subir archivos a Cloud Storage. Si no se especifica, se establece de forma predeterminada en la cantidad de procesadores disponibles para la máquina virtual de Java. La regla general es elegir el valor según la cantidad de núcleos que tienes en la máquina que ejecuta el agente. Por lo tanto, si tienes n núcleos, la cantidad óptima de subprocesos debe ser n. Si los núcleos tienen hipersubprocesos, la cantidad óptima debe ser (2 * n). También existen otras opciones de configuración, como el ancho de banda de red, que debes tener en cuenta cuando ajustas max-parallel-upload. Ajustar este parámetro puede mejorar el rendimiento de las cargas a Cloud Storage.

    • spool-mode: En la mayoría de los casos, el modo NoSpool es la mejor opción. NoSpool es el valor predeterminado en la configuración del agente. Puedes cambiar este parámetro si alguna de las desventajas de NoSpool se aplica a tu caso.

    • max-unload-file-size: Determina el tamaño máximo del archivo extraído. Este parámetro no se aplica a las extracciones de TPT.

    • max-parallel-extract-threads: Esta configuración solo se usa en el modo FastExport. Determina la cantidad de subprocesos paralelos que se usan para extraer los datos de Teradata. Ajustar este parámetro podría mejorar el rendimiento de la extracción.

    • tpt-template-path: Usa esta configuración para proporcionar una secuencia de comandos de extracción de TPT personalizada como entrada. Puedes usar este parámetro para aplicar transformaciones a tus datos de migración.

    • schema-mapping-rule-path: La ruta a un archivo de configuración que contiene una asignación de esquema para anular las reglas de asignación predeterminadas (opcional). Algunos tipos de asignación solo funcionan con el modo Transportador paralelo de Teradata (TPT).

      Ejemplo: Asignación del tipo TIMESTAMP de Teradata al tipo DATETIME de BigQuery:

      {
      "rules": [
        {
          "database": {
              "name": "database.*",
              "tables": [
                 {
                   "name": "table.*"
                 }
              ]
          },
          "match": {
            "type": "COLUMN_TYPE",
            "value": "TIMESTAMP"
          },
          "action": {
            "type": "MAPPING",
            "value": "DATETIME"
          }
        }
      ]
      }
      

      Atributos:

      • database: name es una expresión regular para las bases de datos que se incluirán (opcional). Todas las bases de datos se incluyen de forma predeterminada.
      • tables: Contiene un array de tablas (opcional). name es una expresión regular para las tablas que se incluirán. Todas las tablas se incluyen de forma predeterminada.
      • match: (Obligatorio)
        • Valores admitidos de type: COLUMN_TYPE
        • Valores admitidos de value: TIMESTAMP, DATETIME
      • action: (Obligatorio)
        • Valores admitidos de type: MAPPING
        • Valores admitidos de value: TIMESTAMP, DATETIME
    • compress-output: (Opcional) determina si los datos deben comprimirse antes de almacenarse en Cloud Storage. Esto solo se aplica en modo tpt. De forma predeterminada, este valor es false.

Ejecuta el agente de migración

Después de inicializar el agente de migración y crear el archivo de configuración, sigue estos pasos para ejecutar el agente y, luego, iniciar la migración:

  1. Para ejecutar el agente, especifica las rutas de acceso al controlador de JDBC, el agente de migración y el archivo de configuración que se creó en el paso de inicialización anterior.

    java -cp \
    OS-specific-separated-paths-to-jars (JDBC and agent) \
    com.google.cloud.bigquery.dms.Agent \
    --configuration-file=path to configuration file
    

    Unix, Linux y Mac OS

    java -cp \
    /usr/local/migration/Teradata/JDBC/terajdbc4.jar:mirroring-agent.jar \
    com.google.cloud.bigquery.dms.Agent \
    --configuration-file=config.json
    

    Windows

    Copia todos los archivos en la carpeta C:\migration (o ajusta las rutas en el comando) y, luego, ejecuta lo siguiente:

    java -cp C:\migration\terajdbc4.jar;C:\migration\mirroring-agent.jar com.google.cloud.bigquery.dms.Agent --configuration-file=config.json
    

    Si estás listo para continuar con la migración, presiona Enter, y el agente continuará si la ruta de clase proporcionada durante la inicialización es válida.

  2. Cuando se te solicite, ingresa el nombre de usuario y la contraseña para la conexión de la base de datos. Si el nombre de usuario y la contraseña son válidos, comenzará la migración de datos.

    Opcional En el comando para iniciar la migración, también puedes usar una marca que pasa un archivo de credenciales al agente, en lugar de ingresar el nombre de usuario y contraseña cada vez. Consulta el parámetro opcional database-credentials-file-path en el archivo de configuración del agente para obtener más información. Cuando uses un archivo de credenciales, toma las medidas adecuadas para controlar el acceso a la carpeta en la que lo almacenas en el sistema de archivos local, ya que no se encriptará.

  3. Deja esta sesión abierta hasta que se complete la migración. Si creaste una transferencia de migración recurrente, mantén esta sesión abierta de manera indefinida. Si se interrumpe esta sesión, fallan las ejecuciones de transferencia actuales y futuras.

  4. Supervisa periódicamente si el agente está en ejecución. Si una ejecución de transferencia está en curso y ningún agente responde en un plazo de 24 horas, la ejecución de transferencia falla.

  5. Si el agente de migración deja de funcionar mientras la transferencia está en curso o programada, la consola de Google Cloud muestra el estado del error y te solicita que reinicies el agente. Si deseas volver a iniciar el agente de migración, continúa desde el principio de esta sección y ejecuta el agente de migración con el comando para ejecutar el agente de migración. No es necesario repetir el comando de inicialización. La transferencia se reanuda desde el momento en que las tablas no se completaron.

Realiza un seguimiento del progreso de la migración

Puedes ver el estado de la migración en la consola de Google Cloud. También puedes configurar notificaciones de Pub/Sub o correo electrónico. Consulta las notificaciones del Servicio de transferencia de datos de BigQuery.

El Servicio de transferencia de datos de BigQuery programa y, luego, inicia una ejecución de transferencia en función de un programa especificado durante la creación de la configuración de transferencia. Es importante que el agente de migración esté en ejecución cuando esté activa la ejecución de una transferencia. Si no hay actualizaciones del agente en un plazo de 24 horas, la ejecución de transferencia falla.

Ejemplo de estado de migración en la consola de Google Cloud:

Estado de migración

Actualiza el agente de migración

Si hay una versión nueva del agente de migración disponible, debes actualizar el agente de migración de forma manual. Para recibir avisos sobre el Servicio de transferencia de datos de BigQuery, suscríbete a las notas de la versión.

¿Qué sigue?