发布于: 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 R4


    db.r4.large

    $0.29

    db.r4.xlarge

    $0.58

    db.r4.2xlarge

    $1.16

    db.r4.4xlarge

    $2.32

    db.r4.8xlarge

    $4.64

    db.r4.16xlarge

    $9.28

  • RDS Mysql R4 Single-AZ


    db.r4.large

    $0.24

    db.r4.xlarge

    $0.48

    db.r4.2xlarge

    $0.96

    db.r4.4xlarge

    $1.92

    db.r4.8xlarge

    $3.84

    db.r4.16xlarge

    $7.68

  • Aurora Storage and IO


    Storage Rate

    $0.10 per GB-month

    I/O Rate

    $0.20 per 1 million requests

  • Mysql Provisioned IOPS (SSD) Storage Multi-AZ


    Storage Rate

    $0.125 per GB-month

    Provisioned IOPS Rate

    $0.10 per IOPS-month

实例价格上,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更高

相对较高


 
相关文章