iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0

前幾天介紹 RDS

又介紹使用 RDS PostgreSQL 的時候

該如何做稽核

但是資料庫還有一個很重要的功能就是備份與還原

PostgreSQL 和 MySQL 的使用都可以透過 Client 端工具

輕易的備份和還原資料庫

但是 SQL Server 有比較多限制

因此今天的備份會針對 SQL Server 的 bak 在 AWS 的備份還原做講解

建立 S3 Bucket

進到 S3 的畫面中

建立一個 Bucket 等等備份還原使用

https://ithelp.ithome.com.tw/upload/images/20230927/201415182kpuSjb3ZL.png

建立 IAM 角色

信任關係

官方提供比較嚴謹的信任關係設定

根據選項群組及資料庫名稱才能夠使用

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "rds.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": [
                        "arn:aws:rds:Region:my_account_ID:db:db_instance_identifier",
                        "arn:aws:rds:Region:my_account_ID:og:option_group_name"
                    ]
                }
            }
        }
    ]
}

想要偷懶一點的也可以省略 Condition

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "rds.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "export.rds.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

政策

建立政策並關聯上剛剛建立的 IAM 角色

記得將 bucket_name 替換成剛剛建立的 Bucket 名稱

{
    "Version": "2012-10-17",
    "Statement":
    [
        {
        "Effect": "Allow",
        "Action":
            [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
        "Resource": "arn:aws:s3:::bucket_name"
        },
        {
        "Effect": "Allow",
        "Action":
            [
                "s3:GetObjectAttributes",
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListMultipartUploadParts",
                "s3:AbortMultipartUpload"
            ],
        "Resource": "arn:aws:s3:::bucket_name/*"
        }
    ]
}

選擇要設定的選項群組

不可使用 default 選項群組

建立新的選項群組

https://ithelp.ithome.com.tw/upload/images/20230927/20141518qfdoJ8Mf9b.png

或是複製或修改現有選項群組

新增 SQLSERVER_BACKUP_RESTORE 至選項群組

勾選剛剛建立的選項群組

並點按「Add Option」以新增選項

下拉式選單選擇「SQLSERVER_BACKUP_RESTORE」

並關聯第一步建立的 IAM 角色

https://ithelp.ithome.com.tw/upload/images/20230927/20141518Hl7T8pqT1I.png

將選項群組與資料庫執行個體建立關聯

到 RDS 列表頁面

編輯想要套用選項群組的資料庫並

如果與資料庫執行個體關聯,通常是版本有錯,需要重新建立

備份與還原

做完上述步驟即完成前置步驟設定

可以進行備份和還原

備份

需將 database_name 替換成資料庫名稱

arn:aws:s3:::bucket_name/file_name.extension 則需要替換成 bucket 加上路徑名稱
eg:arn:aws:s3:::ironman-2023/sql-server/ironman-20230927.bak

exec msdb.dbo.rds_backup_database
	@source_db_name='database_name',
	@s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name.extension',
	@overwrite_s3_backup_file=1,
	@type='FULL',

還原

exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';

追蹤資料庫任務狀態

執行完備份或還原指令後

可使用下列語法查看備份和還原進度

exec msdb.dbo.rds_task_status
	[@db_name='database_name'],
	[@task_id=ID_number];

參考資料:

  1. 設定原生備份與還原
  2. SQL Server 對原生備份與還原的支援
  3. 使用原生備份與還原

上一篇
Day 11 RDS 稽核
下一篇
Day 13 備份使用 AWS Backup
系列文
上完 AWS 線上課程就打算應徵相關工作是否搞錯甚麼30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言