Резервное копирование баз данных с отправкой на email
Быстрый и надёжный способ создания резервных копий баз данных
Навеяно статьёй Дмитрия «Ежедневный бэкап для WordPress с помощью Gmail», которую я очень рекомендую к прочтению.
Основное отличие моего метода кроется в моих «религиозных предпочтениях»: я считаю, что вряд ли какая программа сможет сделать копию базы быстрее, чем mysqldump, и бинарный файл всегда работает быстрее, нежели самый оптимизированный PHP-код. Поэтому никаких лишних плагинов для WordPress, только подручные средства
Хотя данное решение не подойдёт людям, использующих shared-хостинг.
Случай 1. Резервное копирование всех баз данных.
set -e
MYSQL_USER=user
MYSQL_PASS=pass
MAIL_TO=my@email.com
cd /tmp
(mysqldump -u$MYSQL_USER -p$MYSQL_PASS --all-databases | gzip -9 - > dump.sql.gz) && \
(echo | mutt -a dump.sql.gz -s "[DB BACKUP]" $MAIL_TO)
rm -f dump.sql.gz
Вместо gzip можно использовать bzip2 или просто zip — каждому своё
Случай 2. Резервное копирование некоторых баз данных в один файл.
set -e
MYSQL_USER=user
MYSQL_PASS=pass
DATABASES="db1 db2 db3"
MAIL_TO=my@email.com
cd /tmp
(mysqldump -u$MYSQL_USER -p$MYSQL_PASS --databases $DATABASES | gzip -9 - > dump.sql.gz) && \
(echo | mutt -a dump.sql.gz -s "[DB BACKUP]" $MAIL_TO)
rm -f dump.sql.gz
Однако почтовые сервисы часто накладывают ограничения на максимальный размер вложения. Поэтому, если базы данных очень большие, эти два способа не сработают.
Случай 3. Резервное копирование всех баз данных (для каждой базы отдельный файл).
set -e
MYSQL_USER=user
MYSQL_PASS=pass
MAIL_TO=my@email.com
cd /tmp
for db in `mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
(mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz) && \
(echo | mutt -a {$db}.sql.gz -s "[DB BACKUP] {$db}" $MAIL_TO)
rm -f ${db}.sql.gz
done
Случай 4. Резервное копирование некоторых баз данных (для каждой базы отдельный файл).
set -e
MYSQL_USER=user
MYSQL_PASS=pass
DATABASES="db1 db2 db3"
MAIL_TO=my@email.com
cd /tmp
for db in $DATABASES; do
(mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz) && \
(echo | mutt -a {$db}.sql.gz -s "[DB BACKUP] {$db}" $MAIL_TO)
rm -f ${db}.sql.gz
done
Для простоты я не задавал лишних опций (например, -K -e -q) mysqldump.
Если сервер выделенный и есть желание запускать mysqldump от имени root, то вместо задания паролей в Debian можно использовать mysqldump --defaults-file=/etc/mysql/debian.cnf.
Апр
2009
Комментарии к статье «Резервное копирование баз данных с отправкой на email» (2) »
Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.
Оставить комментарий к записи «Резервное копирование баз данных с отправкой на email»
गते गते पारगते पारसंगते बोधि स्वाहा
Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.


Пытаюсь повешать скрипт бэкапа на крон (3 скрипт), при запуске мне выдаёт ошибку – Exited with return code = 126
Что может быть?
mutt установлен?