Cette page décrit les bonnes pratiques à suivre lorsque vous utilisez Datastream pour migrer Modèle Dataflow Datastream vers BigQuery à la solution de réplication BigQuery intégrée à Datastream.
Avant de commencer
Les instructions figurant sur cette page présupposent ce qui suit :
- Vous connaissez Docker et vous l'avez installé.
- Vous savez cloner des dépôts à partir de services tels que GitHub.
- Vous savez comment exécuter des flux dans Datastream.
- Vous avez installé la Google Cloud CLI.
Présentation de la boîte à outils de migration
Le kit de migration BigQuery Datastream est un logiciel Open Source proposé par Google Cloud. La boîte à outils vous permet de migrer depuis le modèle Datastream vers BigQuery de Dataflow, mais vous pouvez également l'utiliser lors de la migration depuis d'autres pipelines, comme expliqué dans la section Migrer depuis d'autres pipelines qui suit.
Pour migrer vos tables BigQuery à l'aide du kit, vous devez effectuer procédez comme suit:
- Créer, démarrer et suspendre un flux Datastream avec BigQuery vers votre destination.
- Exécutez la migration sur chaque table BigQuery à migrer.
- Reprenez la diffusion.
Le kit d'outils effectue les opérations suivantes :
- Récupère le schéma de la table source à l'aide de Datastream. API Discover
- Crée une table BigQuery compatible avec Datastream en fonction du schéma récupéré.
- Récupère le schéma de la table BigQuery à partir de laquelle vous effectuez la migration pour déterminer les conversions de types de données nécessaires.
- Copier toutes les lignes existantes de la table d'origine dans la nouvelle table, y compris les conversions du type de colonne approprié.
Pour en savoir plus sur la structure du kit d'outils et les arguments qu'il utilise, consultez le fichier README.md
du kit d'outils.
Configurer l'outil de migration
Pour exécuter le kit de migration à l'aide de Docker, procédez comme suit:
Clonez le dépôt et accédez-y :
git clone https://github.com/GoogleCloudPlatform/datastream-bigquery-migration-toolkit && cd datastream-bigquery-migration-toolkit
Créez l'image comme suit :
docker build -t migration-service .
Authentifiez-vous avec vos identifiants Google Cloud CLI :
docker run -ti \ --name gcloud-config migration-service gcloud auth application-default login
Définissez la propriété de votre projet Google Cloud:
docker run -ti --volumes-from gcloud-config migration-service \ gcloud config set project PROJECT_ID
Remplacez PROJECT_ID par l'identifiant de votre projet Google Cloud.
Migrer de Dataflow vers la solution intégrée Datastream
Lancez la diffusion, puis mettez-la immédiatement en pause. Cela permet à Datastream pour déterminer la position à partir de laquelle les modifications sont prises en compte avant le début de la migration.
Drainez le pipeline Datastream et Dataflow:
- Mettez en veille le flux de destination Cloud Storage existant.
- Vérifiez la métrique de latence totale pour le flux et attendez au moins aussi longtemps que la latence actuelle pour vous assurer que tous les événements en cours d'exécution sont écrits à la destination.
- Vider la tâche Dataflow
Exécutez la migration :
Exécutez la migration en mode
dry_run
. Le modedry_run
vous permet de générer l'instruction LDDCREATE TABLE
et l'instruction SQL pour copier des données, sans les exécuter:docker run -v output:/output -ti --volumes-from gcloud-config \ migration-service python3 ./migration/migrate_table.py dry_run \ --project-id PROJECT_ID \ --stream-id STREAM_ID \ --datastream-region STREAM_REGION \ --source-schema-name SOURCE_SCHEMA_NAME \ --source-table-name SOURCE_TABLE_NAME \ --bigquery-source-dataset-name BIGQUERY_SOURCE_DATASET_NAME \ --bigquery-source-table-name BIGQUERY_SOURCE_TABLE_NAME
Remplacez les éléments suivants :
- PROJECT_ID : identifiant unique de votre projet Google Cloud.
- STREAM_ID: identifiant unique de votre propriété BigQuery flux de destination.
- STREAM_REGION : emplacement de votre flux (par exemple,
us-central1
). - SOURCE_SCHEMA_NAME: nom du schéma source.
- SOURCE_TABLE_NAME : nom de la table source.
- BIGQUERY_SOURCE_DATASET_NAME: nom de l'instance BigQuery existante ensemble de données.
- BIGQUERY_SOURCE_TABLE_NAME: nom de l'instance BigQuery existante tableau.
Inspectez les fichiers
.sql
sousoutput/create_target_table
etoutput/copy_rows
. Voici les commandes SQL qui seront exécutées dans votre projet Google Cloud :docker run -v output:/output -ti migration-service find output/create_target_table \ -type f -print -exec cat {} \;
docker run -v output:/output -ti migration-service find output/copy_rows \ -type f -print -exec cat {} \;
Pour exécuter les commandes SQL, exécutez la migration en mode
full
. Le modefull
vous permet de créer une table dans BigQuery et de copier toutes les lignes de la table BigQuery existante :docker run -v output:/output -ti --volumes-from gcloud-config \ migration-service python3 ./migration/migrate_table.py full \ --project-id PROJECT_ID \ --stream-id STREAM_ID \ --datastream-region STREAM_REGION \ --source-schema-name SOURCE_SCHEMA_NAME \ --source-table-name SOURCE_TABLE_NAME \ --bigquery-source-dataset-name BIGQUERY_SOURCE_DATASET_NAME \ --bigquery-source-table-name BIGQUERY_SOURCE_TABLE_NAME
Relancez le flux mis en pause.
Ouvrez l'explorateur de journaux Google Cloud et recherchez les journaux Datastream en exécutant la requête suivante:
resource.type="datastream.googleapis.com/Stream" resource.labels.stream_id=STREAM_ID
Recherchez le journal suivant, où
%d
est un nombre :Completed writing %d records into..
Ce journal indique que le nouveau flux a chargé avec succès des données dans BigQuery. Elle ne s'affiche que s'il existe des données CDC à charger.
Migrer à partir d'autres pipelines
Le kit vous permet aussi de migrer depuis d'autres pipelines vers Datastream
la solution BigQuery intégrée.
L'ensemble d'outils peut générer des DDL CREATE TABLE
pour les tables BigQuery compatibles avec Datastream, en fonction du schéma de la base de données source à l'aide du mode dry_run
:
docker run -v output:/output -ti --volumes-from gcloud-config \
migration-service python3 ./migration/migrate_table.py dry_run \
--project-id PROJECT_ID \
--stream-id STREAM_ID \
--datastream-region STREAM_REGION \
--source-schema-name SOURCE_SCHEMA_NAME \
--source-table-name SOURCE_TABLE_NAME \
--bigquery-source-dataset-name BIGQUERY_SOURCE_DATASET_NAME \
--bigquery-source-table-name BIGQUERY_SOURCE_TABLE_NAME
Étant donné que les schémas de table BigQuery peuvent varier, il est difficile de fournir une instruction SQL universelle pour copier des lignes. Vous pouvez utiliser les schémas de la source
le répertoire LDD de la table (output/source_table_ddl
) et le LDD de la table de destination
(output/create_target_table
) pour créer une instruction SQL avec la
casting sur la source
colonnes.
Voici un exemple de format d'instruction SQL que vous pouvez utiliser:
INSERT INTO DESTINATION_TABLE (DESTINATION_COLUMN1, DESTINATION_COLUMN2...)
SELECT SOURCE_COLUMN1, SOURCE_COLUMN2
FROM SOURCE_TABLE;
Remplacez les éléments suivants :
- DESTINATION_TABLE : nom de votre table de destination dans BigQuery.
- DESTINATION_COLUMN : nom de la colonne de votre table de destination.
- SOURCE_COLUMN : nom de la colonne de votre table source.
- SOURCE_TABLE: nom de votre table source.
Limites
Le kit présente les limites suivantes:
- Les noms de colonnes dans les tables BigQuery existantes et nouvelles doivent correspondre (en ignorant les colonnes de métadonnées). La migration échoue si vous appliquez des fonctions définies par l'utilisateur (UDF) de Dataflow qui modifient les noms des colonnes des tables existantes (par exemple, en ajoutant un préfixe ou en modifiant la casse).
- Les migrations interrégionales et inter-projets ne sont pas acceptées.
- La migration fonctionne pour chaque table.
- Seules les sources Oracle et MySQL sont acceptées.