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
他会提示是否进行最后一次的手动快照,这样的话,万一想恢复这个删除的实例,也是可以的。
根据自己的需求,选择之后确定就可以删除了
AWS - RDS