Postanowiłem skonfigurować sobie automatyczny codzienny backup bazy danych mysql oraz wysyłanie backupa na adres mailowy aby dysk lokalny nie był jedynym miejscem gdzie backup jest przechowywany 🙂
Zaczynamy od zalogowania się jako root poleceniem su po którym podajemy hasło roota:
su
Następnie tworzymy sobie w katalogu domowym roota katalog skrypty w którym będziemy tworzyć swoje skrypty:
mkdir /root/skrypty
Teraz tworzymy plik w którym znajdzie się skrypt odpowiedzialny za backupowanie naszej bazy danych mysql:
touch /root/skrypty/backup_mysql.sh
nadajemy mu prawo wykonywania przez roota:
chmod 744 /root/skrypty/backup_mysql.sh
i wklejamy zawartość pliku:
#!/bin/bash
cd /home/sloniupl/backup_mysql/
mkdir `date +%m-%d-%Y`
cd `date +%m-%d-%Y`
mysqldump -u root -phaslo --all-databases | gzip > wszystko_`date +%m-%d-%Y`.sql.gz
mysqldump -u root -phaslo blog | gzip > blog_`date +%m-%d-%Y`.sql.gz
Gdzie:
/home/sloniupl/backup_mysql/ – jest to istniejący katalog w którym będą przechowywane backupy, można go zmienić na dowolny.
-phaslo – zamiast haslo należy wpisać hasło użytkownika root bazy danych mysql
Pierwsza linijka mysqldump z parametrem –all-databases robi backup wszystkich baz danych do jednego pliku i odrazu pakuje go gzipem.
Natomiast druga linijka mysqldump tworzy archiwum gzip zawierające tylko i wyłącznie bazę o nazwie blog.
Po znaczniku > jest podawana nazwa tworzonego archiwum.
Uruchamiamy nasz skrypt i sprawdzamy czy tworzą się backupy. Jeśli pliki tworzą sie poprawnie to teraz przechodzimy do cześci wysyłania backupów mailami.
Najpierw instalujemy dwa programy:
yum install ssmtp mutt
Następnie edytujemy plik konfiguracyjny ssmtp:
nano /etc/ssmtp/ssmtp.conf
A jego zawartość zamieniamy na taką:
root=naszmail@gmail.com
mailhub=smtp.gmail.com:587
rewriteDomain=
hostname=localhost
FromLineOverride=YES
AuthUser=naszmail@gmail.com
AuthPass=haslodogmaila
UseTLS=YES
UseSTARTTLS=YES
AuthMethod=LOGIN
Gdzie:
naszmail@gmail.com – to adres naszego konta mailowego na gmailu który wpisujemy w pierwszej linijce oraz w linijce AuthUser=
mailhub=smtp.gmail.com:587 – musi być takie dla gmaila
haslodogmaila – to nasze hasło jakim logujemy się do maila w gmailu musi być wpisane w pozycji AuthPass=
Zmieniamy uprawnienia do tego pliku:
chown root:mail /etc/ssmtp/ssmtp.conf
chmod 640 /etc/ssmtp/ssmtp.conf
Dodajemy użytkownika root do grupy mail:
usermod -g mail root
następne jest polecenie zmieniające domyślny config sendmaila:
alternatives --config mta
wybieramy 2 aby zaznaczyć /usr/sbin/sendmail.ssmtp aby plik wyglądał tak:
[root@sloniupl skrypty]# alternatives –config mta
Jest 2 programów dostarczających „mta”.
Wybór Polecenie
———————————————–
* 1 /usr/sbin/sendmail.postfix
+ 2 /usr/sbin/sendmail.ssmtp
Proszę nacisnąć przycisk Enter, aby zachować bieżący wybór[+] lub podać numer wyboru: 2
Teraz tworzymy skrypt który bezie wysyłał backupy mailem:
touch /root/skrypty/send_backup.sh
chmod 744 /root/skrypty/send_backup.sh
Edytujemy plik:
nano /root/skrypty/send_backup.sh
A w jego treść wklejamy:
#!/bin/bash
DATT=`date +%m-%d-%Y`
mutt adresat@gmail.com -a /home/sloniupl/backup_mysql/"$DATT"/wszystko_"$DATT".sql.gz -s "Backup bazy MySQL wszystko_$DATT" < /root/skrypty/tresc.maila
mutt adresat@gmail.com -a /home/sloniupl/backup_mysql/"$DATT"/blog_"$DATT".sql.gz -s "Backup bazy MySQL blog_$DATT" < /root/skrypty/tresc.maila
Gdzie:
adresat@gmail.com – to adres na który zostanie wysłany mail z backupem, możne być z dowolnej omeny np. kowalski@wp.pl
/home/sloniupl/backup_mysql/ – lokalizacja backupów tworzonych przez pierwszy skrypt
„Backup bazy MySQL wszystko_$DATT” – temat wiadomości mailowej
/root/skrypty/tresc.maila – pliczek zawierający treść maila
Oczywiście możemy wysyłać do różnych odbiorców
I na koniec tworzymy pliczek który zawiera treść maila:
touch /root/skrypty/tresc.maila
I wpisujemy w jego tresc cokolwiek chcemy:
nano /root/skrypty/tresc.maila
Treść którą wpiszemy do pliku bedzie treścią maila natomiast pliczek z backupem bazy danych będzie jako załącznik.
Na koniec dodajemy oba skrypty do crontaba:
crontab -e
i wklejamy:
30 3 * * * /root/skrypty/backup_mysql.sh
30 4 * * 1 /root/skrypty/send_backup.sh
Co oznacza że skrypt backup_mysql.sh bezie się uruchamiał codziennie o godzinie 3:30 natomiast skrypt send_backup.sh tylko w poniedziałki o godzinie 4:30.
Gotowe 🙂
Linkografia:
http://mati-ck.pl/index.php/2012/08/18/backup-bazy-danych-wysylany-na-maila/
http://crashmag.net/setting-up-ssmtp-with-gmail