Это скрипт дампа MySQL
баз данных. Он раскладывает дампы по разным папкам и проверяет
их размер, если размер дампа больше 0Б скрипт думает что всё хорошо. Всё дампы сжимаются.
Папки которые он создаёт:
daily
- Здесь лежат дампы которые называются по номеру для недели в месяце. Хранятся дампы только за последнюю неделюhourly
- Файлы в этой папке называются по номеру часа (в 24 часовом формате), хранится только последние 24 часа (файла)mountly
- Здесь лежат файлы которые называются именем базы данных + год + месяц, файлы отсуда не удаляются
Родительская директория, в которой будут находиться данные директории, задается параметром -r
.
Опция | По умолчанию | Обязательно? | Описание |
---|---|---|---|
-r, --root | Да | В этой директории будут храниться дампы | |
-u, --user | Да | Имя пользователя MySQL | |
-p, --password | null | Нет | Пароль MySQL |
-h, --host | localhost:3306 | Нет | Хост MySQL, порт через двоеточие |
-d, --database | () | Нет | Имя баз данных MySQL (Можно указать несколько) |
$ cd ~
$ git clone git@github.com:slexx1234/dump.sh.git
На этом всё ;) Скрипту больше ничего не надо
Думаю, чем чаще делать дампы тем лучше, скрипт осталось воткнуть в cron
:
$ crontab -e
И добавить что то вроде:
@hourly /root/dump.sh/dump.sh -r=/root/dumps -u=MYSQL_USER -p=MYSQL_PASSWORD -d=DATABASE_ONE -d=DATABASE_TWO
Это всё! Пример выше будет делать дампы двух баз MySQL
каждый час.
Для дампов следует создать пользователя только с read-only правами.
CREATE USER 'USER_NAME'@'localhost' IDENTIFIED BY 'PASSWORD';
GRANT SELECT, LOCK TABLES ON DATABASE_NAME.* TO 'USER_NAME'@'localhost';
FLUSH PRIVILEGES;