Clicky

Fale Conosco

Converse com nossos especialistas e descubra como transformar seus dados em informações seguras, disponíveis e acessíveis.

Endereço

Rua Angelo Antonello, 93 – Sala 62, Centro – Farroupilha/RS – CEP: 95170-492

Contato Comercial

Email: contato@cdbdatasolutions.com.br
Telefone: (54) 3401-1471

,

MySQL Shell – Utilitário para Backup

  • Por Oberdan Schaider
  • 26/09/2024
  • 7 Visualizações

Olá pessoal! Neste artigo veremos uma solução muito útil nas ferramentas de um DBA MySQL que facilita muito a nossa vida. Dependendo do volume de dados que estamos trabalhando, a ferramenta nativa que é instalada juntamente com o próprio serviço do MySQL responsável pelo tratamento dos backups, o Mysqldump, acaba se tornando inviável devido ao tempo para gerar um dump.

Dessa forma, existe uma ferramenta que está evoluindo cada vez mais e é muito robusta, trazendo diversas funcionalidades úteis para a administração do dia a dia. Estamos falando o MySQL Shell (https://dev.mysql.com/downloads/shell/). Ele está disponível para Windows, Linux e MacOS.

Um diferencial dessa ferramenta é a possibilidade de executar scripts de diversas linguagens como SQL, Python e JavaScript, como podemos ver na imagem abaixo, após acessar o menu de help do Shell:

Abaixo uma lista de todos os comandos disponíveis no MySQL Shell:

https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-commands.html

Lembrando que esta ferramenta é muito completa e não é utilizada somente para backup, logo possui diversas aplicabilidades.

A ideia principal deste artigo é mostrar como utilizar o MySQL Shell para realizar operações de backup e restore. Não entraremos em detalhes de como instalá-lo, logo espera-se que você já o tenha baixado e instalado.

Para gerar um dump de um banco específico, por exemplo, podemos utilizar o comando abaixo:

util.dumpSchemas([“sakila”], “/home/dump/sakila”, {dryRun:false, consistent:false, threads: 16, compatibility: [“strip_definers”, “force_innodb”]})

Lembrando que este comando foi utilizado no modo JavaScript (\js):

Neste comando, estamos realizando um dump do banco sakila e apontando como destino o diretório /home/dump/sakila. O parâmetro dryRun é muito útil, visto que ele realiza uma validação no banco caso esteja definido como True. Já o parâmetro consistent:false, significa que não ocasionará bloqueios durante o processo, logo pode ser usado em qualquer momento e pegará os dados conforme estiverem naquele exato momento. Também é possível informar a quantidade de threads para realizar o dump bem como informar valores na seção de compatibilidade (https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-dump-instance-schema.html). Neste caso, estou informando para remover todas as cláusulas de DEFINER de views, routines, events e triggers além de alterar todos os comandos de CREATE TABLE para forçar a utilização da engine innodb para tabelas que não a utilizem.

Após o dump ter finalizado e removido o banco, vamos avaliar o restore, se ele está preparado para ser utilizado com o seguinte comando:

util.loadDump(“/home/dump/sakila”, {schema:”sakila-restore”, threads:16, dryRun:true})

Veja que nenhuma alteração foi encontrada:

Feita validação, podemos utilizar o mesmo comando, alterando apenas o valor do parâmetro dryRun:

util.loadDump(“/home/dump/sakila”, {schema:”sakila_restore”, threads:16, dryRun:false})

Abaixo deixo a referência de alguns utilitários úteis para o dia a dia:

https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities.html.

Espero que esse artigo tenha sido útil para você.

Até o próximo post! 😊

Abrir bate-papo
Olá! Somos especialistas em Infraestrutura e Inteligência de Dados.
Como podemos ajudá-lo?