Скрипт автоматического бэкапа баз mysql

Слушайте, друзья. Я не буду делать вид, что это какая-то суперсложная тема или редкость — бэкапы. Нет. Это база. И если вы ещё не начали их делать — скорее всего, просто не “попали по дате”. Как говорит мой бывший коллега Рино Мингардо:Сисадмины делятся на два типа, на тех, кто делает бэкапы и тех, кто УЖЕ делает бэкапы.” То есть, рано или поздно у вас что-нибудь сломается, и тогда вы вспомните этот момент.

В общем, делюсь скриптом для автоматического бэкапа 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 или просто на другой сервер. На всякий случай.

И главное — помните: у хорошего админа есть бэкапы бэкапов. Не ждите пока что-то сломается. Сделайте это сегодня. Прямо сейчас. Пока не стало больно.

Nazario

Я — Nazario, тот самый человек, который больше десяти лет ковыряется в Linux и Windows системах не ради хобби, а потому что это — работа и жизнь. Всё, что вы читаете на Setiwik.ru, — это не пересказ справки из мануала, а результат десятков реальных кейсов, выстраданных конфигов и ночных перезагрузок.

Я не претендую на истину в последней инстанции. Но если мой опыт может кому-то упростить работу — значит, всё это не зря. Здесь нет «магии», только практика: от настроек сервера до неожиданных багов, которые не гуглятся с первого раза.

Setiwik.ru — это место, где IT становится чуть менее хаотичным. Заходите почаще — будем разбираться вместе.

Добавить комментарий