An open API service indexing awesome lists of open source software.

https://github.com/slexx1234/dump.sh

MySQL dumper
https://github.com/slexx1234/dump.sh

bash dump mysql shell

Last synced: about 2 months ago
JSON representation

MySQL dumper

Awesome Lists containing this project

README

          

# Dump.sh

Это скрипт дампа `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 (Можно указать несколько) |

# Установка

```bash
$ cd ~
$ git clone git@github.com:slexx1234/dump.sh.git
```

На этом всё ;) Скрипту больше ничего не надо

# Запуск и пример использования

Думаю, чем чаще делать дампы тем лучше, скрипт осталось воткнуть в `cron`:

```bash
$ crontab -e
```

И добавить что то вроде:

```bash
@hourly /root/dump.sh/dump.sh -r=/root/dumps -u=MYSQL_USER -p=MYSQL_PASSWORD -d=DATABASE_ONE -d=DATABASE_TWO
```

Это всё! Пример выше будет делать дампы двух баз `MySQL` каждый час.

> Для дампов следует создать пользователя только с read-only правами.

```mysql
CREATE USER 'USER_NAME'@'localhost' IDENTIFIED BY 'PASSWORD';
GRANT SELECT, LOCK TABLES ON DATABASE_NAME.* TO 'USER_NAME'@'localhost';
FLUSH PRIVILEGES;
```