Консультация Oblako.kz

Настройка автоматической отправки резервных копий БД MySQL в хранилище oblako.kz на Linux

Регулярное резервное копирование является необходимым условием сохранности Ваших данных. Его необходимо проводить регулярно, в зависимости от частоты обновления Ваших данных. Для обеспечения сохранности данных, настоятельно рекомендуется хранить отдельно от резервируемых данных. Автоматическая отправка резервных копий в облачное хранилище позволяет в любой момент времени иметь под рукой архив всех версий ваших данных. Благодаря тому, что данные хранятся в облаке, вы можете обратиться к ним из любой точки земного шара.

Первоначальные требования

Для того чтобы настроить автоматическую резервирование базы данных, необходимо:

  • Контейнер в облачном хранилище для хранения резервных копий. Создать его можно несколькими способами, например через панель управления или с помощью различных приложений. В панели управления достаточно перейти на вкладку “Хранилище” и нажать кнопку “Добавить”
  • Получить внешний идентификатор ExternalId, это можно сделать через API запрос.
  • Пользователь, от имени которого будет происходить загрузка дампа в контейнер хранилища, должен иметь к нему доступ. На закладке “Доступы” раздела “Хранилище” можно посмотреть логин, пароль и TenantId для использования в скрипте.

Хранилище oblako.kz

Создание скрипта

С помощью любого текстового редактора, например vi, создайте файл в удобном для вас месте, например:

vi $HOME/copytost.sh

Внесите в него следующие строки, указав значения: имя пользователя базы данных, его пароль, название базы данных, полное название файла с дампом, полное имя файла с токеном (токен генерируется скриптом), имя пользователя хранилища и его пароль, TenantId и ExternalId, а также имя контейнера и название файла в контейнере:


#!/bin/bash
mysqldump -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
mysqldump -uroot -pqwerty cloud > $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": "cl_admin",
						"domain": {
							"name": "Default"
						},
						"password": "gjgjdfsjd"
				}
			}
		},
		"scope": {
			"project": {
				"name": "O1126",
				"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
Последнее обновление: 16.01.2019