发布于: Jul 22, 2022
Aurora 无需事先指定存储大小和 IOPS,根据实际数据量以每 10GB 自动扩展,存储最大容量可达 64TB。这省去了磁盘容量或者 IO 不足时,需要扩容而带来的影响。
Aurora 只支持 Innodb 存储引擎。如果需要用到 MyISAM,那么还是适合使用 RDS Mysql。
Aurora 最多支持 15 个只读副本,相比 Mysql 5 个副本有很大提高。Aurora 的只读副本有 reader endpoint,能够对只读请求做负载均衡。对于应用程序来说,只需指定只读 endpoint,就无需再考虑只读副本的流量均衡与故障切换。而 Mysql 还没有提供只读副本的负载均衡功能,需要在应用程序和数据库之间,加入中间件,或者在应用程序加入逻辑,把请求尽量平均分配给数据库只读副本。否则,一旦 Mysql 只读副本出现故障,域名或者 IP 会变化,应用程序端还需要调整。
Aurora 还支持 Autoscaling 自动扩展,根据 CPU 使用率或连接数,超过指定阈值时,自动增加只读副本,以满足业务变化的需求。
Aurora 写入时自动复制数据到 3 个 AZ 的 6 个副本,持续把日志和数据备份到更可靠的 S3,数据不会丢失。自动故障恢复,能在主节点出现故障时,自动提升只读副本为主节点,实现数据库高可用。
Aurora 还有快速恢复等功能,即使在数据库需要恢复时,也能更快启动数据库。
回溯功能更可以在短时间内恢复到之前的某个时间点,而无需重新恢复新的数据库,这需要更改应用程序指向新的数据库。
Aurora 和 Mysql 都支持跨区域副本复制。Aurora 还推出了 Global Database 功能,物理层面进行数据复制,相对与 Mysql binlog 同步,效率更高,跨区域主从延迟能达到1秒以内。
Aurora 和 Mysql 的费用都包含流量和备份,这些价格相近。不同的地方在于数据库实例和存储费用。
以下是两者在美国东部地区的价格对比:
实例价格上,Aurora 大约是 RDS Mysql 的 1.2 倍 (9.28/7.68=1.2)。看上去 Aurora 贵一些。考虑到 Aurora 相比 Mysql 的性能优势,同样的业务量场景下,即使 Aurora 相对 Mysql 只提升了 2 倍的性能,成本也会降低很多。例如,Mysql 需要 4 个 r4.xlarge 节点,Aurora 由于性能提升,只需要 2 个r4.xlarge 即可满足业务需求,总成本上,Aurora 0.58*2=1.16,Mysql 0.48*4=1.92,Aurora 更便宜。
存储价格上,容量价格 Auror a便宜一些 (0.1 vs 0.125),而且 Aurora 按实际容量收费,对比 RDS 在创建实例时就要指定存储容量,价格会更便宜。Aurora 实际容量,可以在 Cloudwatch 监控的 [Billed] Volume Bytes Used 指标查看。
IO 价格不好直接比较,Mysql Provision IOPS EBS (IO1) 按照预设容量收费,此费用固定。Aurora 按照 IO 总量计算,不同时段的 IO 请求不一样,费用也不同。可以监控 Cloudwatch [Billed] Volume Read IOPS 和 [Billed] Volume Write IOPS 这两个读写 IO 的指标,估算某个请求量的场景下,所花费的 IO。如果开启了 Aurora 并行查询,IO 费用会更高。
以下总结了 Aurora/Mysql/Redshift 的应用场景、特性和成本对比。
|
Aurora |
Mysql |
Redshift |
应用场景 |
高并发OLTP |
普通OLTP |
OLAP海量数据仓库复杂分析查询 |
性能 |
数倍于Mysql,大量只读请求优势更加巨大 |
高并发时性能下降明显 |
少量但是复杂的查询,不适合实时写入 |
存储 |
存储计算分离,按使用量计费 |
指定EBS存储容量和IO |
指定节点类型和数量,不能只扩容存储 |
扩展性 |
最多15个只读副本,多个副本负载均衡,支持Autoscaling |
最多5个只读副本,需要单独实现副本负载均衡 |
最多128个节点 |
可靠性 |
3 AZ/ 6副本,自动故障切换,快速恢复,回溯,跨区域复制 |
自动故障切换,跨区域复制 |
数据在每个节点都有多个副本 |
成本 |
同样业务所需节点数量或类型更小,总成本较低 |
节点单价略低,但是总成本相对Aurora更高 |
相对较高 |