Показаны сообщения с ярлыком rds. Показать все сообщения
Показаны сообщения с ярлыком rds. Показать все сообщения

понедельник, 17 июля 2017 г.

AWS. CloudFormation. RDS Aurora Cluster and DeletePolicy

При попытке сделать посредством CloudFormation RDS Aurora Cluster с указанием "DeletionPolicy" : "Snapshot" в регионе Oregon стал получать ошибку (при рабочем шаблоне на прошлой же неделе, просто создаем новое окружение):

DeletionPolicy:Snapshot cannot be specified for a cluster instance, use deletion policy on the cluster instead.

Вообщем то явный глюк AWS. Исправить придется как оно того сама же хочет:
В секции ресурсов для DBCluster:

"RDSCluster" : {
      "Type" : "AWS::RDS::DBCluster",
      "Properties" : {
"MasterUsername" : {"Ref": "DBUser"},
"MasterUserPassword" : {"Ref": "DBPassword"},
"Engine" : "aurora",
                "DatabaseName" : {"Ref": "DBNameParam"},
                "DBSubnetGroupName": {"Ref": "AuroraDBSubnetGroup"},
                 "StorageEncrypted" : true,
"VpcSecurityGroupIds" : [{"Ref": "DBSecurityGroup"}],
"Tags" : [
                    {"Key" : "Environment", "Value" : {"Ref" : "EnvName"}},
                {"Key" : "Name", "Value" : {"Fn::Join": ["",[{"Ref" : "DBNameParam"},"-",{"Ref" : "EnvName"}]]}}
                 ]
          },
 "DeletionPolicy" : "Snapshot"
    }

В секции DBInstance придется добавить:
"DBInstance" : {
      "Type" : "AWS::RDS::DBInstance",
 "DeletionPolicy" : "Delete",
      "Properties" : {
......
}

воскресенье, 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! Иначе не работает.