Migrer une table CDC vers une autre région

Cette page décrit les bonnes pratiques à suivre si vous avez configuré la réplication Datastream vers BigQuery, mais que vous avez configuré l'ensemble de données de destination dans une région incorrecte. Vous souhaitez ensuite déplacer l'ensemble de données vers une autre région (ou un emplacement multirégional) sans avoir à resynchroniser toutes les données de la base de données source vers BigQuery.

Avant de commencer

Avant de commencer la migration de vos données vers une autre région, tenez compte des points suivants:

  • La migration prend du temps. Vous devez temporairement suspendre le flux pendant l'opération. Pour préserver l'intégrité des données, la base de données source doit conserver les journaux des modifications lorsque le flux est suspendu. Pour estimer le temps de pause du flux, combinez la valeur de max_staleness dans l'ensemble de données et l'opération de fusion la plus longue :
    • Pour en savoir plus sur le temps nécessaire pour que les opérations de fusion se terminent, consultez la section Valeur max_staleness de table recommandée.
    • Pour connaître la valeur max_staleness maximale de l'ensemble de données, consultez la section Déterminer la valeur max_staleness actuelle d'une table et ajustez la requête en fonction de vos besoins.
    • Si la suspension estimée est trop longue pour votre base de données source, vous pouvez envisager de réduire temporairement la valeur de max_staleness pour les tables de l'ensemble de données.
  • Vérifiez que l'utilisateur effectuant la migration dispose de suffisamment de ressources BigQuery dans la région de destination (réservation de requête et réservation en arrière-plan). Pour en savoir plus sur les réservations, consultez la section Attributions de réservations.
  • Vérifiez que l'utilisateur effectuant la migration dispose des autorisations suffisantes pour effectuer cette opération, par exemple les contrôles Identity and Access Management (IAM) ou VPC Service Controls.

Procédure de migration

Pour lancer la migration d'un ensemble de données, utilisez la réplication des données BigQuery:

  1. Dans la console Google Cloud, accédez à la page BigQuery Studio.

    Accéder à BigQuery Studio

  2. Créez une instance répliquée d'ensemble de données BigQuery dans la nouvelle région:

    ALTER SCHEMA DATASET_NAME
    ADD REPLICA 'NEW_REGION'
    OPTIONS(location='NEW_REGION');
    

    Remplacez les éléments suivants :

    • DATASET_NAME: nom de l'ensemble de données que vous souhaitez créer.
    • NEW_REGION: nom de la région dans laquelle vous souhaitez créer votre ensemble de données. Par exemple, region-us.
  3. Surveillez la progression de la migration et attendez que le filigrane de copie dans l'instance dupliquée soit à quelques minutes de l'instance principale. Vous pouvez exécuter cette requête sur BigQuery INFORMATION_schema pour vérifier la progression de la migration:

    SELECT
    catalog_name as project_id,
    schema_name as dataset_name,
    replication_time as dataset_replica_staleness
    FROM
    'NEW_REGION'.INFORMATION_SCHEMA.SCHEMATA_REPLICAS
    WHERE
    catalog_name = PROJECT_ID
    AND schema_name = DATASET_NAME
    AND location = NEW_REGION;
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • DATASET_NAME : nom de votre ensemble de données.
    • DATASET_REPLICA_STALENESS: configuration d'obsolescence des tables dans l'instance répliquée de l'ensemble de données que vous avez créée.
    • NEW_REGION: région dans laquelle vous avez créé votre ensemble de données.
  4. Suspendez le flux Datastream existant. Pour en savoir plus, consultez Suspendre le flux.

  5. Attendez que le flux se draine et notez l'heure à laquelle il est passé à l'état PAUSED.

  6. Vérifiez que les dernières modifications de la CDC ont été appliquées à la table BigQuery en vérifiant le upsert_stream_apply_watermark de la table. Exécutez la requête suivante et assurez-vous que le code temporel du filigrane est 10 minutes plus tard, puis lorsque le flux a été mis en pause:

    SELECT table_name, upsert_stream_apply_watermark
    FROM DATASET_NAME.INFORMATION_SCHEMA.TABLES
    

    Pour n'exécuter la requête que pour une table spécifique, ajoutez la clause WHERE suivante:

    WHERE table_name = 'TABLE_NAME'
    

    Remplacez les éléments suivants :

    • DATASET_NAME : nom de votre ensemble de données.
    • TABLE_NAME : Facultatif. La table pour laquelle vous souhaitez vérifier le upsert_stream_apply_watermark.
  7. Utilisez la requête de l'étape 3 pour vérifier que le nouveau filigrane de copie de région est postérieur à la upsert_stream_apply_watermark capturée à l'étape 6.

  8. Vous pouvez également comparer manuellement plusieurs tables de l'ensemble de données principal de la région d'origine avec celles de la nouvelle région pour vérifier que toutes les données sont correctement copiées.

  9. Promouvez l'instance répliquée de l'ensemble de données BigQuery en exécutant la commande suivante dans BigQuery Studio:

    ALTER SCHEMA DATASET_NAME
    SET OPTIONS(primary_replica = 'NEW_REGION');
    

    Remplacez les éléments suivants :

    • DATASET_NAME : nom de votre ensemble de données.
    • NEW_REGION: région dans laquelle vous avez créé votre ensemble de données.
  10. Si vous n'avez plus besoin de l'ensemble de données d'origine (désormais l'instance répliquée) et ne souhaitez pas payer de frais supplémentaires, accédez à BigQuery Studio et supprimez l'ensemble de données BigQuery d'origine:

    ALTER SCHEMA DATASET_NAME DROP REPLICA IF EXISTS ORIGINAL_REGION;
    

    Remplacez les éléments suivants :

    • DATASET_NAME: nom de l'ensemble de données d'origine.
    • ORIGINAL_REGION: région de l'ensemble de données d'origine.
  11. Créez un flux avec exactement la même configuration, mais avec un nouvel emplacement de destination BigQuery.

  12. Lancez la nouvelle diffusion.

    Pour éviter de dupliquer des événements en double, démarrez le flux à partir d'une position spécifique:

    • Pour les sources MySQL et Oracle: vous pouvez identifier la position dans le journal en examinant les journaux du flux d'origine et en trouvant la dernière position à partir de laquelle le flux a bien été lu. Pour en savoir plus sur le démarrage de la diffusion à partir d'une position spécifique, consultez Gérer les flux.
    • Pour les sources PostgreSQL: le nouveau flux commence à lire les modifications à partir du premier numéro de séquence de journal (LSN) dans l'emplacement de réplication. Étant donné que le flux d'origine a peut-être déjà traité certaines de ces modifications, remplacez manuellement le pointeur de l'emplacement de réplication sur le dernier LSN à partir duquel Datastream a été lu. Vous pouvez trouver ce LSN dans les journaux consommateurs Datastream.
  13. Si vous le souhaitez, supprimez le flux d'origine.