Ετικέτα: cron

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

    προγραμματισμένο 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

     

  • linux: επανεκκίνηση κάθε μέρα στις 7:00

    linux: επανεκκίνηση κάθε μέρα στις 7:00

    Οι περισσότεροι λινουξάδες σιχαίνονται την επανεκκίνηση και μάλιστα την προγραμματισμένη γιατί τις περισσότερες φορές συγκαλύπτει το άλυτο πρόβλημα με αυτή την πυροσβεστική και προσωρινή λύση. Αν όμως δεν θέλετε να ψαχτείτε και πιστεύετε ότι το reboot θα λύσει μέρος των προβλημάτων σας, ο τρόπος για να το προγραμματίσετε είναι ο παρακάτω.

    sudo crontab -e

    Προσθήκη της γραμμής:

    0 7 * * * /sbin/shutdown -r +10

    Αποθήκευση του αρχείου και τέλος.