Backup do mysql do terminal

6

Eu agendei um cron job para fazer backup dos bancos de dados mysql no ubuntu9.10. Eu usei as seguintes entradas no arquivo cron.

37 4 * * * root /usr/bin/mysqldump -u root -p<mysql-password> --all-databases > /usr/backup/mysqlbkup/all-databases.sql

Faz o backup de todos os bancos de dados colocados em um único arquivo chamado 'all-databases.sql'. Isso é o que eu queria. Mas se eu quiser restaurar um único banco de dados, terei que restaurar todos os bancos de dados. Existe algum truque para fazer backup de todos os bancos de dados mysql para um diretório com o nome do banco de dados individualmente?.

    
por user3215 14.10.2010 / 14:34

2 respostas

12

Sugiro que você leia: link

Você pode fazer o dump de diferentes bancos de dados com: mysqldump [options] --databases DB1 [DB2 DB3 ...]

Você só precisa adicionar um cronjob para cada banco de dados:

37 4 * * * root /usr/bin/mysqldump -u root -p<mysql-password> --databases database1 > /usr/backup/mysqlbkup/databases1.sql
38 4 * * * root /usr/bin/mysqldump -u root -p<mysql-password> --databases database2  database3 > /usr/backup/mysqlbkup/databases2_3.sql

É claro que você pode criar um script bash para todos os diferentes bancos de dados e executar esse script a partir do crontab. Também eu gostaria gzip-lo.

Goodluck

    
por Niels van Reijmersdal 14.10.2010 / 14:40
2

Sim, existe.

Para aqueles que têm vários bancos de dados, digamos de 50 a 100, digitando um após o outro será doloroso

Você terá que criar um arquivo bash / shell, isto é, um arquivo com a extensão ".sh", após o qual você irá torná-lo executável alterando-o mod

chmod 777 <file_name>.sh

digite seu código acima com estas poucas alterações;

o que estamos fazendo aqui é query mysql para a lista de banco (s) de dados e colocando a saída em um loop para cada turno

database='mysql --user=<enter username> --password=<enter password> -e "SHOW DATABASES"'
for db in $database; do
    echo "$db"
    mysqldump --user="<enter username>" --password="<enter password>" --databases "$db" > <path_to_store_your_database>/"$db".sql
    gzip "$db"
done

Por fim, você adicionará o arquivo a crontab e o tempo de backup. Você também pode executar o comando manualmente digitando:

bash <name of the file>.sh

ou

sh <name of the file>.sh
    
por Remilekun Olowookere 01.04.2015 / 18:04

Tags