Uma das coisas legais sobre o MySQL HeatWave é a capacidade de executar análises diretamente em seus dados transacionais existentes, portanto, não há necessidade de embaralhar esses dados para um sistema separado quando você precisa executar análises massivamente paralelas. É surpreendentemente fácil.
O MySQL HeatWave é um serviço totalmente gerenciado e, como qualquer banco de dados, é melhor quando protegido da internet pública. Ainda precisaremos nos conectar de alguma forma para podermos trabalhar com nossos dados. Portanto, vamos explorar o uso do OCI Cloud Shell (que abordamos brevemente no guia de Conceitos Básicos), um Bastion host DIY e a conexão com o MySQL Workbench usando o serviço OCI Bastion (leia mais sobre o Bastion) como um túnel seguro.
Se você ainda não tem um sistema MySQL HeatWave em execução, vá até Conceitos Básicos do MySQL HeatWave na OCI e comece agora. Quando estiver pronto, continue lendo aqui para explorar as várias opções de conexão, técnicas de carregamento de dados e recursos de gerenciamento de cluster.
Para aqueles que preferem uma interface de linha de comando, você pode optar por se conectar via Cloud Shell ou por meio de um bastion host autogerenciado, onde você pode utilizar seu sabor favorito do Linux. Para aqueles que preferem a GUI, você pode ir até a seção Secure Tunnel. Mas primeiro... alguns passos preparatórios!
Antes de ir mais longe, certifique-se de ter reunido os detalhes do ponto final necessário do seu Sistema de BD. Você precisará do endereço IP privado e da Porta MySQL, que podem ser obtidos navegando em Bancos de Dados -> Sistemas de BD, onde você clicará no nome do banco de dados MySQL criado anteriormente.
Em seguida, você precisará de uma chave SSH para conectividade segura com os diferentes sistemas intermediários (se você optar por usar o Bastion ou um túnel seguro). Usaremos o Cloud Shell, disponível diretamente em nossa Console do OCI, para criar a chave SSH - muito útil. (Observação - também podemos estabelecer conexão com o banco de dados do Cloud Shell... chegaremos a isso em breve)
O Cloud Shell é como uma pequena VM executando um shell Bash e vem carregado com recursos. Na verdade, o Shell MySQL e o MySQL já estão instalados, juntamente com uma variedade de ferramentas do OCI. Portanto, levará um minuto para iniciar, mas quando isso acontecer, poderemos fazer muito dentro da CLI diretamente no seu navegador.
Quando o shell estiver ativo, crie uma chave SSH usando:
ssh-keygen -b 2048 -t rsa
Basta pressionar Enter (para aceitar o nome de arquivo padrão e prosseguir sem a senha) e, em breve, as chaves SSH públicas (~/.ssh/id_rsa.pub) e privadas (~/.ssh/id_rsa) estarão prontas para uso.
Então vamos cd ~/.ssh e ls -al para ver o que está dentro:
Se esta for a primeira vez que você criar chaves SSH no Cloud Shell, deverá ver apenas os dois arquivos. Mantenha a chave privada segura e não a compartilhe. A chave pública será necessária para determinadas atividades e pode ser carregada em alguns sistemas, bem como copiada e colada para facilitar a comunicação segura na nuvem.
Antes de sairmos do Cloud Shell, queremos pegar a chave pública. Abra um editor de texto como o Bloco de Notas e, se você ainda estiver no Cloud Shell, copie o conteúdo id_rsa.pub do bloco de notas com o gato ~/.ssh/id_rsa.pub, selecione esse blob de texto (essa é sua chave) e cole no editor de texto de sua escolha. Deve começar com ssh-rsa. Você também pode clicar na roda dentada no canto superior direito do Cloud Shell e selecionar Fazer Download. Informe o caminho para a chave pública:
A chave pública será colocada na pasta designada pelo SO para arquivos baixados. Faça o mesmo para .ssh/id_rsa (a chave privada) e armazene-a em um local seguro. No Mac ou Linux, certifique-se de chmod 400 o arquivo de chave privada.
Como você já está no Cloud Shell, vamos começar aqui com uma atualização rápida. Como as ferramentas já estão instaladas, você pode estabelecer conexão com o Cliente MySQL ou com o Shell. Em nosso exemplo, usaremos o Shell MySQL.
Primeiro, você precisará alterar a definição de rede do Cloud Shell para privada.
Quando solicitado, selecione a VCN e a sub-rede em que você implantou a instância MySQL e [Conecte-se a essa rede].
OBSERVAÇÃO: Este recurso reside na sua região home. Se você não tiver implantado MySQL lá, poderá seguir as instruções no prompt para estabelecer pareamento remoto de VCN.
Hora de fazer log-in no banco de dados:
mysqlsh -uadmin -p -h 10.0.1.... --sql
Quando solicitado, informe a senha designada ao criar o sistema de banco de dados.
Se você carregou os dados de amostra ao criar seu banco de dados, poderá executar uma consulta rápida para validar o conteúdo do banco de dados:
SELECT table_name, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'airportdb';
Tempo de computação! Vá para Compute > Instances. Permaneça no mesmo compartimento de antes e clique em Criar Instância. Atribua um nome a ele e mantenha a Forma e o Domínio de Disponibilidade selecionados. Selecione a imagem para o seu sabor favorito do Linux. Neste exemplo, estamos usando o Oracle Linux 8.
A parte importante aqui é usar a VCN configurada anteriormente. Selecione a sub-rede pública que foi criada e certifique-se de que Designar um endereço IP público esteja definido como Sim.
Na seção Add SSH keys, cole a chave pública no bloco de notas.
Em seguida, clique em Criar para iniciá-lo! Levará alguns minutos, é claro.
Quando ficar verde e estiver em execução, a página da instância mostrará um endereço IP público e um IP privado em Acesso à instância.
Copie e salve o IP público.
Agora, estabeleceremos conexão com o Sistema de BD MySQL do nosso Bastion host.
Portanto, agora você tem o IP público da sua instância do serviço Compute, sua chave SSH privada e o IP privado do seu Sistema de BD. Vamos colocar os dois primeiros juntos para se conectar via SSH. Aponte para onde está a chave privada e o nome de usuário será opc.
Por exemplo (Mac OS ou terminal Linux; PowerShell no Windows):
ssh -i ~/.ssh/id_rsa opc@
Vamos instalar o Shell MySQL usando (e continuar respondendo a todos os prompts):
sudo yum install mysql-shell -y
Seu ponto final será o IP privado que você copiou no bloco de notas anteriormente. Você também precisará da senha do banco de dados que levantou anteriormente, é claro.
Exemplo:
mysqlsh -uadmin -p -h 10.0.1.... --sql
Quando solicitado, informe a senha designada ao criar o sistema de banco de dados.
Se você carregou os dados de amostra ao criar seu banco de dados, poderá executar uma consulta rápida para validar o conteúdo do banco de dados:
SELECT table_name, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'airportdb';
O serviço OCI Bastion facilita a criação de conexões seguras e temporárias nos recursos privados dentro da sua Rede Virtual na Nuvem. Como MySQL é um sistema de banco de dados totalmente gerenciado, não podemos estabelecer conexão com o sistema operacional. Em vez disso, criaremos um túnel seguro por meio do serviço Bastion e utilizaremos o MySQL Workbench para conexão.
Para começar, navegue até Security -> Bastion na console do OCI. Crie uma instância do Bastion - este é essencialmente um contêiner para configurações de sessão específicas.
Em seguida, crie uma sessão. O tipo será sessão de encaminhamento de porta SSH. Você precisará informar o endereço IP privado da instância MySQL, junto com a porta do BD (3306 por padrão). Para este exercício, você pode usar o par de chaves SSH gerado anteriormente. No mundo real, você provavelmente deve gerar diferentes pares de chaves.
Clique em [Criar sessão].
Depois que a sessão for criada com sucesso, você poderá clicar no menu de 3 pontos à direita para exibir comandos SSH. Copie o comando para um editor de texto e substitua
Para Mac ou Linux, você pode abrir uma janela de terminal e executar o comando. No Windows, use PowerShell. Se solicitado a continuar a conexão, digite 'sim' e pressione Enter.
Em seguida, abra seu cliente de banco de dados (ou seja, MySQL Workbench) e configure a conexão.
Clique em [Testar Conexão] - se tudo correr bem, você deverá ver:
Salve as configurações e abra a conexão. Agora você pode pesquisar dados existentes e/ou carregar novos dados.
Neste ponto, estamos prontos para carregar dados do InnoDB para o HeatWave, para que possamos realmente iniciar as coisas.
Vamos voltar para o shell MySQL para que possamos iniciar o carregamento de dados.
Na linha de comando:
mysqlsh -uadmin -p -h 10.0.1... --sql
Informe a senha do banco de dados.
Use o comando Carga Paralela Automática para carregar as tabelas airportdb em HeatWave:
CALL sys.heatwave_load(JSON_ARRAY('airportdb'), NULL);
Apenas para ter certeza, verificaremos se as tabelas estão carregadas no cluster HeatWave. As tabelas carregadas têm um status de carregamento AVAIL_RPDGSTABSTATE.
Novamente, no Shell MySQL:
USE performance_schema;
Ele informará que o esquema padrão foi definido como performance_schema.
SELECT NAME, LOAD_STATUS FROM rpd_tables,rpd_table_id WHERE rpd_tables.ID = rpd_table_id.ID;
Claro, a partir daqui, você pode executar consultas e executar todas as funções de banco de dados necessárias. Você também pode ativar e desativar HeatWave para comparar tempos de consulta e ver o quanto mais rápido eles são executados com HeatWave ativado.
Para ver se HeatWave está ativado, use o seguinte comando:
SHOW VARIABLES LIKE 'use_secondary_engine%';
Para desativá-lo, use:
SET SESSION use_secondary_engine=OFF;
E para ligá-lo novamente, use:
SET SESSION use_secondary_engine=ON;
Se você precisar descarregar tabelas do cluster HeatWave, basta alterar a tabela da seguinte forma:
ALTER TABLE flightschedule SECONDARY_UNLOAD;
Depois de criar um cluster HeatWave, você ainda poderá ajustar o número de nós. Você pode fazer isso editando o Cluster usando o item de menu HeatWave nos Sistemas de BD. Observe que o cluster é redimensionado on-line, não há tempo de inatividade durante a operação e os dados são rebalanceados automaticamente após o redimensionamento.
Há também uma opção para estimar o número de nós que podem ser necessários para a quantidade de dados que você deseja analisar. A geração de uma estimativa pode levar vários minutos, mas ajuda a eliminar o trabalho de adivinhação do dimensionamento correto do cluster. Se o estimador sugerir uma alteração em sua configuração, você poderá aplicá-la ali mesmo.
A qualquer momento, você pode optar por interromper o cluster HeatWave (como o faturamento também será interrompido) ou reiniciar para atualizar o cluster. Quando um cluster HeatWave é interrompido por meio de uma ação de interrupção ou reinicialização, os dados carregados na memória do cluster HeatWave são perdidos. Quando você iniciar ou reiniciar o cluster, todos os dados que foram carregados anteriormente serão recarregados automaticamente. As alterações de dados que ocorreram no banco de dados enquanto HeatWave era interrompido são incluídas nos dados recarregados.
A exclusão de um cluster HeatWave remove os nós do cluster HeatWave permanentemente. O Sistema de BD ao qual o cluster HeatWave está anexado não é afetado. Lembre-se de que o cluster precisará ser configurado do zero novamente após a exclusão, o que significa recarregar dados em HeatWave.
Isso conclui nossa revisão superficial das estratégias de conectividade e dos recursos de gerenciamento para o MySQL HeatWave na OCI. Aprendemos a conectar um Sistema de BD por meio de vários canais, como carregar/descarregar dados em HeatWave e como ativar e desativar o mecanismo secundário. A partir daqui, você pode tentar executar algumas consultas ou até mesmo carregar seus próprios dados e ver o quão rápido HeatWave pode ir!
Para saber mais sobre o MySQL HeatWave, leia os docs aqui.
Quer saber mais? Participe da discussão em nosso canal público do Slack!