воскресенье, 5 февраля 2017 г.

AWS RDS MS SQL: backup-restore

В AWS RDS MS SQL рекомендованный способ восстановления и бэкапа баз через .bak файл и S3 bucket. Для того, что бы вся схема работала, нужно сделать довольно много подготовительной работы, которая отлично описана в официальной документации.
Но некоторые моменты я все же дополню. Создавая RDS, потребуется указать IAM role. Для этой роли нужно создать или добавить права.
Для примера у нас есть myBase.bak - файл с базой для восстановления в RDS. И есть S3 bucket /Database/Dumps, в котором лежит наш myBase.bak. Имя нашей базы - WEB_BASE.

IAM Role Policy для работы БЕЗ шифрования (для нашего примера достаточно):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::Database" }, { "Effect": "Allow", "Action": [ "s3:GetObjectMetaData", "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::Database/*" } ] }

Здесь важный момент - указать ресурс как ARN без слеша в начале (не нужно писать /Database).

Далее качаем MS SQL Suite Express.
Заходим с аккаунтом который при создании RDS делали.
Далее открывает New request таб и заводим команду восстановления:
exec msdb.dbo.rds_restore_database @restore_db_name='WEB_BASE', @s3_arn_to_restore_from='arn:aws:s3:::Database/Dumps/myBase.bak';

Во втором табе запустим просмотр состояния работы:
exec msdb.dbo.rds_task_status @db_name='WEB_BASE'

Ошибки при создании или отказ от восстановления будут показаны.
Просто жмем Execute периодически, и будет обновлять статус работы.

Внимание, S3 bucket с дампом ДОЛЖЕН быть в ТОМ ЖЕ РЕГИОНЕ что и RDS! Иначе не работает.



Комментариев нет: