Estou sofrendo com lentidão no mysqldump/mariadb-dump.
Descobri que desabilitar autocommit, unique_checks and foreign_key_checks
aumenta o desempenho da importação.
Eu faço isso adicionando dump.sql
antes
SET autocommit=0;SET unique_checks=0;SET foreign_key_checks=0;
e anexando
COMMIT;SET unique_checks=1;SET foreign_key_checks=1;
até o fim disso.
Acrescentar é trivial, mas ao acrescentar preciso fazer um acordo entre tempo ou espaço consumido.
Prependendo com
sed -i '0,/^/s//SET autocommit=0;SET unique_checks=0;SET foreign_key_checks=0;/' dump.sql
pode levar muito tempo para despejos grandes, mas cria um único arquivo.
cat <(echo "SET autocommit=0;SET unique_checks=0;SET foreign_key_checks=0;") dump.sql <(echo "COMMIT;SET unique_checks=1;SET foreign_key_checks=1;") > new-dump.sql"
É rápido, mas cria outro arquivo de despejo e, portanto, usa muito espaço (mesmo que seja apenas temporário)
É possível instruir mysqldump/maridb-dump
para acrescentar e acrescentar um texto personalizado ao dump quando ele estiver sendo criado?
Usar
echo
antes e depois domariadb-dump
comando e então redirecionar a saída para um arquivo deve funcionar pelo menos com o bash:Isso também funciona quando você canaliza a saída para um servidor remoto ou outro programa como
gzip
.Prefiro usar um script bash para importação grande. É simples e muito útil, especialmente em réplicas quando você pode executar
start slave/replica
após a restauração ser concluída.Outros comandos podem ser adicionados, como
net_buffer_length
oumax_allowed_packet
etc.Ele exibe no terminal o horário em que a restauração começou e terminou.
Script Bash
Editar A questão era sobre criar um dump de banco de dados, não carregar um em um banco de dados
Eu ainda prefiro usar um script que seja mais eficaz, ele pode ser facilmente adaptado com base nas necessidades
Ele exibirá algo como