Existe uma maneira de restringir certas tabelas do comando mysqldump?
Por exemplo, eu usaria a seguinte sintaxe para despejar apenas a tabela1 e a tabela2:
mysqldump -u username -p database table1 table2 > database.sql
Mas existe uma maneira semelhante de despejar todas as tabelas, exceto table1 e table2? Eu não encontrei nada na documentação do mysqldump, então a força bruta (especificando todos os nomes de tabela) é o único caminho a percorrer?
Com base na resposta de @ Brian-Fisher e nos comentários de algumas das pessoas nesta postagem, tenho várias tabelas enormes (e desnecessárias) no meu banco de dados, então eu queria pular o conteúdo delas ao copiar, mas manter a estrutura :
Os dois arquivos resultantes são estruturalmente sólidos, mas os dados despejados agora são ~ 500 MB em vez de 9 GB, muito melhores para mim. Agora posso importar esses dois arquivos para outro banco de dados para fins de teste sem ter que me preocupar em manipular 9 GB de dados ou ficar sem espaço em disco.
fonte
para vários bancos de dados:
fonte
mysqld
emysqldump
seria o mesmo programa.Outro exemplo para ignorar várias tabelas
usando
--ignore-table
e criando uma matriz de tabelas, com sintaxes comodatabase.table
Links com informações que ajudarão você
comprimir saída mysqldump
Importar banco de dados
Script simples para ignorar tabelas
fonte
Para excluir alguns dados da tabela , mas não a estrutura da tabela . Aqui está como eu faço isso:
Despejar a estrutura do banco de dados de todas as tabelas, sem nenhum dado:
Em seguida, despeje o banco de dados com dados, exceto as tabelas excluídas, e não despeje a estrutura:
Em seguida, para carregá-lo em um novo banco de dados:
fonte
Você pode usar o
mysqlpump
comando com ocomando. Ele especifica uma lista separada por vírgula de tabelas a serem excluídas.
A sintaxe do mysqlpump é muito semelhante ao mysqldump, mas tem um desempenho muito superior. Mais informações sobre como usar a opção de exclusão, você pode ler aqui: https://dev.mysql.com/doc/refman/5.7/en/mysqlpump.html#mysqlpump-filtering
fonte
Despejar todos os bancos de dados com todas as tabelas, mas pular determinadas tabelas
no github: https://github.com/rubo77/mysql-backup.sh/blob/master/mysql-backup.sh
Com uma pequena ajuda de https://stackoverflow.com/a/17016410/1069083
Ele usa o lzop, que é muito mais rápido, veja: http://pokecraft.first-world.info/wiki/Quick_Benchmark:_Gzip_vs_Bzip2_vs_LZMA_vs_XZ_vs_LZ4_vs_LZO
fonte
Gosto da solução de Rubo77, não a tinha visto antes de modificar a de Paul. Este fará backup de um único banco de dados, excluindo as tabelas que você não deseja. Ele irá compactá-lo e excluir todos os arquivos com mais de 8 dias de idade. Provavelmente usarei duas versões disso que fazem uma (tabela de logs menos) completa uma vez por dia e outra que apenas faz backup das tabelas mais importantes que mais mudam a cada hora, usando alguns trabalhos cron.
fonte
Por uma questão de completude, eis um script que realmente pode ser uma linha para obter um backup de um banco de dados, excluindo (ignorando) todas as visualizações. O nome do banco de dados é considerado empregado:
Você pode atualizar a lógica da consulta. Em geral, use
group_concat
econcat
você pode gerar quase qualquer string ou comando de shell desejado.fonte