AWS - RDS
Architecting With RDS
擴展性
運算擴展性 Compute Scaling
DB Instance Class 根據 RDS DB Instnace 運算與記憶體空間
儲存擴展性 Storage Scaling
RDS 使用 EBS 當 Database/logs 儲存空間,根據儲存的總量 RDS 會自動用多個 EBS 空間增加效能
讀取副本 Read Replicas
Read Replicas 其實是一種特別的 DB Instance 是藉由來源 DB Instance 建立的.RDS 會對來源 DB Instance 打快照且建立只提供讀取的 instance 接下來來源 DB Instance 成為 Master DB
後續就以更新 Master DB 且非同步的複製到 Replicas. 並且透過 Replicas 讀取資料.這麼一來就可以減少 Master DB 的負載透過路由到其他 Replicas DB 並且能透過彈性擴展與空間解決資料酷單點讀寫高負載風險
RDS 也可以建立不同 Region 的 Replicas
可以根據以下情境使用 使用 Cross-Region Read
- 增加 DR(災難復原) 能力
- 擴展 Read 操作到更鄰近的使用者
- 遷移一個 Datacenter 從 A Region 到 B Region
可用性與耐用性
備份 Backups
自動備份 Automated backups
是 RDS 的功能可以在指定時間店進行恢復,提供高達 100% 的備份儲存無需額外費用
當自動備份 RDS 也會進行每日的 Snapshot 同時也會捕捉 Transaction logs 到 DB instance 更新
手動資料庫快照 Manaul database snapshots
這是手動觸發的功能,Instance 可以透過 Snapshot 回復到資料庫的狀態本身 snapshot 會儲存在 S3 本身
多可用區域部署 Multi-AZ deployment
RDS 提供多可用區域部署支援 MariaDB MySQL Oracle PostgreSQL 用 AWS Failover 技術
在 Multi-AZ 部署 RDS 自動不同的 AZ 預設置並且維護一個同步備用 Replica, Master DB 會跨 AZ 同步複製到備用 Replica 透過這種方式提供資料冗餘消除 I/O 凍結並最大限度的減少系統備份期間的延遲峰值,但是與 Single-AZ 相比 Multi-AZ 的 Instance Write/Read 交付延遲可能會增加。因為發生很多同步資料複製。對於 Production Workload 最好配置 IOPS 與針對 IOPS 最佳化資料庫的 Instance 實現快速且一致的效能。
錯誤處理 Failover
提升讀取節點 Promoting read replicas
Read Replica 可以幫助你 DR(災難復原) 如果 Master DB 掛掉後可以將 Read Replica 提升成 Master DB
多可用區域部署 Multi-AZ deployment
假設有可預期/不可預期的 DB 中斷,RDS 在 Multi-AZ 會自動切換到另一個 AZ 的 Replica 重新啟動時也可以進行故障轉移
自動主機更換 Automatic host replacement
如果硬體發生故障,RDS 將自動取代支援部署 RDS 的 Instance
Cost Management
Instance Types
- On-Demand Instances
- Pay by the hour the DB instance
- Reserved Instances
- 預約 DB Instance 1~3 年且獲得一些折扣
Instance Family
- R(Memory Optimized)
- 高效能資料庫
- 分散式記憶體存取
- 大規模資料分析/探勘
- 記憶體密集應用程式
- C(Compute Optimized)
- 高效能網頁伺服器
- 批次處理工作負載
- 科學建模
- 遊戲伺服器
- T(Burstable)
- 網站和網頁應用程式
- 開發環境
- 小型資料庫
- 微服務
- D(Storage Optimized)
- 大規模平行處理(MPP)資料倉儲
- MapReduce 和 Hadoop 分散式運算
- 日誌或資料處理應用程式