Migre uma tabela de CDC para outra região

Esta página descreve as práticas recomendadas para um exemplo de utilização em que configurou a replicação do Datastream para o BigQuery, mas configurou o conjunto de dados de destino numa região incorreta. Em seguida, quer mover o conjunto de dados para outra região (ou várias regiões) sem ter de sincronizar novamente todos os dados da base de dados de origem para o BigQuery.

Antes de começar

Antes de começar a migrar os seus dados para outra região, considere o seguinte:

  • A migração demora algum tempo e tem de pausar temporariamente a stream durante a operação. Para manter a integridade dos dados, a base de dados de origem tem de reter os registos de alterações quando a stream é pausada. Para estimar quanto tempo deve pausar a stream, combine o valor de max_staleness no conjunto de dados e a operação de união de execução mais longa:
    • Para ver informações sobre o tempo que as operações de união podem demorar a ser concluídas, consulte o valor Recomendado para a tabela max_staleness.
    • Para encontrar o valor máximo de max_staleness no conjunto de dados, consulte o artigo Determine o valor atual de max_staleness de uma tabela e ajuste a consulta às suas necessidades específicas.
    • Se a pausa estimada for demasiado longa para a sua base de dados de origem suportar, é recomendável considerar reduzir temporariamente o valor de max_staleness para as tabelas no conjunto de dados.
  • Verifique se o utilizador que está a fazer a migração tem recursos suficientes do BigQuery na região de destino (reserva de consultas e reserva em segundo plano). Para mais informações sobre as reservas, consulte o artigo Atribuições de reservas.
  • Verifique se o utilizador que está a fazer a migração tem autorizações suficientes para realizar esta operação, como controlos de gestão de identidade e de acesso (IAM) ou VPC Service Controls.

Passos de migração

Para iniciar a migração do conjunto de dados, use a replicação de dados do BigQuery:

  1. Na Google Cloud consola, aceda à página BigQuery Studio.

    Aceda ao BigQuery Studio

  2. Crie uma réplica do conjunto de dados do BigQuery na nova região:

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

    Substitua o seguinte:

    • DATASET_NAME: o nome do conjunto de dados que quer criar.
    • NEW_REGION: o nome da região onde quer criar o conjunto de dados. Por exemplo, region-us.
  3. Monitorize o progresso da migração e aguarde até que a marca de água de cópia na réplica esteja a poucos minutos da principal. Pode executar esta consulta no INFORMATION_SCHEMA do BigQuery para verificar o progresso da migração:

    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;
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto Google Cloud .
    • DATASET_NAME: o nome do conjunto de dados.
    • DATASET_REPLICA_STALENESS: a configuração de desatualização das tabelas na réplica do conjunto de dados que criou.
    • NEW_REGION: a região onde criou o conjunto de dados.
  4. Pause a stream de dados existente. Para mais informações, consulte o artigo Pause a stream.

  5. Aguarde até que a stream seja esgotada e tome nota da hora em que a stream entrou no estado PAUSED.

  6. Confirme que as alterações mais recentes da CDC foram aplicadas à tabela do BigQuery verificando o upsert_stream_apply_watermark da tabela. Execute a seguinte consulta e certifique-se de que a data/hora da marca de água é 10 minutos posterior à data/hora em que a stream foi pausada:

    SELECT table_name, upsert_stream_apply_watermark
    FROM DATASET_NAME.INFORMATION_SCHEMA.TABLES
    

    Para executar a consulta apenas para uma tabela específica, adicione a seguinte cláusula WHERE:

    WHERE table_name = 'TABLE_NAME'
    

    Substitua o seguinte:

    • DATASET_NAME: o nome do conjunto de dados.
    • TABLE_NAME: opcional. A tabela para a qual quer verificar o upsert_stream_apply_watermark.
  7. Use a consulta do passo 3 para verificar se a data/hora da marca de água da cópia da nova região é posterior à data/hora upsert_stream_apply_watermark capturada no passo 6.

  8. Opcionalmente, compare manualmente várias tabelas no conjunto de dados principal na região original com a réplica na nova região para verificar se todos os dados foram copiados corretamente.

  9. Promova a réplica do conjunto de dados do BigQuery executando o seguinte comando no BigQuery Studio:

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

    Substitua o seguinte:

    • DATASET_NAME: o nome do conjunto de dados.
    • NEW_REGION: a região onde criou o conjunto de dados.
  10. Opcionalmente, se já não precisar do conjunto de dados original (agora a réplica) e não quiser incorrer em custos adicionais, aceda ao BigQuery Studio e elimine o conjunto de dados original do BigQuery:

    ALTER SCHEMA DATASET_NAME DROP REPLICA IF EXISTS ORIGINAL_REGION;
    

    Substitua o seguinte:

    • DATASET_NAME: o nome do conjunto de dados original.
    • ORIGINAL_REGION: a região do conjunto de dados original.
  11. Crie uma nova transmissão com exatamente a mesma configuração, mas com uma nova localização de destino do BigQuery.

  12. Inicie a nova stream.

    Para evitar a replicação de eventos duplicados, inicie a transmissão a partir de uma posição específica:

    • Para origens MySQL e Oracle: pode identificar a posição do registo examinando os registos da stream original e encontrando a última posição a partir da qual a stream foi lida com êxito. Para obter informações sobre como iniciar a stream a partir de uma posição específica, consulte o artigo Gerir streams.
    • Para origens PostgreSQL: a nova stream começa a ler as alterações a partir do primeiro número de sequência de registo (LSN) no espaço de replicação. Uma vez que a stream original pode já ter processado algumas destas alterações, altere manualmente o ponteiro do espaço de replicação para o último LSN a partir do qual o Datastream leu. Pode encontrar este LSN nos registos do consumidor da stream de dados.
  13. Opcionalmente, elimine a stream original.