Temos 40 bancos de dados em nosso servidor.
Queremos fazer backup de 36 bancos de dados usando mysqldump. Como posso ignorar os 4 bancos de dados restantes no comando mysqldump? Existe alguma opção para o mysqldump ignorar bancos de dados para backup no MySQL?
Eu conheço o comando geral mysqldump, mas é muito longo. Eu quero ignorar apenas 4 bancos de dados e preciso fazer backup de dbs restantes.
Em 16 de dezembro de 2011, eu respondi a pergunta Como você faz para mysqldump tabela(s) específica(s)?
Eu coletei todas as tabelas, não incluindo um determinado conjunto de nomes de tabelas.
Usando os mesmos princípios, você poderia coletar todos os nomes de banco de dados da tabela de metadados
information_schema.schemata
que deseja mysqldump'd, criar uma consulta para retornar essa lista e usar essa lista de bancos de dados para formular o comando mysqldump.Tudo o que você precisa fazer é colocar os bancos de dados nos quais você não deseja mysqldump'd
DATABASES_TO_EXCLUDE
De uma chance !!!
Use grep para excluir bancos de dados que você não deseja:
Olhando para https://stackoverflow.com/questions/19354870/bash-command-line-and-input-limit , parece que você será capaz de lidar com longas filas. Caso contrário, você sempre pode
Eu não acho que seja possível, mas você pode tentar esta solução que você terá que digitar os nomes de todos os bancos de dados que deseja despejar.
Deixe-me saber se a solução ajuda.
Mesmo aqui há tantas respostas excelentes, então este post é apenas para adicionar mais uma opção. Abaixo de 2 linhas no script, você pode fazer backup de todos os seus servidores de banco de dados ignorando alguns bancos de dados.
Desde o MySQL 5.7.8, você pode usar
mysqlpump
(que NÃO é o mesmo quemysqldump
) da seguinte forma:Basta substituir
db1,db2,db3,db4
pelos quatro bancos de dados que você deseja excluir.Fonte: Blog do servidor MySQL
Alternativamente, você pode consultar os seguintes links;
Opção de Ignorar Banco de Dados do Mysqldump
Alguns hacks para simular mysqldump --ignore-database
Implementando mysqldump –ignore-database
Deixe-me saber se a solução ajuda.
Boa sorte!
Muitos sempre quiseram que o mysqldump ignorasse os bancos de dados.
Você acreditaria que essa opção existe agora ??? Não, não no mysqldump.
Oracle (Yuck, toowee, ainda não sai da língua) tem DataPump (expdb impdp) para despejar bancos de dados Oracle. Desde o MySQL 5.7 na família Oracle (ainda doendo), o novo programa utilitário de backup é chamado mysqlpump , que vem com --exclude-databases e outras opções interessantes. Assim como o datapump mais antigo , o mysqlpump também apresenta paralelismo para ajudar a acelerar os dumps e dividir o trabalho . Neste momento, não me incorporei no trabalho, mas parece muito promissor. Quando me aprofundo no mysqlpump , posso descobrir que ele traz a mesma aparência do datapump da Oracle .
Se houver alguém no MySQL Parallel Universe com histórias sobre isso, por favor poste aqui.
A resposta de Rolando é ótima, mas eu queria um script que pudesse ser reutilizado em projetos. Então, peguei o script dele e o modifiquei para que você possa fazer coisas como:
Aqui está o script modificado:
(Ainda espero que uma
--ignore-database
opção seja adicionada a uma versão futura do mysqldump)Você pode usar este para produção
Exclui
'performance_schema\|information_schema\|mysql\|sys'
...modifique para suas necessidadesEu sou capaz de ignorar determinado nome de banco de dados usando o script abaixo. Estou excluindo o banco de dados information_schema ao executar o mysqldump. Você pode substituir "information_schema" pelo nome do banco de dados que deseja excluir.