Esta página descreve as práticas recomendadas ao usar o Datastream para migrar do modelo do Dataflow Datastream para o BigQuery para a solução de replicação integrada do BigQuery do Datastream.
Antes de começar
As instruções nesta página pressupõem o seguinte:
- Você conhece e instalou o Docker.
- Você sabe como clonar repositórios de serviços como o GitHub.
- Você sabe como executar streams no Datastream.
- Você instalou a Google Cloud CLI.
Visão geral do kit de ferramentas de migração
O kit de ferramentas de migração do BigQuery do Datastream é um software de código aberto oferecido pela Google Cloud. O kit de ferramentas permite migrar do modelo do Datastream para o BigQuery do Dataflow, mas também pode ser usado na migração de outros pipelines, conforme explicado na seção Migrar de outros pipelines abaixo.
Para migrar suas tabelas do BigQuery usando o kit de ferramentas, siga estas etapas:
- Criar, iniciar e pausar um fluxo do Datastream com um destino do BigQuery.
- Execute a migração em cada tabela do BigQuery que precisa ser migrada.
- Retome o stream.
O kit de ferramentas faz o seguinte:
- Recupera o esquema da tabela de origem usando a API Discover do Datastream.
- Cria uma tabela do BigQuery compatível com o Datastream com base no esquema recuperado.
- Busca o esquema da tabela do BigQuery de que você está migrando para determinar as conversões de tipo de dados necessárias.
- Copia todas as linhas da tabela original para a nova, incluindo conversões de tipo de coluna adequadas.
Para mais informações sobre a estrutura do kit de ferramentas e os argumentos
usados, consulte o arquivo README.md do kit de ferramentas.
Configurar o kit de ferramentas de migração
Para executar o kit de ferramentas de migração usando o Docker, siga estas etapas:
Clone o repositório e mude para o diretório dele:
git clone https://github.com/GoogleCloudPlatform/datastream-bigquery-migration-toolkit && cd datastream-bigquery-migration-toolkitCrie a imagem:
docker build -t migration-service .Faça a autenticação com suas credenciais da Google Cloud CLI:
docker run -ti \ --name gcloud-config migration-service gcloud auth application-default loginDefina a propriedade do projeto Google Cloud :
docker run -ti --volumes-from gcloud-config migration-service \ gcloud config set project PROJECT_IDSubstitua PROJECT_ID pelo identificador do seu projeto do Google Cloud.
Migrar do Dataflow para a solução integrada do Datastream
Inicie e pause o stream imediatamente. Isso permite que o Datastream capture a posição de onde ele captura as mudanças antes do início da migração.
Drene o pipeline do Datastream e do Dataflow:
- Pause o fluxo de destino do Cloud Storage.
- Verifique a métrica de latência total do fluxo e aguarde pelo menos o tempo da latência atual para garantir que todos os eventos em andamento sejam gravados no destino.
- Drene o job do Dataflow.
Execute a migração:
Execute a migração no modo
dry_run. O mododry_runpermite gerar a instrução DDLCREATE TABLEe a instrução SQL para copiar dados, sem executá-las: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_NAMESubstitua:
- PROJECT_ID: o identificador exclusivo do seu Google Cloud projeto.
- STREAM_ID: o identificador exclusivo do fluxo de destino do BigQuery.
- STREAM_REGION: o local do seu stream, por exemplo,
us-central1. - SOURCE_SCHEMA_NAME: o nome do esquema de origem.
- SOURCE_TABLE_NAME: o nome da tabela de origem.
- BIGQUERY_SOURCE_DATASET_NAME: o nome do conjunto de dados do BigQuery.
- BIGQUERY_SOURCE_TABLE_NAME: o nome da tabela do BigQuery.
Inspecione os arquivos
.sqlemoutput/create_target_tableeoutput/copy_rows. Estes são os comandos SQL que serão executados no seu projeto 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 {} \;Para executar os comandos SQL, execute a migração no modo
full. O modofullpermite criar uma tabela no BigQuery e copiar todas as linhas da tabela atual do BigQuery: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
Retomar o stream pausado.
Abra o Google Cloud Explorador de registros e procure registros do Datastream com a seguinte consulta:
resource.type="datastream.googleapis.com/Stream" resource.labels.stream_id=STREAM_IDProcure o seguinte registro, em que
%dé um número:Completed writing %d records into..Esse registro indica que o novo fluxo carregou dados no BigQuery. Ele só aparece se houver dados de CDC para carregar.
Migrar de outros pipelines
O kit de ferramentas também permite migrar de outros pipelines para a solução integrada do Datastream
no BigQuery.
O kit de ferramentas pode gerar CREATE TABLE DDLs para tabelas do BigQuery compatíveis com o Datastream, com base no esquema do banco de dados de origem, usando o modo 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
Como os esquemas de tabela do BigQuery podem variar, é difícil fornecer uma instrução SQL universal para copiar linhas. É possível usar os esquemas no diretório DDL da tabela de origem (output/source_table_ddl) e no diretório DDL da tabela de destino (output/create_target_table) para criar uma instrução SQL com conversions adequadas nas colunas de origem.
Confira a seguir um exemplo de formato de instrução SQL que você pode usar:
INSERT INTO DESTINATION_TABLE (DESTINATION_COLUMN1, DESTINATION_COLUMN2...)
SELECT SOURCE_COLUMN1, SOURCE_COLUMN2
FROM SOURCE_TABLE;
Substitua:
- DESTINATION_TABLE: o nome da tabela de destino no BigQuery.
- DESTINATION_COLUMN: o nome da coluna na tabela de destino.
- SOURCE_COLUMN: o nome da coluna na tabela de origem.
- SOURCE_TABLE: o nome da tabela de origem.
Limitações
O kit de ferramentas tem as seguintes limitações:
- Os nomes das colunas nas tabelas atuais e novas do BigQuery precisam corresponder (ignorando as colunas de metadados). A migração falha se você aplicar funções definidas pelo usuário do Dataflow (UDFs) que mudam os nomes das colunas nas tabelas atuais (por exemplo, adicionando um prefixo ou mudando o caso).
- Migrações entre regiões e projetos não são compatíveis.
- A migração funciona por tabela.
- Somente fontes Oracle e MySQL são aceitas.