Eu quero manter um backup de todos os meus bancos de dados MySQL. Eu tenho mais de 100 bancos de dados MySQL. Eu quero exportar todos eles ao mesmo tempo e importá-los novamente para o meu servidor MySQL ao mesmo tempo. Como eu posso fazer isso?
mysql
database-backups
mysql-backup
Novo usuário
fonte
fonte
Outra solução:
Faz o backup de cada banco de dados em um arquivo diferente
fonte
ExcludeDatabases="Database|information_schema|performance_schema|mysql"
[next line]databases=`-u $USER -p$PASWORD -e "SHOW DATABASES;" | tr -d "| " | egrep -v $ExcludeDatabases`
e remova as linhasif
efi
completamente. Na variável,ExcludeDatabases
você armazena os nomes dos bancos de dados que não devem ser despejados [normalmente bancos de dados do sistema].-Bse "show databases"
para evitar saída de formatação extra e, assim, remover| tr -d "| " | grep -v Database
. No meu script de exportação desta linha édatabases=`mysql -u $USER -p$PASSWORD -Bse "SHOW DATABASES;"
U+200C U+200B
entre o "c" e o "h" da palavra "esquema" . Isso quebra copiar e colar esse bit. Mais discussões sobre esse assunto aqui: meta.stackexchange.com/questions/170970/…Todas as respostas que vejo nesta pergunta podem ter problemas com os conjuntos de caracteres em alguns bancos de dados devido ao problema de redirecionar a saída de
mysqldump
um arquivo dentro do operador shell>
.Para resolver esse problema, você deve fazer o backup com um comando como este
Para fazer uma boa restauração do BD sem nenhum problema com os conjuntos de caracteres. Obviamente, você pode alterar o conjunto de caracteres padrão conforme necessário.
fonte
Com base nessas respostas, criei um script que faz backup de todos os bancos de dados em arquivos separados, mas depois os comprime em um único arquivo com data como nome.
Isso não pedirá senha, pode ser usado no cron. Para armazenar a senha,
.my.cnf
verifique esta resposta https://serverfault.com/a/143587/62749Feito também com comentários para aqueles que não estão muito familiarizados com os scripts do bash.
fonte
Por que analisar a saída formatada enquanto o comando mysql pode fazer diretamente o que você deseja?
Lista os nomes do banco de dados e somente isso.
fonte
Tenha cuidado ao exportar e importar para diferentes versões do MySQL, pois as tabelas mysql podem ter colunas diferentes. Conceder privilégios pode falhar se você não tiver sorte. Eu criei este script (mysql_export_grants.sql) para despejar as concessões para importar para o novo banco de dados, apenas no caso de:
fonte
Quando você está descartando todo o banco de dados. Obviamente, está tendo grandes dados. Então você pode preferir abaixo para melhor:
Criando backup:
Se erro
- Aviso: Ignorando os dados da tabela mysql.event. Especifique a opção --events explicitamente.
Usar:
Restaurando o backup:
Espero que ajude :)
fonte
Escrevi esse comentário há mais de 4 anos e decidi agora fazer uma resposta.
O script de jruzafa pode ser um pouco simplificado:
Nota:
ExcludeDatabases
fonte
mysqldump -uroot -proot --all-database> allDB.sql
nota: -u "seu nome de usuário" -p "sua senha"
fonte
Exportar todos os bancos de dados no Ubuntu
1 -
mysqldump -u root -p --databases database1 database2 > ~/Desktop/databases_1_2.sql
OU
2 -
mysqldump -u root -p --all_databases > ~/Desktop/all_databases.sql
fonte