Архивирайте mysql бази данни на FreeBSD, Media UniX
freebsd команди, конфигурация, инсталиране на сървъра и др
- локално копие с компресия
- изпращане на архив по имейл
- копиране с компресиране на ftp и известяване по пощата при успешно завършване.
Създайте файл: ee /usr/local/etc/rc.d/mdump.sh Ако направим копие на базата данни с компресия, скриптът ще изглежда така:
#!/bin/sh DATE=`date "+%Y-%m-%d%.%H.%M.%S"` BKPDIR='/var/db/mysql' /usr/local/bin/mysqldump -udbuser -pdbuserpassword test /usr/bin/gzip -c > $BKPDIR/$DATE.mdump.gz
Обяснения: DATE е променлива, която е необходима за формиране на името на целевия архив. Името на архива ще бъде датата и часът на неговото създаване, а именно "year-month-day.hours.minutes.seconds.mdump.gz" , ако копията се правят веднъж на ден, тогава е по-добре тази променлива да се намали до: DATE=`date "+%Y-%m-%d"` копия. Следващият, най-дългият ред: /usr/local/bin/mysqldump - всъщност самата помощна програма mysqldump -uuser_db -точно без интервали. -u - опция, указваща потребителя, под който ще се свържем с mysql, за да създадем резервно копие, а user_db е само името на този потребител. -pdb_user_password - тук по аналогия с опцията -u говорим само за паролата на горния потребител. test е името на базата данни /usr/bin/gzip е пътят до архиватора $BKPDIR/$DATE.mdump.gz е само изходният файл, който е / директория към archives/date..mdump.gz
Ако имате нужда от него без архивиране, което обикновено е съмнително желание, тогава списъкът със скриптове е по-долу: #!/bin/sh DATE=`date "+%Y-%m-%d%.%H.%M.%S"` BKPDIR='/var/db/mysql' /usr/local/bin/mysqldump -uuser -pdb_userpassword test > $BKPDIR/$DATE.mdump.sql
Забележка: За да сравня ефекта от компресията, ще кажа, че: изхвърлянето на базата данни на zabbix без компресия тежи приблизително 124 652 KB компресираният дъмп на базата данни на zabbix тежи приблизително 18 838 KB съответно, компресираният тежи приблизително 6,5 по-малко.
Направете файла изпълним: chmod +x /usr/local/etc/rc.d/mdump.sh
и да го синхронизирате за планирано изпълнение /etc/crontab #минута час mday месец wday who команда 0 2 * * * root /bin/sh /usr/local/etc/rc.d/mdump.sh всеки ден в 2 сутринта ще се създава копие в /var/db/mysql
2) Акое необходимо да изпратите архива на базата данни mysql на поща, тогава:
cd /usr/ports/converters/mpack make install clean rehash
Отново създайте скрипт (произволно име): ee /usr/local/etc/rc.d/mdump.sh
Въведете: #!/bin/sh DATE=`date "+%Y-%m-%d"` BKPDIR='/var/db/mysql'
/usr/local/bin/mysqldump -uuser -pdbuser тест за парола /usr/bin/gzip -c > $BKPDIR/$DATE.mdump.gz /usr/local/bin/mpack -s "backup mysql" $BKPDIR/$DATE.mdump.gz [email protected] /bin/rm $BKPDIR/$DATE.mdump.gz
Първо създаваме променливи, след това създаваме дъмп, изпращаме дъмпа по пощата и го изтриваме локално. Ще обясня само тези редове, които са променени в сравнение с предишната версия. mpack е помощната програма, от която се нуждаем. "backup mysql" - тема "backup mysql" $BKPDIR/$DATE.mdump.gz - файл за изпращане [email protected] - до когото изпращаме /bin/rm $BKPDIR/$DATE.mdump.gz - изтриване на локално архивно копие
Инсталирайтеконзолен FTP клиент -lftp, той поддържа FTPS, HTTP, HTTPS, HFTP, FISH и SFTP протоколи.
cd /usr/ports/ftp/lftp направете инсталацията чиста
Опции за lftp 4.3.1 [X] OPENSSL С поддръжка на OpenSSL [ ] GNUTLS С поддръжка на GnutTLS [X] NLS С поддръжка на i18n
При инсталиране: преразгледайте
След това караме самия скрипт да изпрати до FTP: ee /usr/local/etc/rc.d/mdump.sh
съдържание: #!/bin/sh BKPDIR='/var/db/mysql' DATE=`date "+%Y-%m-%d"` srvbkp='server.com' login='admin' pass='pasftp'
/usr/local/bin/mysqldump -udbusername -pdbuserpassword тест /usr/bin/gzip -c > $BKPDIR/$DATE.mdump.gz
if [ "`find /var/db/mysql/ -type f -name '*.mdump.gz' grep ".mdump.gz"`" ] then /usr/local/bin/lftp -u $login,$pass -e "put $BKPDIR/$DATE.mdump.gz;exit" $srvbkp echo "bkp $DATE from $s rvbkp - OK" mail -s "backup $srvbkp" [email protected] fi
/bin/rm $BKPDIR/$DATE.mdump.gz изход
Както винаги, караме в корони, в удобно време. Нека отново анализираме редовете, които липсваха в предишните версии: srvbkp='server.com' - променлива, в която указваме ftp сървъра, към който ще добавяме копия. login='admin' - admin е потребител с ftp достъп за запис. pass='pasftp' е паролата на администраторския потребител. След това се прави дъмп, след което следва условието: Ако файлът, завършващ на ".mdump.gz", е в директорията, където трябва да бъде създаден, тогава го копирайте на FTP, прекъснете връзката със сървъра, изпратете писмо в случай на успешно копиране и изтрийте дъмпа локално.
Забележка: Редът, отговорен за изпращане на писмото: echo "bkp $DATE от $srvbkp - OK" mail -s "backup $srvbkp" [email protected] за да работи, трябваинсталирайте / конфигурирайте ssmtp, това се прави лесно според статията. Ако не се нуждаете от известия по имейл, просто изтрийте този ред. И още един нюанс. Ако трябва да архивирате всички бази данни, тогава трябва да използвате опцията -A: /usr/local/bin/mysqldump -uuser_db -ppassword_db_user -A /usr/bin/gzip -c > $BKPDIR/$DATE.mdump.gz