Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever e obter uma conta gratuita, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Migre o Google Cloud Platform CloudSQL de MySQL para o Oracle Cloud Infrastructure MySQL Heatwave usando Replicação
Introdução
Este tutorial explica como executar a migração dinâmica do seu Google Cloud Platform CloudSQL para MySQL para o Oracle Cloud Infrastructure (OCI) MySQL Heatwave Database Service. Com a ajuda deste artigo, poderemos entender como podemos usar a Replicação MySQL entre dois provedores de nuvem diferentes e isso funcionará como seu documento para uma migração bem-sucedida para o OCI Heatwave. Neste tutorial, faremos uso dos seguintes produtos:-
- GCP CloudSQL para MySQL
- MySQL Heatwave for Online Transaction Processing (OLTP)
- OCI Object Storage
- Computação do OCI como Bastion
- MySQL Shell
Objetivos
Conecte o Google Cloud Platform CloudSQL para MySQL ao MySQL Heatwave Database Service e inicie a replicação de entrada ao Sistema de BD do OCI. Abordaremos a visão geral de alto nível da conectividade entre o Google Cloud Platform e o MySQL, mas possibilidades de rede detalhadas entre o Google Cloud Platform CloudSQL e o MySQL Heatwave podem ser referenciadas na documentação oficial.
Arquitetura
Veja a seguir um exemplo de arquitetura de alto nível da solução.
A linha pontilhada representa o fluxo dos dados, ou seja, do Cloud SQL do GCP para MySQL para o armazenamento de Objetos para o conjunto de dados inicial. Quando os dados estiverem disponíveis no armazenamento de objetos, usaremos ainda mais os canais de replicação oferecidos com o Sistema de BD do OCI MySQL Heatwave.
Pré-requisitos
Como parte deste tutorial, usaremos a Replicação de Entrada. Com a ajuda da Replicação de Entrada, usamos o canal de replicação configurado no MySQL Heatwave Database Service e com isso podemos enviar transações de um local para outro. Nossas fontes podem ser diferentes, por exemplo, no local, Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform, etc. Neste tutorial, estamos focando no Google Cloud Platform Cloud SQL para MySQL e nosso destino é MySQL Heatwave Database Service.
Você pode ler mais sobre a visão geral da Replicação de Entrada MySQL aqui. Mantenha este tutorial acessível, pois ele também fornece uma descrição detalhada da configuração de origem, criação de usuário de replicação, criação de um canal de replicação e suas limitações.
Estamos dividindo todo o processo de migração nas seguintes etapas de alto nível.
- Acesso ao Cloud SQL do Google Cloud Platform existente para MySQL
- Preparação do Cloud SQL do Google Cloud Platform para MySQL
- Bastion no OCI com Shell MySQL
- Consideração de Rede entre o Google Cloud Platform Cloud SQL para MySQL e o OCI Heatwave DB System
- Configuração do Bucket do Object Storage no OCI
- Exportando dados para o OCI Object Storage
- Criação do novo sistema de BD no OCI
- Criando o Canal de Replicação no OCI
Tarefa 1: Acessar o SQL do Google Cloud Platform Existente para MySQL
Estamos usando o banco de dados de amostra hospedado no Cloud SQL do Google Cloud Platform para MySQL com nosso propósito de migração. A Instância MySQL existente é hospedada na sub-rede pública que o Google Cloud Platform permite; portanto, estamos usando essa instância como nosso banco de dados de origem. Vamos supor que o Google Cloud Platform CloudSQL para MySQL esteja executando a edição empresarial com o MySQL Versão 8.0.
Assim que soubermos o IP público, poderemos colocar na lista branca nosso endereço IP e estabelecer conexão facilmente com o cliente MySQL. Você também pode usar o shell MySQL ou o utilitário gcloud
para estabelecer conexão com o banco de dados. Podemos fazer a lista branca do nosso ip público adicionando na seção de rede do Google Cloud Platform Cloud SQL para MySQL e clique em Salvar alterações.
Observação: Há outros IPs que também são adicionados aqui, falaremos sobre eles nas seções posteriores.
Assim que conseguirmos estabelecer conexão, poderemos consultar os bancos de dados existentes na instância do Google Cloud Platform CloudSQL for MySQL. Para nosso propósito de migração, vamos nos concentrar apenas na amostra de banco de dados Sakila.
Tarefa 2: Preparar o Google Cloud Platform Cloud SQL para MySQL
À medida que estamos usando a replicação de entrada, precisamos executar duas etapas no servidor de origem. Precisamos criar um usuário que será usado para replicação e também precisamos garantir que tenhamos GTID ativado em nosso servidor de origem. Com GTIDs (Global Transaction Identifier), cada transação pode ser identificada e rastreada conforme é submetido a commit no servidor de origem. A mesma transação é aplicada à réplica de destino.
-
Crie o usuário de Replicação e designe atribuições usando os comandos a seguir.
mysql> create user repl@'%' IDENTIFIED BY 'yourreplpassword' REQUIRE SSL; mysql> grant replication slave on *.* to repl@'%'; mysql> select user from mysql.user;;
-
Verifique se os GTIDs estão ativados. Por padrão, os GTIDs estão ativados, mas, caso contrário, você poderá ativá-los.
mysql>show global variables like 'gtid%';
Tarefa 3: Implantar Bastion no OCI com o Shell MySQL
Com o Oracle Cloud Infrastructure, os pontos finais do sistema de banco de dados MySQL não podem ser acessados diretamente pela internet. Ele se deve à segurança aprimorada e é implantado com a ajuda do ponto final privado na VCN configurada. Como resultado, precisamos conectar o OCI MySQL Heatwave Database Service usando uma instância de computação, VPN, Bastion ou balanceador de carga de rede para acessar o ponto final privado.
Você pode escolher qualquer uma das opções mencionadas acima. No nosso caso, usaremos a instância de computação que agirá como Bastion para nosso Serviço de Banco de Dados Heatwave MySQL. Como usar o restante das opções, veja aqui.
Como estamos usando a instância de computação, precisamos implantar a computação na sub-rede pública da nossa VCN cuja sub-rede privada hospedará o MySQL Heatwave Database Service. Ao configurar a instância de computação, você não precisa se preocupar com a configuração do recurso para a computação, pois ela só será usada para instalar o shell MySQL ou o cliente MySQL e para estabelecer conexão com o Google Cloud Platform Cloud SQL para MySQL.
Como criar uma instância de computação, pode ser encontrada aqui.
Como você pode ver na imagem abaixo, criamos a instância de computação na sub-rede pública da VCN na qual o MySQL Heatwave Database Service será hospedado. Esse servidor Bastion funcionará como intermediário entre o OCI e o Google Cloud Platform, onde podemos acessar as instâncias MySQL. Para estabelecer conexão com a instância do banco de dados MySQL, podemos usar o shell MySQL ou o cliente MySQL.
Vamos instalar o shell Mysql executando o comando a seguir.
`sudo yum install mysql-shell`
Você também pode consultar a documentação para mais informações.
Tarefa 4: Verificar Considerações de Rede entre o Cloud SQL para MySQL e o OCI MySQL Heatwave Database Service
Uma coisa importante aqui é garantir que a comunicação seja estabelecida com sucesso entre o servidor de origem e o servidor de destino.
Na console do Google Cloud Platform, precisamos garantir que o IP público da nossa instância Bastion também esteja na lista branca. Isso pode ser feito usando o mesmo processo que seguimos acima para conectar o banco de dados ao nosso Cliente MySQL.
Na console do OCI, é necessário estabelecer comunicação entre a instância de computação Bastion, que é hospedada na sub-rede pública do MySQLVCN e do MySQL Heatwave Database Service hospedado na sub-rede privada na mesma VCN. Temos que permitir o tráfego e podemos abrir regras de entrada com a sub-rede Privada e permitir conexões.
Tarefa 5: Configurar o Bucket de Armazenamento de Objetos no OCI
Precisamos configurar o armazenamento de objetos no OCI para armazenar o dump inicial de dados do Google Cloud Platform CloudSQL para MySQL. Esta será uma atividade única e esses dados serão usados para criar o banco de dados no MySQL Heatwave Database Service.
Para obter informações sobre a criação do bucket no OCI, consulte Criando um Bucket.
Depois que o bucket acima tiver sido criado, precisaremos estabelecer um link entre o bucket de armazenamento de objetos e a instância Bastion. Para essa finalidade, usaremos o arquivo de configuração do oci que será usado pelo Shell MySQL.
-
Primeiro, vamos gerar o arquivo de configuração na console do OCI para nosso usuário.
-
Depois de selecionar os detalhes do usuário conforme mostrado acima, localize as opções de chaves da API.
-
Clique em Adicionar Chave de API e gere a impressão digital como abaixo.
Observação: Leia as instruções com atenção, pois precisamos colar o conteúdo no arquivo ``~/.oci/config` que deve estar presente na nossa instância Bastion. Certifique-se também de copiar ou gerar a chave privada que estava sendo criada nesta etapa.
-
Se você não conseguir localizar o arquivo de configuração do OCI, poderá criar o arquivo de configuração do OCI no sistema Bastion. As informações relacionadas à sua criação podem ser encontradas aqui.
-
Uma vez configurado, você poderá ver algo como esse na sua máquina.
Observação: O parâmetro
key_file
deve ser atualizado com o local da sua chave privada gerada na console do OCI durante a criação da chave de API.
Tarefa 6: Exportar dados para o OCI Object Storage
Usaremos o utilitário MySQL Shell no servidor Bastion para exportar dados do SQL da nuvem do Google Cloud Platform para MySQL. O utilitário de shell MySQL é uma ferramenta muito poderosa que ajuda a exportar instância inteira de uma só vez e fornecer várias opções.
Para este exercício, exportaremos o esquema do Google Cloud Platform CloudSQL para banco de dados Mysql para nosso armazenamento de objetos OCI.
Vamos primeiro estabelecer conexão com a instância MySQL em nossa computação Bastion.
util.dumpSchemas(["sakila"], "", { osBucketName: "MysqlBucket", osNamespace: "orasenatdpltintegration01", ocimds: true, ociParManifest: true, threads: 8, compatibility: ["force_innodb", "skip_invalid_accounts", "strip_definers", "strip_restricted_grants", "strip_tablespaces"], dryRun: "true"})
-
sakila - Nome do banco de dados que estamos usando como parte da replicação.
-
mysqlbucket - Nome do nosso armazenamento de objetos do OCI.
-
osNamespace - Nome da sua tenancy no OCI.
-
Dryrun - Estamos definindo isso como verdadeiro, pois isso ajuda a inspecionar os esquemas e com problemas de compatibilidade, se houver.
-
ociParmanifest - Permite carregar a operação do armazenamento de objetos usando PAR.
O restante das opções pode ser usado com base em seus requisitos e mais informações podem ser encontradas aqui.
Uma vez concluída a operação seca, examine a saída e resolva os problemas. Se não tivermos problemas de compatibilidade, execute sem dryRun, conforme abaixo:-
Ele fornece informações detalhadas sobre a atividade de exportação e também a duração. Como é um banco de dados de amostra, com cerca de 45k registros, ele terminou rapidamente.
Assim que o processo for bem-sucedido, seus dados ficarão presentes no bucket que faz parte do armazenamento de objetos.
Tarefa 7: Criar um novo sistema de banco de dados no OCI
Para obter mais detalhes sobre como configurar o sistema de banco de dados MySQL, consulte Criando um Sistema de Banco de Dados.
A única coisa que precisamos ter em mente é que já temos dados no armazenamento de objetos. Portanto, vamos usá-los para configurar o sistema de BD. Você também pode carregar os dados posteriormente, mas essa opção economiza muito tempo. Para usar essa opção, precisamos criar uma solicitação PAR.
Certifique-se de ter salvo o URL gerado aqui, pois ele será usado conforme abaixo.
Depois que você especificar seu URL de PAR, o sistema de BD MySQL será criado automaticamente com o banco de dados Sakila.
Para validar, execute o comando a seguir.
Com isso, agora temos um banco de dados de origem no sistema de BD de destino. Agora, criaremos a replicação entre a origem e o destino.
Tarefa 8: Criar um Canal de Replicação no OCI
Os canais de replicação são usados para conectar seu sistema de banco de dados de origem ao sistema de banco de dados de destino. Todas as transações são copiadas com a ajuda desses canais. A criação desses canais é bastante fácil, pois precisamos apenas fornecer alguns detalhes sobre nossa fonte e nosso alvo. É sempre recomendável usar a conexão criptografada e é por isso que, quando criamos o usuário, especificamos a palavra-chave SSL nas etapas anteriores.
Como a origem da replicação pode ser diferente, também permitimos filtros de canal que variam de acordo com diferentes provedores de nuvem pública. Veja mais informações aqui.
A imagem abaixo mostra diferentes opções que estão presentes quando você cria o canal de Replicação no OCI. Precisamos fornecer o nome do host de origem ou o endereço IP público juntamente com o no da porta. Vamos nos autenticar com a ajuda do usuário Repl que criamos anteriormente.
Também especificamos o sistema de bd de destino que criamos para nossa replicação e, com filtros de replicação, fornecemos uma opção em que você escolhe seus filtros de replicação no menu drop-down conforme aplicável.
Se não houver mais carga no sistema de origem após nossa exportação, o canal de replicação deverá ser ativado e concluído. No entanto, há chances de que a carga seja inconsistente devido à incompatibilidade de GTID e as ações necessárias devem ser tomadas. Há diferentes estágios do canal de replicação; seus detalhes são mencionados aqui.
Para obter detalhes sobre as mensagens de erro mais comuns que podemos encontrar durante a configuração de replicação de entrada, consulte o guia de solução de problemas.
Insira dados fictícios na origem do Google Cloud Platform, conforme mostrado na imagem a seguir.
Consulte o banco de dados de amostra no MySQL Heatwave Database Service.
No console, podemos ver que não há atraso entre a origem e o destino, e as transações estão sendo copiadas e submetidas a commit. Portanto, podemos usar canais de replicação para fins de recuperação de desastres e migração. Com base no planejamento adequado e no tempo de indisponibilidade do aplicativo, podemos executar a atividade de transição e usar o serviço MySQL Heatwave Database, que é sua solução definitiva para transações OLTP e cargas de trabalho analíticas.
Próximas Etapas
Neste tutorial, vimos o OCI MySQL Heatwave Database Service fornecer um mecanismo bastante fácil de usar a replicação de entrada. Ele suporta várias origens e até fornece filtros de canal de replicação em relação a essas origens. A Replicação de Entrada pode ser usada para trazer seu conjunto de dados para o Oracle Cloud e usar sua oferta de calor. Além disso, o MySQL Heatwave Lakehouse também foi introduzido, onde você pode trazer um grande volume de dados em terabytes em vários formatos. Você pode encontrar mais informações sobre o MySQL Heatwave Database Service e como ele maximiza o desempenho da consulta fornecendo o Acelerador de Consulta na Memória.
Aquisições
- Autor - Amal Sharma (Arquiteto de Nuvem Principal)
Mais Recursos de Aprendizagem
Explore outros laboratórios no site docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Migrate Google Cloud Platform CloudSQL for MySQL to Oracle Cloud Infrastructure MySQL Heatwave using Replication
F87172-01
September 2023
Copyright © 2023, Oracle and/or its affiliates.