Резервное копирование необходимо проводить регулярно. Автоматическая отправка резервных копий в облачное хранилище позволяет в любой момент времени иметь под рукой архив всех версий ваших данных. Благодаря тому, что данные хранятся в облаке, вы можете обратиться к ним из любой точки земного шара.
Первоначальные требования
Для того чтобы настроить автоматическое резервирование базы данных и отправку копий в хранилище, необходимо получить:
- Контейнер в облачном хранилище для хранения резервных копий. Создать его можно несколькими способами, например через панель управления или с помощью различных приложений. В панели управления достаточно перейти на вкладку “Хранилище” и нажать кнопку “Добавить”
- Получить внешний идентификатор ExternalId, это можно сделать через API запрос.
- На закладке “Доступы” раздела “Хранилище” можно найти логин, пароль и TenantId администратора для использования в скрипте.
Создание скрипта
С помощью любого текстового редактора, например nano, создайте файл в удобном для вас месте, например:
nano $HOME/copytost.sh
Добавьте следующие строки, указав значения: имя пользователя базы данных, его пароль, название базы данных, полное название файла с дампом, полное имя файла с токеном (токен генерируется скриптом), имя пользователя хранилища и его пароль, TenantId и ExternalId, а также имя контейнера и название файла в контейнере:
#!/bin/bash pg_dump -U <имя_пользователя_БД> -p<пароль> <имя_БД> <имя_и_путь_до_файла_с_дампом> curl -D <имя_и_путь_до_файла_с_токеном> -v -s -X POST https://storage.oblako.kz/v3/auth/tokens -H "Content-Type: application/json" -d '{ "auth": { "identity": { "methods": ["password"], "password": { "user": { "name": "<имя_пользователя>", "domain": { "name": "Default" }, "password": "<пароль>" } } }, "scope": { "project": { "name": "", "domain": { "name": "Default" } } } } }' 1>/dev/null token=`grep -Po '(?<=X-Subject-Token: )[[:graph:]]+' $HOME/header` curl -i https://storage.oblako.kz/v1/AUTH_ /<имя_контейнера>/<имя_дампа_в_хранилище>_`date +"%H:%M:%S_%d-%m-%Y"` -X PUT -d <имя_и_путь_до_файла_с_дампом> -H "Content-Type: text/html; charset=UTF-8" -H "X-Auth-Token: $token"
Пример скрипта:
#!/bin/bash pg_dump -U postgr -p qwerty mbase > $HOME/dump.sql curl -D $HOME/header -v -s -X POST https://storage.oblako.kz/v3/auth/tokens -H "Content-Type: application/json" -d '{ "auth": { "identity": { "methods": ["password"], "password": { "user": { "name": "obl_admin", "domain": { "name": "Default" }, "password": "Jdtuyurro9L" } } }, "scope": { "project": { "name": "obl", "domain": { "name": "Default" } } } } }' 1>/dev/null token=`grep -Po '(?<=X-Subject-Token: )[[:graph:]]+' $HOME/header` curl -i https://storage.oblako.kz/v1/AUTH_19161bcab97d4cd2812c5ad8b8bfffa6/new-bucket/dump_`date +"%H:%M:%S_%d-%m-%Y"` -X PUT -d $HOME/dump.sql -H "Content-Type: text/html; charset=UTF-8" -H "X-Auth-Token: $token"
Не забудьте изменить права доступа к файлу для возможности его исполнения:
chmod o+x $HOME/copytost.sh
Если необходимо однократно выполнить скрипт используйте следующий синтаксис:
./$HOME/copyst.bash
Создание резервной копии по расписанию
Для того, чтобы резервная копия регулярно автоматически создавалась и отправлялась в облако, необходимо настроить планировщик Cron.
Для того, чтобы отредактировать расписание текущего пользователя введите команду.
crontab -e
Внесите строку описывающую регулярность запуска скрипта, например, запуск скрипта каждый день в 0:30 и 12:30:
30 */12 * * * $HOME/copytost.bash