Слушайте, друзья. Я не буду делать вид, что это какая-то суперсложная тема или редкость — бэкапы. Нет. Это база. И если вы ещё не начали их делать — скорее всего, просто не “попали по дате”. Как говорит мой бывший коллега Рино Мингардо: “Сисадмины делятся на два типа, на тех, кто делает бэкапы и тех, кто УЖЕ делает бэкапы.” То есть, рано или поздно у вас что-нибудь сломается, и тогда вы вспомните этот момент.
В общем, делюсь скриптом для автоматического бэкапа MySQL. Он простой, но рабочий. В своё время спас меня от полного провала на одном из проектов. Честно говоря, мне было стыдно — я как раз не делал бэкапы неделю. А потом БД накрылась. Хорошо, что к тому времени уже был написанный шелл-скрипт. Оставалось только запустить его и восстановить данные.
Итак, вот он:
#!/bin/bash
mkdirs=$(date +%F)
MYSQLDUMPFILE="/usr/local/mysql/bin/mysqldump"
OUTPUT="/DBBackups/"$mkdirs
mkdir $OUTPUT
echo $OUTPUT
USERPAS="-u root --password=yourpass"
$MYSQLDUMPFILE $USERPAS base1 > $OUTPUT'/base1.sql'
$MYSQLDUMPFILE $USERPAS base2 > $OUTPUT'/base2.sql'
… и так далее
Что здесь происходит? Да всё просто: создаём папку под текущую дату, указываем куда сохранять, логинимся в MySQL, и делаем дампы всех нужных баз.
Если вы новичок, то да — это вам подойдёт. Если опытный — возможно, захотите добавить сжатие, логирование, проверки на существование папок и т.п. Но это уже “на вкус и цвет”.
Где хранить?
Я обычно кладу такой скрипт в /usr/local/dump.sh
— удобно, понятно. Потом даю права на исполнение:
chmod +x /usr/local/dump.sh
Ну и, конечно, прописываю его в cron, чтобы выполнялся автоматически. Например, раз в день в 3 часа ночи:
0 3 * * * /usr/local/dump.sh
А можно даже каждые 6 часов, если данные критически важны. Всё зависит от ваших приоритетов и нагрузки на сервер.
Пара советов
- Не забудьте заменить yourpass на настоящий пароль root. Или лучше создать отдельного пользователя с минимальными правами, но зато с доступом к дампу.
- Убедитесь, что директория /DBBackups/ существует и в неё можно писать.
- Периодически проверяйте, что файлы действительно создаются, а не просто предполагаете, что «всё работает».
- Если боитесь потерять сам скрипт — положите его копию в Git или просто на другой сервер. На всякий случай.
И главное — помните: у хорошего админа есть бэкапы бэкапов. Не ждите пока что-то сломается. Сделайте это сегодня. Прямо сейчас. Пока не стало больно.