Centos 6 backup baz mysql i wysyłanie ich na maila przy użyciu gmaila


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 🙂

mysql

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

 

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.