MySQL Shell – Utilitário para Backup

Olá pessoal! Neste artigo veremos uma solução muito útil nas ferramentas de um DBA MySQL que facilita muito a nossa vida. Antes de mais nada, é importante destacar que, dependendo do volume de dados com que trabalhamos, o Mysqldump, ferramenta nativa instalada com o serviço MySQL para tratamento dos backups, acaba se tornando inviável devido ao tempo necessário 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 do MySQL Shell (https://dev.mysql.com/downloads/shell/), que 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:

Demosntração de que o MySQL Shell compreende diversas linguagens.

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

Lembre-se de que essa ferramenta é muito completa e não usamos apenas 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.

Gerando um Dump de um Banco de Dados

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):

Demonstração de comando do dump de um banco.

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:

Demonstração de que não foi encontrada nenhuma alteração.

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})
Demonstração de alteração do comando dryRun.

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

MySQL :: MySQL Shell 8.0 :: 11 MySQL Shell Utilities

Espero que esse artigo tenha ajudado você.

Até o próximo post! 😊

 

Por Oberdan Schaider e Rodrigo Crespi

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Artigos Recentes

Read Replica no Azure Database for PostgreSQL

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: [email protected]
Telefone: (54) 3401-1471

Abrir bate-papo
Olá
Podemos ajudar?