mysql logo (110 x 57)

προγραμματισμένο mysql backup

Είδαμε κάτι αντίστοιχο για τον sql server express, αλλά ήρθε και η ώρα του mysql backup. Όταν μιλάμε για mysql, μιλάμε για linux κι όταν μιλάμε για linux, ανοίγουμε την κονσόλα.

mysql backup, όλα και γρήγορα!

Ας δούμε κατ’αρχήν πως κάνουμε παίρνουμε στα γρήγορα ένα backup για όλες τις databases:

mysqldump -u root -p --all-databases > alldb.sql

Θα σας ζητηθεί ο κωδικός του root.

Για να μην ζητάει τον κωδικό του root (π.χ. cron), θα πρέπει να κολλήσετε δίπλα στο -p τον κωδικό:

mysqldump -u root -pSECRET --all-databases > alldb.sql

…και συμπίεση;

Προφανώς θα θέλετε να συμπιέσετε το αρχείο, κάτι που χάρη στην κονσόλα και το piping, γίνεται με μιας, κάπως έτσι:

mysqldump -u root -pSECRET --all-databases | bzip2 -c > alldb.$(date +%Y-%m-%d-%H.%M.%S).sql.bz2

Παρατηρήστε την απλότητα με την οποία δηλώνουμε την ημερομηνιακή μορφή του συμπιεσμένου:

$(date +%Y-%m-%d-%H.%M.%S)

ή μήπως καλύτερα σκριπτάκι;

Συχνά, είναι προτιμότερο να διατηρούμε αντίγραφο της κάθε database σε χωριστό αρχείο. Ακολουθεί ένα ωραιότατο σκριπτάκι bash, το οποίο διαβάζει τα ονόματα των βάσεων δεδομένων και για κάθε μια από αυτές – πλην των συστημικών του mysql – λαμβάνει αντίγραφο και το ζιπάρει!

#!/bin/bash

USER="root"
PASSWORD="SECRET"

databases=`mysql -u $USER -p$PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`

for db in $databases; do
    if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] && [[ "$db" != _* ]] ; then
        echo "Dumping database: $db"
        OUTPUT=`date +%Y%m%d`.$db.sql
        mysqldump -u $USER -p$PASSWORD --databases $db > $OUTPUT
        gzip $OUTPUT
    fi
done

Ονομάστε το σκριπτάκι backup και μην ξεχάσετε να το κάνετε εκτελέσιμο:

chmod +x backup

Τώρα, για να έχετε το κεφάλι σας ήσυχο βάλτε το και σε ένα κρον (crontab -e) και καλή ανάσταση:

0 7 * * * /root/mysqlbackups/backup

 


Comments

Αφήστε μια απάντηση

Η ηλ. διεύθυνση σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *