Estudo de caso com o MySQL
- Utilização em servidor Linux (Ubuntu)
- Utilizando banco de dados MySQL
- Arquivo do banco de dados é muito grande e não consegue importar diretamente
Situação Problema com o Dump do MySQL
Tem a necessidade de subir um arquivo .SQL de um banco de dados MySQL, mas este é muito grande (usualmente acima de 30GB) e sempre ocorre algum erro durante o processo? Tem acesso ao servidor Linux por linha de comando? Caso positivo, siga este tutorial.O que realmente acontece?
Importar arquivos muito grandes de banco de dados pode ser um problema. Muitas vezes o sistema possui poucos recursos, ou o mysql se embanana todo e ocorre um crash devido ao tamanho do arquivo.Como contornar este problema de importação deste Dump muito grande do MySQL?
Passo 1: Dividir o arquivo de dump .sql em arquivos menores utilizando o comando split do Linux
Navegue até a pasta do backupcd /home/backups
Crie uma pasta para guardar os arquivos divididos
mkdir /home/backups/BD_dividido
Execute o comando para dividir o arquivo de dump em arquivos menores
split -n 300 arquivo_muito_grande_backup.sql BD_dividido/bd_
Observação: O prefixo “-n 300″ do comando acima é a opção que cada arquivo dividido tenha apenas 300 linhas. O arquivo a ser dividido chama arquivo_muito_grande_backup.sql e os arquivos menores serão salvos na pasta BD_dividido e vão ter nomes sequenciais do tipo: bd_aa, bd_ab, etc.
Passo 2: Subir os arquivos do banco (divididos) para o MySQL
Primeiro vamos acessar a pasta onde os arquivos foram salvoscd /home/backups/BD_dividido
Agora, vamos enviar a sequência de arquivos para o MySQL:
cat bd_* | mysql -u root -p nome_do_banco
Observação: A sintaxe “cat bd_*” é para enviar os arquivos sequenciais do banco. O prefixo “-u root” é referente ao nome de usuário root. O prefixo “-p” informa que o usuário usa uma senha e a mesma vai ser solicitada ao digitar o comando. Caso o arquivo de dump já tenha as informações de criação do banco, a informação “nome_do_banco pode ser suprimida, caso contrário, informe para qual banco os dados devem ser inseridos.
Como verificar que o processo está em andamento?
Não há nenhum output direto do comando acima, pois os dados são enviados diretamente ao mysql. Porém caso aconteça um erro, o mesmo será informado e a importação será interrompida.Como verificar o desempenho e o fluxo de dados?
É possível conectar no MySQL e ver a fila de processamento:
mysql -u root -p
show processlist;
É possível verificar o aumento de espaço em disco da pasta do banco:
du -s /var/lib/mysql
Em ambos os casos, basta executar os comandos várias vezes e verificar o andamento/evolução do procedimento.
Postar um comentário