Domanda Backup mysql dal terminale


Ho programmato un lavoro cron per il backup dei database mysql su ubuntu9.10. Ho usato le seguenti voci nel file cron.

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

Esegue il backup di tutti i database inseriti in un singolo file chiamato "all-databases.sql". Questo è quello che volevo. Ma se voglio ripristinare un singolo database dovrò ripristinare tutti i database. C'è qualche trucco per fare il backup di tutti i database mysql in una directory con il loro nome di database individualmente ?.


6
2017-10-14 12:34


origine




risposte:


Ti suggerisco di leggere: http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

È possibile eseguire il dump di diversi database con: mysqldump [opzioni] - database DB1 [DB2 DB3 ...]

Devi solo aggiungere un cronjob per ogni database:

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

Ovviamente potresti fare uno script bash per tutti i diversi database ed eseguire quello script da crontab. Inoltre vorrei gzip up.

In bocca al lupo


12
2017-10-14 12:40



Buona risposta. Ho pensato che potesse essere raggiunto in un unico comando - user3215


Si C'è.

Per coloro che hanno più database, diciamo 50 - 100, inserendoli uno dopo l'altro sarà doloroso piazzare

Dovrai creare un file ih di file bash / shell con estensione ".sh", dopo di che lo renderai eseguibile modificandolo mod

chmod 777 <file_name>.sh

quindi inserisci il tuo codice sopra con queste poche modifiche;

quello che stiamo facendo qui è query mysql per l'elenco di database (s) e mettere l'output in un ciclo per ogni 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

Infine aggiungerai il file a crontab e shedule il tempo di backup. Puoi anche eseguire manualmente il comando digitando:

bash <name of the file>.sh

o

sh <name of the file>.sh

2
2018-04-01 16:04