亚马逊AWS官方博客

Amazon Aurora 在西云数据运营的 AWS 中国(宁夏)区域落地

很多用户在开发软件系统时,使用了传统的 MySQL 数据库,随着访问用户的增长,数据库读写变的异常频繁,常常会遇到性能瓶颈。这时大家常常会使用分区、分库分表、读写分离、数据库中间件等方案优化数据库访问性能。这些方案常导致数据库层的架构维护或开发变得复杂。

Amazon 企业级云数据库 Amazon Aurora 服务在中国宁夏区域的落地,将很大程度帮助这些有性能瓶颈的用户。Amazon Aurora 是 AWS 打造的一款能兼容 MySQL 的新一代企业级数据库,她基于云设计了一套全新架构,使数据库的性能大大的优化,每秒钟能完成数十万甚至上百万的读写事务。她有商业数据库的性能和可靠性,有非常灵活的横向及纵向扩展能力,而成本只有商业数据库的1/10,让广大开发者在开发应用时有了一个新的选择。目前有很多的企业用户,使用 Amazon Aurora 数据库做生产的数据库,比较新的一个案例是 Verizon 。 Verizon Communications 是纳斯达克的一家上市公司,公司在美国运营可靠的无线网络和全国的光纤网络接入服务,并向全球企业提供网络集成解决方案,她旗下众多子公司服务全球超过10亿用户。Verizon 在2018年5月宣布将迁移超过1000个业务应用及后台数据库到 AWS 平台,并且包括使用 Amazon Aurora 代替生产数据库,通过将本地数据库替换成 Aurora,他们将能获得高端商业数据库的速度及可用性,也能获得开源数据库的简单性和低成本。

 

Amazon Aurora 云数据库的兼容性

在由西云数据运营的 AWS 中国(宁夏)区域上线的 Amazon Aurora 能很好的兼容 MySQL 数据库,未来也会提供对 PostgreSQL 的支持。

MySQL

Aurora MySQL 能完全兼容使用 InnoDB 存储引擎的 MySQL5.6 及 MySQL 5.7 数据库。MySQL 使用 MyISAM 存储引擎的数据库的部分功能无法在 Amazon Aurora上使用。
对于当前使用 MySQL5.6(InnoDB)、MySQL 5.7 (InnoDB)的用户,无需修改应用的代码、应用程序、驱动程序和连接工具就可以像访问原数据库一样访问 Amazon Aurora。有版本差异的数据库,也只需要进行数据库升级或者进行少量代码、应用的修改就可以将系统迁移到 Amazon Aurora。

对于使用 Oracle 或其他数据库的用户,可以使用 AWS 提供的迁移工具或第三方迁移工具将数据迁移到 Amazon Aurora 中,但应用的代码、驱动和访问工具可能会和原来不同。

 

Amazon Aurora 的高性能和扩展性

Amazon Aurora 是一个集群数据库,你创建的集群数据库可以包含一个主节点和多个只读节点,当用户访问量增加时候,你可以根据需求动态增加只读节点,从而扩展数据库的读的能力,她最多可以跨三个可用区添加15个低延时(一般延时为毫秒级)的只读副本,这意味着你的数据库可以是一个16个节点组成的集群,大大提高了数据库的处理能力。

 

Amazon Aurora 数据的持久性

Amazon Aurora 数据库的存储是由 SSD 硬盘为基础的、能被 Amazon Aurora 数据库内多个节点共享的虚拟集群卷,这个集群卷可以跨3个可用区。当我们将数据插入到 Amazon Aurora 数据库的时候,数据库会跨三个可用区自动复制数据的6个副本(每个可用区2个副本),当磁盘故障或数据中心发生灾难时,Amazon Aurora 虚拟集群卷能够自动恢复故障,从而保障数据的高可用。

 

Amazon Aurora 的访问

我们一般通过集群终端节点和只读节点访问 Amazon Aurora 数据库,这和访问普通的 MySQL 是类似的。集群终端节点会访问数据库主节点进行读写操作,只读节点通过负载均衡的方式访问多个只读节点,这样能减轻每个节点的压力。如果主节点出现故障,只读节点会自动提升为主节点,故障转移数据通常小于30秒。由于 Amazon Aurora 的多个节点可以位于云上不同的可用区,因此小到物理服务器损害,大到机房损毁都不会对数据库造成大的影响,您的数据库都可以自动恢复故障。

 

Amazon Aurora 的架构

传统的数据库大都设计于70年代,她将数据库实例和存储集成在一起,很难横向扩展,性能也不易改善。Amazon Aurora 是基于云设计的新一代架构,使用的是计算和存储分离的方案(如下图所示),在高可用、存储、日志、连接等多方面有优化。她的上层是跨可用区的多个 Amazon Aurora 实例节点,保障实例的高可用,虚拟存储层保持数据的多个副本,从而保证数据的高可用。Amazon Aurora 为关系型数据库带来了一种新的架构,通过将计算和存储解耦,实例将日志发送给存储服务,日志在存储服务中处理并自动同步多份数据,从而使数据库能够非常灵活的横向扩展。由于计算层和存储层之间传输的是日志而不是更改的数据,因此计算和存储层之间的网络流量大大降低。

 

 

Amazon Aurora的性能

我们使用4台安装了 sysbench 的 R3.8XLarge 机器(32核/244GB内存)对一个 R3.8XLarge (32核/244GB内存)的单节点的 Amazon Aurora MySQL 数据库进行了性能测试,性能测试结果如下表:

写入测试

图中左边显示在压力下, Amazon Aurora 数据库每秒写入超过了11万个事物(11万 tps),而标准的 MySQL 才完成每秒2万个事物。

读取测试

图中右边显示在压力下, Amazon Aurora 数据库每秒执行完成60万个查询(60万 tps),而 MySQL 最好的时候也不过是10万多个查询。

从性能测试可知,在同等情况下, Amazon Aurora 的性能比 MySQL 好很多,由于 Amazon Aurora 可以横向扩展最多15个只读节点,因此在有多个只读节点分担读请求的时候,Amazon Aurora 的读能力大大优于 MySQL。

 

数据库维护

Amazon Aurora 是一种完全托管的数据库,管理员无须管理数据库的操作系统及操作系统上软件的安装等,亚马逊自动定期的将数据库数据及日志备份到 S3 存储,从而使数据库管理员在需要时快速恢复数据,管理员可以很容易将数据库恢复到5分钟前的任何状态。Amazon Aurora 还提供了回退功能,如果用户出现了误操作,管理员可以将数据库回退到3天内的任何一个一致状态。托管的 Amazon Aurora 大大减轻了管理员的硬件维护、软件更新升级、备份恢复等常见操作。

 

总结

Amazon Aurora 数据库在海外已经使用了三年,在这三年中经过了无数客户的测试及生产环境的验证,我们也在这三年里根据用户的需求对她进行了很多的优化,她是一款成熟的、稳定的、性能优异的企业级数据库。Amazon Aurora 在西云数据运营的 AWS (宁夏)区域落地将很大程度解决您应用在高并发下的性能和弹性扩展问题,无论您的数据库是在传统机房或是在云中,都可以很轻易将迁移到 Amazon Aurora 中。通过 Amazon Aurora,您的数据库访问的性能将大幅提高,用户也将得到更好的体验。

蓝勇

AWS 解决方案架构师,负责基于 AWS 的云计算方案架构的咨询和设计,同时致力于 AWS 云服务在国内的应用和推广,在 DR 解决方案、数据仓库、RDS 服务、企业应用、自动化运维等方面有着广泛的设计和实践经验。在加入 AWS 之前,在甲骨文中国担任资深售前工程师,负责售前方案咨询和架构设计,在数据库,中间件,大数据及企业应用方面有丰富经验。