Esta página oferece uma visão geral de como migrar seu banco de dados de processamento de transações on-line (OLTP) do MySQL para o Spanner. O processo de migração para o Spanner pode variar dependendo de fatores como tamanho dos dados, requisitos de tempo de inatividade, complexidade do código do aplicativo, esquema de fragmentação, funções personalizadas e estratégias de failover e replicação.
A migração do Spanner é dividida nas seguintes etapas:
- Avalie sua migração.
- Migre seu esquema e traduza consultas SQL.
- Migre seu aplicativo para usar o Spanner além do MySQL.
- Carregue dados de amostra e otimize sua performance.
- Migre seus dados.
- Valide a migração.
- Configure mecanismos de migração e substituição.
Avaliar a migração
Para avaliar uma migração do seu banco de dados MySQL de origem para o Spanner, é necessário analisar suas necessidades comerciais, técnicas, operacionais e financeiras. Para mais informações, consulte Avaliar sua migração.
Migrar o esquema
Converta o esquema atual em um esquema do Spanner usando a ferramenta de migração do Spanner.
Para mais informações, consulte Visão geral da migração de esquema do MySQL.
Migrar o aplicativo para usar o Spanner
O Spanner oferece um conjunto de bibliotecas de cliente para várias linguagens e a capacidade de ler e gravar dados usando chamadas de API específicas do Spanner, consultas SQL e instruções da linguagem de manipulação de dados (DML, na sigla em inglês). O uso de chamadas de API pode ser mais rápido para algumas consultas, como leituras diretas de linhas por chave, porque a instrução SQL não precisa ser traduzida.
O Spanner oferece um driver JDBC para aplicativos Java.
Como parte do processo de migração, os recursos não disponíveis no Spanner, conforme mencionado acima, precisam ser implementados no aplicativo. Por exemplo, um gatilho para verificar valores de dados e atualizar uma tabela relacionada precisaria ser implementado no aplicativo usando uma transação de leitura ou gravação para ler a linha atual, verificar a restrição e gravar as linhas atualizadas em ambas as tabelas.
O Spanner oferece transações de leitura ou gravação e somente leitura, o que garante a consistência externa de seus dados. Além disso, as transações de leitura podem ter os limites de carimbo de data/hora aplicados quando você está lendo uma versão consistente dos dados:
- em um momento exato no passado (até 1 hora atrás);
- no futuro (em que a leitura será bloqueada até que chegue a hora);
- com uma quantidade aceitável de inatividade definida, que retornará uma visualização consistente com até algum tempo no passado, sem precisar verificar se os dados posteriores estão disponíveis em outra réplica. Isso pode aumentar o desempenho, mas pode retornar dados obsoletos.
Carregar dados de amostra no Spanner
Você pode carregar dados de amostra no Spanner antes de realizar uma migração completa de dados para testar esquemas, consultas e seu aplicativo.
É possível usar o fluxo de trabalho de ETL reverso do BigQuery e a Google Cloud CLI para carregar uma pequena quantidade de dados no formato de arquivo CSV no Spanner.
Para mais informações, consulte Carregar dados de amostra.
Para transferir seus dados do MySQL para o Spanner, você também pode exportar seu banco de dados MySQL para um formato de arquivo portátil, por exemplo, XML, e depois importar esses dados para o Spanner usando o Dataflow.
Migrar dados para o Spanner
Depois de otimizar o esquema do Spanner e carregar dados de amostra, você pode mover seus dados para um banco de dados do Spanner vazio do tamanho de produção.
Para mais informações, consulte Migração de dados ativos do MySQL.
Validar a migração de dados
À medida que os dados são transmitidos para o banco de dados do Spanner, é possível executar periodicamente uma comparação entre os dados do Spanner e os dados do MySQL para garantir que os dados sejam consistentes. Valide a consistência consultando as duas fontes de dados e comparando os resultados.
Use o Dataflow para realizar uma comparação detalhada de grandes conjuntos de dados usando a transformação de mesclagem. Essa transformação usa dois conjuntos de dados com chaves e corresponde os valores pelas chaves. Os valores correspondentes podem ser comparados por igualdade. É possível executar essa verificação regularmente, até que o nível de consistência corresponda aos requisitos do seu negócio.
Para mais informações, consulte Validar a migração de dados.
Configurar mecanismos de migração e substituição
É possível configurar a migração e o fallback para o MySQL usando a replicação inversa. A transferência e o fallback significam que você tem um plano de contingência para reverter ao banco de dados MySQL de origem se encontrar problemas com o Spanner.
A replicação inversa é útil quando você encontra problemas imprevistos com o Spanner e precisa voltar ao banco de dados MySQL original com o mínimo de interrupção no serviço. A replicação inversa permite o fallback replicando os dados gravados no Spanner de volta ao banco de dados MySQL de origem.
O fluxo de replicação inversa envolve as seguintes etapas, realizadas pelo
modelo do Dataflow Spanner to SourceDB
:
Leia as mudanças do Spanner usando os fluxos de alterações do Spanner.
Filtre as mudanças migradas para frente.
Transforme os dados do Spanner para que sejam compatíveis com o esquema do banco de dados de origem.
Verifique se o banco de dados de origem já contém dados mais recentes para a chave primária especificada.
Grave os dados no banco de dados de origem.
A seguir
- Práticas recomendadas de criação de esquema.
- Otimize seu esquema do Spanner.
- Saiba como usar o Dataflow para situações mais complexas.