1. 程式人生 > >AWS RDS上建立、連線、備份、刪除mysql例項

AWS RDS上建立、連線、備份、刪除mysql例項

        AWS提供了2種資料庫,RDS和DynomoDB,前者是傳統的關係型資料庫,目前包括Mysql,PostgrepSQL, Oracle和 MS SQL; 後者是NoSQL; 豆子以MySQL為例,把AWS RDS的基本功能過一遍。

接下來會演示以下功能:

  1. 如何建立MySQL 例項

  2. 如何通過EC2連線MySql 例項

  3. 如何建立Read Replica

  4. 如何Promote Read Replica,

  5. 如何備份,觀察事件,傳送通知

  6. 如何刪除 MySQL 例項

1) 首先來看看如何建立MySQL例項

登陸RDS的管理介面,點選 Launch a DB instance

wKioL1PV9Q6i3v9mAACRSQU4OPI277.png

選擇MySQL

wKioL1PV9Q-gCGoTAABLTaQp6nw799.png

豆子用的免費賬號,就不用Multiple-AZ的選項了,這個是一個高可用的選項,會在不同的AZ上建立同步的MySQL例項,如果當前的例項或者AZ掛了,會自動Failover 到其他的AZ例項。

屌絲用不起HA,實驗就用單點AZ好了。

wKiom1PV8_iiFqO7AABnvSSCANU022.png

接下來設定資料庫的資訊,不要Multip-AZ,實驗也不需要高速度的IOPS,都選NO

wKioL1PV9RTyg_l_AABeGCBSThI979.png

高階設定裡面,需要選擇VPC和Security Group。豆子這裡選擇預設的VPC和安全組,如果有需要的話,使用者可以自定義VPC(可以參見我的NAT instance的部落格一文),如果在EC2安全組中建立過新的VPC,則選之前建立過的,而不要選擇default。

wKiom1PV8_3inqOBAAC56AP_SvU111.png

然後點選Launch DB Instance 就建立成功了。

wKioL1PV9RiSD-8uAABhtHRAJuw432.png

顯示正在建立中,這個大概要幾分鐘的時間

wKioL1PV9RnSRfDWAABYr_Vkcwk698.png

建立了RDS的例項,和EC2的例項一樣,我們還需要配置防火牆(Security Group),開啟看看,咦,原來預設的VPC只能在EC2裡面修改設定。

wKiom1PV9AGxCjE8AABy7orglrg710.png

切換到EC2的Security Group,新增一條TCP 3306的策略,允許我的Web Server 組進行訪問,如果希望任何地方都可以訪問,則可。在可在來源處填寫“0.0.0.0/0”。

wKioL1PV9R6Q4DHlAABrrfMU1Ik172.png

切換回RDS 介面,發現已經準備就緒了

wKioL1PV9SHgwBiuAADeleFkn18734.png

2) 如何連線訪問RDS例項

和訪問EC2例項類似,RDS也有自己的訪問點 (EndPoint)。

登入到我的web server,然後輸入以下命令,就可以連線到RDS例項了

wKiom1PV9AjhRoVwAAA4Tfxs07M995.png

檢視一下資料庫,沒錯,就是他。

wKioL1PV9SKyAki3AAARAb2Lr9U201.png

      遠端連線MySQL可以使用的是Navicat for MySQL這個軟體,目前用起來還是比較方便的。軟體的使用也很簡單,開啟軟體後,點選檔案–新建連線。連線名自己寫一個。主機名就寫RDS例項詳細資訊裡的“終端節點”就可以,埠3306,使用者名稱和密碼就是你在RDS建立時自己寫的。之後就可以登入了。



本地程式連線aws rds 的mysql資料庫也一樣,也是將連結替換為終端節點的即可。

做個對比試驗,把前面新增的防火牆策略去掉看看還能不能訪問;

wKiom1PV9AmT28NtAABl0D_rPhQ029.png

去掉之後,就無限死迴圈的卡在登入連線上了

wKiom1PV9AqiOKd7AAAP3juJ0_g845.png

而且這個時候的RDS介面也會提示你沒有能夠連入的許可權設定

wKioL1PV9SbRJF7yAADAjxzqvrk009.png

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

wKiom1PV9A-TmbMXAADh5TTPL8A249.png

建立一個新的Read Replica DB例項

wKiom1PV9BHwDpAnAABsoGtWhnI422.png

顯示狀態,原有的例項會自動建立一個備份,然後通過這個備份建立一個新的Read Replica例項

wKiom1PV9BPQh3oGAABt7Axczxc393.png

建立好之後,可以對比看看他們的區別

wKiom1PV9BmwSDg_AAFgKpMlADY889.png

因為是自動同步所有的設定,所以從我的web server同樣可以訪問這個Read Replica Instance

wKioL1PV9TSwUNDtAAA6eORqnYs918.png

來看看這個Read Replica Instance能執行哪些操作。

按照AWS的說明,我可以建立3個連續的Read Replica例項,比如B是A的read replica,C又可以是B的read Replica,為什麼我這裡灰掉了呢?

仔細看看,原來我沒有開啟自動備份的緣故。前面說過了,建立Read Replica的時候會自動建立備份快照,然後通過快照來建立的新例項。因此自動備份的選項必須開啟。

wKioL1PV9TngWqygAADcauBZ6vU502.png

Modify設定之後,就可以繼續建立 Read Replica了

wKioL1PV9TzS4aKWAADxR9ZV4Ew450.png

4) 如何Promote Read Replica

這個功能主要是用於將一個Read Replica例項提升為一個獨立的普通的DB例項。一般說來,比如建立index(索引)的時候,因為是一個很耗時間的過程,AWS推薦在Read Replica上先進行,然後Promote Read Replica作為主要的訪問資料庫,然後再回頭去在原先的例項上進行操作;另外,這也可以作為災難恢復的一種備份手段,不過這個就和Mult -AZ的功能重複了,不如直接使用Multip-AZ好了。

點選 Promote Read Replica

wKioL1PV9T6wTH0TAAA3ZPnipcc787.png

警告資訊,AWS建議停止事務處理以保證資料完整性;Promote會導致Read Replica例項重啟,而且該過程是不可逆的

wKiom1PV9CbR9Jj4AABIJCysC8o076.png

提升之後就和普通的沒有區別了

wKioL1PV9UKyjPwSAACMx4IwGE8438.png

5)如何備份DB Instance

首先,自動備份都是推薦開啟的。不過自動備份的快照在刪除DB例項的時候會自動刪除,因此有的時候也需要手動備份,這個手動備份的快照是獨立存在的,即使錯誤的刪除了DB例項,仍然可以通過這個來恢復。

手動備份

wKiom1PV9CnADPMSAAAlf-pOU-E563.png

可以在Snapshots的控制板面檢視所有的快照,包括自動和手動建立的。

wKiom1PV9CzRSgdyAAC3jPjgcVc203.png

還可以檢視Events,可以列出所有的資料庫操作行為

wKiom1PV9C6TKDDeAAB607v7KIY589.png

我們還可以建立一個SNS的Topic,給管理員傳送email。然後在Event Subscriptions裡面繫結這個Topic就可以自動傳送事件通知了。

wKioL1PV9UnDXka6AABxQTJYzkY309.png

6) 最後,我們來看看如何刪除DB Instance

點選Delete

wKiom1PV9DKAI9b2AADavYsX4ug782.png

他會提示是否進行最後一次的手動快照,這樣的話,萬一想恢復這個刪除的例項,也是可以的。

根據自己的需求,選擇之後確定就可以刪除了

wKiom1PW2THTe6kEAAAgDhBiuy8675.png