αυτόματο backup mysql και email με τον κατάλογο του φακέλου

...το μέρος για να ξεκινήσετε!

Συντονιστής: adem1

Κανόνες Δ. Συζήτησης
Παρακαλώ να επιλέξετε, με προσοχή, την άδεια που θέλετε να έχουν οι οδηγοί που συγγράφετε.
Πληροφορίες για τις άδειες μπορείτε να βρείτε εδώ.
Άμα επιθυμείτε κάποια άλλη άδεια επικοινωνήστε με κάποιο Διαχειριστή είτε Συντονιστή.

Σημαντικό είναι να χρησιμοποιήσετε την υπηρεσία http://imagebin.ubuntu-gr.org για τις εικόνες.

αυτόματο backup mysql και email με τον κατάλογο του φακέλου

Δημοσίευσηαπό lepidas » 26 Αύγ 2013, 07:41

Ο παρακάτω οδηγός περιέχει τα εξής και δοκιμάστηκε στο Ubuntu 12.04:

α) backup(mysqldump) της βάσης δεδομένων σε προκαθορισμένους χρόνους κάθε μέρα για 7 ημέρες
β) συμπίεση της βάσης με gzip -9 όπου σε κάθε αρχείο θα προστίθεται και η ημερομηνία στο τέλος του ονόματος
γ) την 7η ημέρα διαγραφή αυτών και νέα backup για τις επόμενες 7 ημέρες κοκ
δ) αποστολή με email στον email λογαριασμό σας ο κατάλογος των αποθηκευμένων αρχείων καθημερινά για έλεγχο με το μάτι οτι όλα πήγαν καλά (θα εμφανίζεται το όνομα, το μέγεθος και η ημερομηνία δημιουργίας του backup)

για λόγους ευκολίας στην ανάγνωση του οδηγού θα χρησιμοποιήσω τα παρακάτω δεδομένα:
Κώδικας: Επιλογή όλων
ubuntu server user=username
ubuntu server username password=password
domain=site.gr
database name=site
mysql user=aaaaaaa
mysql aaaaaaa password=xxxxxx
email username=papaki
email password=pass


κατ'αρχάς προσθέτουμε τα πακέτα για να μπορεί ο server να στέλνει emails σε εμάς
Κώδικας: Επιλογή όλων
sudo apt-get install sendemail libio-socket-ssl-perl libnet-ssleay-perl


τώρα πρέπει να δημιουργήσουμε ένα απλό χρήστη για τη βάση ο οποίος θα έχει δικαιώματα μόνο ανάγνωσης αυτής για λόγους ασφαλείας.
μπαίνουμε στη σελίδα μας site.gr/phpmyadmin ως root (αν δεν έχουμε το πακέτο phpmyadmin το εγκαθιστούμε)
και πατάμε στο tab Privileges>add a new user στο παράθυρο που θα εμφανiστεί βάζουμε username=aaaaaaa - password=xxxxxx και πιο κατω στο Global privileges τικάρουμε μόνο το SELECT και αποθήκευση, κλείνουμε το tab του browser δεν θα το χρειαστούμε άλλο ανοιχτό.

Στο server τώρα, να φτιάξουμε ένα configuration αρχείο κρυφό που θα έχει μέσα τον κωδικό και το όνομα του χρήστη της βάσης mysql ώστε σε κάθε τρέξιμο του script να μη ζητάει τα credentials αλλιώς είναι αδύνατον ο cron να κάνει mysqldump,

Κώδικας: Επιλογή όλων
cd /home/username
sudo nano .my.cnf

και προσθέτουμε μέσα στο αρχέιο
Κώδικας: Επιλογή όλων
[client]
user=aaaaaaa
password=xxxxxx

[mysqldump]
user=aaaaaaa
password=xxxxxx


και δίνουμε και το παρακάτω ώστε να μην έχει άλλος δικαιώματα στο αρχέιο
Κώδικας: Επιλογή όλων
sudo chmod 400 .my.cnf


Τώρα δημιουργούμε το φάκελο που θα μπαίνουν τα backup μέσα και τα δύο εκτελέσιμα που θα κάνει το backup και το εβδομαδιαίο σβήσιμο του φακέλου για να μη γεμίζει.
Κώδικας: Επιλογή όλων
sudo mkdir backup
cd backup
sudo mkdir databases


δίνουμε
Κώδικας: Επιλογή όλων
sudo nano db-site

και βάζουμε μέσα
Κώδικας: Επιλογή όλων
#!/bin/bash
cd /home/username/backup/databases
DATE=$(date +"%d-%m-%Y_%H:%M")
/usr/bin/mysqldump --defaults-file=/home/username/.my.cnf --single-transaction -h localhost site | gzip -9 > site.sql_$DATE.gz

ls -l -h -S | awk '{print $5, $6, $7, $9}' > print-db.txt
sendEmail -f papaki@gmail.com -t papaki@gmail.com -u "site.gr database backup DONE!" < print-db.txt -s smtp.gmail.com:25 -xu papaki -xp pass


Κώδικας: Επιλογή όλων
sudo nano remove-old-databases

και βάζουμε μέσα
Κώδικας: Επιλογή όλων
#!/bin/bash
rm /home/username/backup/databases/*


εκτελέσιμα με
Κώδικας: Επιλογή όλων
sudo chmod +x db-site
sudo chmod +x remove-old-databases


για να εκτελείται το backup κάθε μέρα ανοίγουμε το cron
Κώδικας: Επιλογή όλων
sudo crontab -e

και βάζουμε αυτα στο τέλος
Κώδικας: Επιλογή όλων
# εδώ κάνει backup τις βάσεις δεδομένων
05 04 * * * /home/username/backup/db-site
# εδώ μια φορά την εβδομάδα κάνει remove τις παλιές βάσεις δεδομένων
00 04 * * 0 /home/username/backup/remove-old-databases


τέλος, αυτό ήταν, το πρωί θα έρθει ένα email, το ανοίγουμε να δουμε οτι ολα πήγαν καλά
Creative Commons License
Η εργασία υπάγεται στην άδεια Creative Commons Αναφορά-Παρόμοια διανομή 3.0 Ελλάδα
Άβαταρ μέλους
lepidas
superbTUX
superbTUX
 
Δημοσιεύσεις: 3326
Εγγραφή: 11 Μάιος 2011, 11:10
Εκτύπωση

Re: αυτόματο backup mysql και email με τον κατάλογο του φακέ

Δημοσίευσηαπό the_eye » 26 Αύγ 2013, 21:13

Πολύ καλό. Ένα backup που πρέπει να τρέχει σε κάθε mysql server !
Όσο λιγότερο κλειστό λογισμικό έχεις, τόσα λιγότερα προβλήματα.
1 Γνώσεις ⇛ Linux: Καλό ┃ Προγραμματισμός: Ναι PHP, MySQL ┃ Αγγλικά: Καλά
2 Ubuntu 22.04 Jammy Jellyfish 5.15.0-58-generic 64bit (el_GR.UTF-8, ubuntu:GNOME ubuntu)
3 Intel Core i3-6100 CPU @ 3.70GHz ‖ RAM 7836 MiB ‖ Gigabyte B150M-HD3 DDR3-CF - Gigabyte B150M-HD3 DDR3
4 Intel HD Graphics 530 [8086:1912] {i915}
5 enp1s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 15)
Οδηγοί Ubuntu Βίντεο Οδηγοί
Άβαταρ μέλους
the_eye
Διαχειριστής
Διαχειριστής
 
Δημοσιεύσεις: 11672
Εγγραφή: 16 Μαρ 2010, 17:19
Launchpad: ntoulasd
IRC: the_eye_
Εκτύπωση


Επιστροφή στο Οδηγοί - How to - Tutorials

cron