Amazon Aurora

作者: JackpGao | 来源:发表于2016-04-29 15:49 被阅读1392次

Amazon Aurora 调研

目录

  1. 官方介绍

  2. 宣传特点

  3. 概念与架构

  4. 性能、HA探讨

  5. 质疑、亮点

  6. 结论

  7. 参考文档

<a name="官方介绍"></a>官方介绍

  • Amazon Aurora 是一个关系型数据库引擎,结合了高端商用数据库的速度和可用性,同时还具有开源数据库的简单性和成本效益。

  • 它提供的吞吐量比同一硬件上运行的标准 MySQL 最多高出五倍。Amazon Aurora 的设计与 MySQL 5.6 兼容,因此现有 MySQL 应用程序和工具无需修改即可运行。

  • Amazon Aurora 继 MySQL、Oracle、Microsoft SQL Server 和 PostgreSQL 之后,成为第五个可通过 Amazon RDS 提供给客户的数据库引擎。

  • 兼容 MySQL 的关系数据库,其性能高达 MySQL 的 5 倍。
    有商业数据库的安全性、可用性和可靠性,但成本只是商业数据库的 1/10

  • 最高可以实现每秒 50 万次读取和 10 万次写入

  • 最多15个副本

  • 存储空间最小为 10GB,最大为 64TB

  • Amazon Aurora 的设计旨在提供高于 99.99% 的可用性。从物理存储故障恢复是一个透明过程,而实例故障转移也只需要不到 30 秒

  • Amazon Aurora 的存储具有容错和自我修复功能。您的数据有六个副本复制分布在三个可用区中,并且会持续备份到 Amazon S3

<a name="宣传特点"></a> 宣传特点

  • 读写分离
  • 快速Fail Over
  • 从库几乎0延迟
  • 5X 性能于MySQL
  • 易于扩展(应该是读)

<a name="概念与架构"></a> 概念与架构

  • Aurora 并不开源
  • Aurora 不是用于MySQL的插件式引擎(不是InnoDB或者TokuDB这样的引擎)
  • Aurora 算是一个数据库软件(网上都称其为engine,个人觉得,Aurora 作为一个软件更合适)
  • Aurora 是结合了Amazon 云生态系统里各种服务组件的、一个能够媲美商业数据库(官方宣传)的、兼容MySQL的数据库引擎
  • Aurora 开源了也没用,因为它依赖的都是Amazon自己的基础服务(S3等)
https://www.percona.com/blog/2015/11/16/amazon-aurora-looking-deeper/
  • 上图是Percona Vadim Tkachenko 猜想Aurora 的架构图,基本的原理就是共享了一个高效的存储层,用这种方式来取代binlog的复制方式,所以才会提供很快的Fail Over特性、几乎为0的从库延迟。

  • 这种架构,跟Oracle RAC 是不是很像?

  • PXC是不是也有些类似?

  • share everything?

ps:
Amazon 的工程师,在对外宣讲的一个点,就是针对现有数据库架构很多冗余部件的吐槽,这样对于数据的备份、成本、灵活性都很不方便。

通过上述的这种架构,Aurora 可以:

  • Avoid data writes to storage
  • Avoid binary logs
  • Avoid InnoDB transactional logs
  • Disable doublewrites
  • Disable InnoDB checksums

理论上是有性能提升的。

<a name="性能HA"></a> 性能 & HA

官方测试有争议

  • 官方宣称,写方面,3X 于MySQL,读方面,5X 于MySQL
  • 官方的测试环境
    • 250 tables, with 25000 rows each
    • 4.5GB
    • Amazon used r3.8xlarge instances
      • 32 virtual CPUs
      • 244GB of memory

Percona 测试

  • 结论
    • 在高配(高IO)的EC2机器上,Percona Server性能依然高于或者持平 Aurora。
    • 但是在数据量比较大的情况下,Aurora 还是有一定优势的。
    • 数据量较少的情况下,Aurora 性能不及Percona。如果按照官方的对比,Percona Server 也要比MySQL 高出很多性能了。
    • 最高IO的EC2,价格也最贵,成本最大。
    • 从下面的表格来看,Aurora 还是有一定的优势的。

价格对比:

Item Config Price a Year($)
Aurora 4 virtual CPUS + 30GB memory + 400GB 311.40
ps 4 virtual CPUS + 30GB memory + 500GB + 1500/3000 ios 210.60
ps-io2000 4 virtual CPUS + 30GB memory + 500GB + 2000 ios 353.10
ps-io3000 4 virtual CPUS + 30GB memory + 500GB + 3000 ios 418.10

其他测试

  • 结论
  • 5�X 太夸张
  • 性能好于用户自己在EC2上搭建的MySQL(跟percona的测试有冲突)
  • 跟自家的5.6 RDS比,没有太大优势
  • 但是Aurora 在响应时间上,有一定优势

HA测试

  • 上图来自Percona 工程师 Yves Trudeau
  • 图中显示,Aurora 的Fail Over速度明显好于MHA,但是跟Galera 还有差距
  • 该blog 从HA、性能等方面,大量对比了Galera 和Aurora,对于Aurora这种架构,只跟MySQL 单机去比,可能不太合适,和Galera 去对比,算是恰如其分的。

<a name="质疑亮点"></a>质疑 & 亮点

质疑

  • 5X 的性能,见上文。

  • 与官方MySQL比:

    • 大量细节显示,Aurora 跟MySQL 5.6 有很多渊源,并且,从Bug List 来看,Aurora 明显跟不上MySQL 官方的脚步:

My question here, does Amazon have the ability to keep up with MySQL bug fixes and regularly update their software? So far it does not seem so.

  • Amazon Aurora – Looking Deeper

  • unusual behaviour

    • 怪异的隔离级别

    • 默认只支持RR,修改其他不生效,但是不报错

    • 被杀掉的从库查询:

Scenario:
READER:
execute long SELECT col1 FROM tab1
WRITER:
while SELECT running, execute ALTER TABLE tab1 ADD COLUMN col2 ;
Effect: SELECT on READER fails immediately with an error: “ERROR 1866 (HY000): Query execution was interrupted on a read-only database because of a metadata change on the master”

So there again I think Aurora does its best given architectural limitations and one-directional communication: it just chooses to kill read statements on Readers.

亮点

  • 修复了Query cache 对写造成的影响。

<a name="结论"></a> 结论

  • 大神 DimitriK 表示一脸不屑,5.7早就可以达到100w QPS,单纯从性能来讲,Aurora 没有太大优势。
    注释:Dim的测试全都是内存测试,他的原则就是这种最为简单的测试,最能体现引擎内部的性能优化程度。
    MySQL Performance: 5.7 and RDS Aurora, so what?.. ;-)
  • 个人认为,单纯讨论性能没有太大意义,要从RDS服务本身去谈。如备份、高可用。

  • Aurora 的设计利用了Amazon 本身的诸多系统,从设计本身就可以做到高速Fail Over,另外,其备份也要比传统的MySQL实例备份来的方便。

  • 从Amazon 方面考虑,开发Aurora 这种东西,利用了自家的很多技术,这对云服务的成本来讲也是很大一笔节约。

  • 对用户来讲,购买EC2 主机来搭建MySQL也许不是一个明智的选择,如果Amazon 能提供更好、更廉价的RDS服务,何乐而不为?

  • Amazon 的野心,在于构建一个能够媲美商业数据库的数据库,但是这个数据库并不是一个用来卖的软件(不像 Oracle那样),他的目的在于打造一个基于云的商业数据库服务,及Amazon RDS。

  • 套用Percona Vadim Tkachenko 的一句话:

In general I think Amazon Aurora is a quite advanced proprietary version of MySQL. It is not revolutionary, however, and indeed not “reimagined relational databases” as Amazon presents it. This technology does not address a problem with scaling writes, sharding and does not handle cross-nodes transactions.

“这不是一个革命性的产品,它没能解决写扩展的问题,也没有解决sharding、以及多节点事物的问题,但是这给关系型数据库未来的发展,提供了一些想象,是一个很好的MySQL衍生品。”

<a name="参考文档"></a> Reference

重点推荐

相关文章

网友评论

  • JackpGao:简书不支持Markdown 内部的跳转链接。
  • lynch0571:长知识了,以前只停留在了MySQL5.6内置的9种引擎。
    lynch0571:@JackpGao 是的
    JackpGao:@D_C 目前我们只用InnoDB、TokuDB,其他的基本不用,很多引擎也都是没太大用处的。

本文标题:Amazon Aurora

本文链接:https://www.haomeiwen.com/subject/ebtkrttx.html