AWS提供了2種數據庫,RDS和DynomoDB,前者是傳統的關係型數據庫,目前包括Mysql,PostgrepSQL, Oracle和 MS SQL; 後者是NoSQL; 豆子以MySQL爲例,把AWS RDS的基本功能過一遍。
接下來會演示以下功能:
如何創建MySQL 實例
如何通過EC2連接MySql 實例
如何創建Read Replica
如何Promote Read Replica,
如何備份,觀察事件,發送通知
如何刪除 MySQL 實例
1) 首先來看看如何創建MySQL實例
登陸RDS的管理界面,點擊 Launch a DB instance
選擇MySQL
豆子用的免費賬號,就不用Multiple-AZ的選項了,這個是一個高可用的選項,會在不同的AZ上創建同步的MySQL實例,如果當前的實例或者AZ掛了,會自動Failover 到其他的AZ實例。
屌絲用不起HA,實驗就用單點AZ好了。
接下來設置數據庫的信息,不要Multip-AZ,實驗也不需要高速度的IOPS,都選NO
高級設置裏面,需要選擇VPC和Security Group。豆子這裏選擇默認的VPC和安全組,如果有需要的話,用戶可以自定義VPC(可以參見我的NAT instance的博客一文)
然後點擊Launch DB Instance 就創建成功了。
顯示正在創建中,這個大概要幾分鐘的時間
創建了RDS的實例,和EC2的實例一樣,我們還需要配置防火牆(Security Group),打開看看,咦,原來默認的VPC只能在EC2裏面修改設定。
切換到EC2的Security Group,添加一條TCP 3306的策略,允許我的Web Server 組進行訪問
切換回RDS 界面,發現已經準備就緒了
2) 如何連接訪問RDS實例
和訪問EC2實例類似,RDS也有自己的訪問點 (EndPoint)。
登錄到我的web server,然後輸入以下命令,就可以連接到RDS實例了
查看一下數據庫,沒錯,就是他。
做個對比試驗,把前面添加的防火牆策略去掉看看還能不能訪問;
去掉之後,就無限死循環的卡在登錄連接上了
而且這個時候的RDS界面也會提示你沒有能夠連入的權限設定
3) 創建一個Read Replica
首先需要知道什麼是Read Replica。這個和Multiple AZ的區別是什麼。AWS裏面有2種HA的設置,一個是Mult-AZ,一個是Read Replica。Mult-AZ的作用是Failover,如果當前的實例或者AZ掛了,他會自動轉到其他的AZ的實例上去。Read Replica的作用則主要是分流(Load Balance)。即使是我的單點AZ,也是可以創建Read REplica的。
點擊Create Read Replica
創建一個新的Read Replica DB實例
顯示狀態,原有的實例會自動創建一個備份,然後通過這個備份創建一個新的Read Replica實例
創建好之後,可以對比看看他們的區別
因爲是自動同步所有的設置,所以從我的web server同樣可以訪問這個Read Replica Instance
來看看這個Read Replica Instance能執行哪些操作。
按照AWS的說明,我可以創建3個連續的Read Replica實例,比如B是A的read replica,C又可以是B的read Replica,爲什麼我這裏灰掉了呢?
仔細看看,原來我沒有打開自動備份的緣故。前面說過了,創建Read Replica的時候會自動創建備份快照,然後通過快照來創建的新實例。因此自動備份的選項必須打開。
Modify設定之後,就可以繼續創建 Read Replica了
4) 如何Promote Read Replica
這個功能主要是用於將一個Read Replica實例提升爲一個獨立的普通的DB實例。一般說來,比如創建index(索引)的時候,因爲是一個很耗時間的過程,AWS推薦在Read Replica上先進行,然後Promote Read Replica作爲主要的訪問數據庫,然後再回頭去在原先的實例上進行操作;另外,這也可以作爲災難恢復的一種備份手段,不過這個就和Mult -AZ的功能重複了,不如直接使用Multip-AZ好了。
點擊 Promote Read Replica
警告信息,AWS建議停止事務處理以保證數據完整性;Promote會導致Read Replica實例重啓,而且該過程是不可逆的
提升之後就和普通的沒有區別了
5)如何備份DB Instance
首先,自動備份都是推薦打開的。不過自動備份的快照在刪除DB實例的時候會自動刪除,因此有的時候也需要手動備份,這個手動備份的快照是獨立存在的,即使錯誤的刪除了DB實例,仍然可以通過這個來恢復。
手動備份
可以在Snapshots的控制板面查看所有的快照,包括自動和手動創建的。
還可以查看Events,可以列出所有的數據庫操作行爲
我們還可以創建一個SNS的Topic,給管理員發送email。然後在Event Subscriptions裏面綁定這個Topic就可以自動發送事件通知了。
6) 最後,我們來看看如何刪除DB Instance
點擊Delete
他會提示是否進行最後一次的手動快照,這樣的話,萬一想恢復這個刪除的實例,也是可以的。
根據自己的需求,選擇之後確定就可以刪除了