很多用户在开发软件系统时,使用了传统的 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 之前,在甲骨文中国担任资深售前工程师,负责售前方案咨询和架构设计,在数据库,中间件,大数据及企业应用方面有丰富经验。
本文转载自 AWS 技术博客。
原文链接:
https://amazonaws-china.com/cn/blogs/china/amazon-aurora-in-china/
评论