AWS RDS 是 AWS RDBS (關聯型數據庫)的服務, 可提供六種 database 供選擇,Amazon Aurora、Mysql、MariaDB、Oracle、Microsoft SQL Server、PostgreSQL
ps: 不同的引擎費用不一樣
有兩種模式
On-demand
按需計費, 每小時計價
Reserved Mode
跟 AWS 簽約的概念, 倘若要用比較久的話使用此方案可能會便宜一點
多可用區部署 vs 只讀副本
備份方案:
- 自動備份
- 建立資料庫快照
ps: 可以在 RDS 進去備份也可以透過 AWS Backup 服務進行備份管理, 倘若以 AWS Backup 進行備份的話, 檔名結尾為 awsbackup:
AWS-Backup-job-number
ps: 每個手動快照至多 100 個手動快照
ps: 備份的前提資料庫的狀態一定要是 AVAILABLE
備份保留時間:
可以設定備份的保留時間, 倘若透過 API 或 CLI 去建置 RDS 的話, 預設值為 1 天;倘若透過 AWS 網頁去創建 RDS 的話, 預設值為 7 天, 設為 0 則停用自動備份, 值可以設為 0–35天。
ps: 修改備份的保留天數會發生短暫的停機
ps: 停用自動備份時, 將會刪除目前所有的自動備份
資料恢復:
IAM policy:
CreateDBSnapshot: 建立資料庫快照
CreateDBInstanceReadReplica: 建立供讀取的資料庫執行個體
DescribeDBClusters
DescribeDBInstances
DescribeDBLogFiles
DescribeDBSnapshots
創建 RDS
- 選擇要創建的方式, 以及 engine, 這邊我們選擇 MariaDB
2. 為了測試可以選用 Dev/Test, 也可以選用免費方案 (1年)
3. 進行 database 用戶名以及密碼設置
ps: identifier: 用於在 RDS 是別用
4. 選用 DB 規格
5. 這邊我們先選用最低規格
6. 設置 DB 容量空間以及是否需要啟用 auto scaling
7. 是否需要創建備用的 instance
8. VPN 設定
9. 這邊要選擇 ec2 的 VPC
10. 設定備份時間, 為了測試所以將此 backup 的時間設為 0, 也就是不自動備份
11. 設置 RDS 的 security group 的 in-bound rule 使其 ec2 可以連到 rds
ps: 點選第一個
12. 點擊 Action
13. 選取 Edit inbound rules
14. 點選 Add Rule
15. 請選擇 TCP, 第二個欄位為 port, 所以要輸入 DB 的 port 3306, 第三個則是要輸入 EC2 的 private address, 讓 EC2 可以連到 RDS 的 3306 port
16. 都設定好之後即可在 EC2 連到 RDS
倘若要多建立一個 read replica
- 在你的 database 清單中選取要在哪個地方多增加一個 read r
2. 點擊 Action 即可看到 create read replica
建立 snapshot
- 點擊 Action 的 take snapshot
2. 設定 snapshot 的名稱後即可建立 snapshot
3. 建立好之後即可在側邊欄的 snapshot 找到剛剛建立的 snapshot
4. 建立完 snapshot 可以將 snapshot 匯到 aws s3 (手動)
ps: 倘若要將此動作變成自動的話可以特過 aws lambda 的服務去監聽 take snapshot 的 event, 這樣當 rds 的 take snapshot 觸發時, 則會將此 snapshot 匯到 s3
Q: 如何多建立一個 master write node ???
透過 AWS Backup Service 去備份 RDS
- 點擊 on-demand
2. 接著備至要備份的相關資訊
3. 在執行此操作的時候請確認 iam 的 role 是否有此角色
4. 然後要配置以下 policy
5. aws backup 也可以設定排程自動備份, 首先新增一個 backup plan
6. 設定備份排程的時間
7. 都設定好了之後直接按下 create, 即可在 backup plan 看到你剛剛新增的 plan
8. 接著設定 Resource assignments
9. 輸入 resource 的名稱以及 將 assign by 的 tags 改為 resource id
10. 選擇自己要備份的 resource type , 以及選定 database 抑或是 table name
AWS Backup Policy
常用 Action
CreateBackupPlan: 創建備份計畫
CreateBackupVault: 創建備份的文件庫, 用於存放備份的資料
DescribeBackupVault: 取得備份的文件庫清單
GetBackupPlan: 取得備份計畫
UpdateBackupPlan: 更新備份計畫
CreateBackupSelection: 創建備份資源的指派
GetBackupSelection: 取得備份資源的指派
ListBackupJobs: 列出備份任務
ListBackupPlans: 列出備份計畫
ListBackupSelections: 列出備份資源列表
ListBackupVaults: 列出文件庫
{
"Sid": "BackupPolicy",
"Effect": "Allow",
"Action": [
"backup:CreateBackupPlan",
"backup:CreateBackupSelection",
"backup:CreateBackupVault",
"backup:DeleteBackupPlan",
"backup:DeleteBackupSelection",
"backup:DeleteBackupVault",
"backup:DescribeBackupVault",
"backup:GetBackupPlan",
"backup:UpdateBackupPlan",
],
"Resource": [
"arn:aws:backup:<region>:<account-id>:backup-plan:*",
"arn:aws:backup:<region>:<account-id>:backup-vault:<Name>*",
"arn:aws:backup:<region>:<account-id>:key:*",
"arn:aws:iam::<region>:<account-id>:role/<Name>*"
]
}
再透過 aws backup 創建 role 以及 assign resource 時, 透過以下 policy
{
“Version”: “2012–10–17”,
“Statement”: [
{
“Sid”: “BackupPolicy”,
“Effect”: “Allow”,
“Action”: [
“backup:CreateBackupPlan”,
“backup:CreateBackupSelection”,
“backup:CreateBackupVault”,
“backup:DeleteBackupPlan”,
“backup:DeleteBackupSelection”,
“backup:DeleteBackupVault”,
“backup:DescribeBackupVault”,
“backup:GetBackupPlan”,
“backup:UpdateBackupPlan”,
“backup:CreateBackupSelection”,
“backup:GetBackupSelection”,
“backup:ListBackupJobs”,
“backup:ListBackupPlans”,
“backup:ListBackupSelections”,
“backup:ListBackupVaults”,
“backup:Create*”,
“backup:List*”
],
“Resource”: [
“*”
]
},
{
“Effect”: “Allow”,
“Action”: [
“iam:GetRole”,
“iam:PassRole”,
“iam:ListRoles”
],
“Resource”: “*”
}
]
}
倘若沒有 AWSBackupDefaultServiceRole 的角色則需要創建並給予以下 policy
定價:
參考資料: