Amazon Aurora 新增“回溯”特性,让 DB 集群可以回退到特定时间点

  • Steef-Jan Wiggers
  • 谢丽

2018 年 5 月 30 日

话题:MySQLAWSDevOps语言 & 开发

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

Amazon Aurora是一个完全由 AWS 托管的、兼容 MySQL 和 PostgreSQL 的关系型数据库。该数据库新增了“回溯(backtrack)”特性。在兼容 MySQL 的 Amazon Aurora 中,用户可以让数据库集群回溯或回退到一个特定的时间点,而不必从备份还原数据。回溯过程允许把时间点指定到秒,而回退过程通常需要几分钟。这项新特性为开发人员撤销错误操作(如数据或表删除不当)提供了便利。

Amazon Aurora 新提供的回溯特性让用户可以把数据库(DB)集群“回退”到指定的那一秒。据该特性的文档介绍,该特性不能代替 DB 集群日常备份的运行和维护。不过,与传统的备份和还原相比,回溯提供了如下好处:DB 集群可以在破坏性动作发生之前回溯到一个时间点,而且只会非常短暂地中断服务;DB 集群回溯不需要一个新的 DB 集群,而是用几分钟让 DB 集群“回退”;可以轻松找出之前的数据变化——用户可以反复向后或向前回溯,确定数据变化发生的具体时间。

5 月 10 日,Amazon宣布了回溯特性,该特性目前仅适用于 MySQL 数据库。而且,开发人员需要为所有新启动的 Aurora 数据库集群或者从备份还原的集群选择加入回溯特性。在启用回溯特性之后,AWS 会在 Aurora 数据库集群中配置一个先入先出(FIFO)缓冲区。在数据库集群使用期间,Aurora 会使用一个分布式的日志结构存储系统;任意数据库的每一个变化都会生成新的日志记录,每条记录通过日志序列号(LSN)标识。而且,这些 LSN 存储在缓冲区中,可以快速访问和恢复。

当开发人员希望启动一次回溯,他们可以终止自己的应用程序,在浏览器中打开 Aurora 控制台,选择该应用程序使用的集群,点击“Backtrack DB cluster”。

图片来源:https://aws.amazon.com/blogs/aws/amazon-aurora-backtrack-turn-back-time/

下一步,开发人员选择希望回到的时点,并选择“Backtrack DB cluster”选项执行回溯。然后,开发人员可以在控制台中监控回溯执行情况——该过程包括 Aurora 数据库服务停止数据库、关闭所有连接,放弃未提交的写入,然后等待回溯完成后恢复正常操作。当回溯完成时,控制台会通知开发人员。

图片来源:https://aws.amazon.com/blogs/aws/amazon-aurora-backtrack-turn-back-time/

Arjen Schwarz是 Bulletproof 首席 DevOps 工程师 /AWS 交付负责人,他在周记博客中介绍了回溯特性:

如果你有还原 Aurora 数据库的经验,那么你可能知道,把一个快照还原到一个新集群需要将近一个小时,而通过回溯特性回滚需要的时间以秒计算,而且,你可以回滚到你希望的那一秒。这就是说,如果你因为执行了错误的查询或者推出应用程序新版本失败而需要回滚的话,你不会丢失任何数据,也用不了多少时间就可以做到了。

注意,如果开发人员回溯的时间太久,那么他们就会回溯到另一个时点——实际上,该特性允许开发人员反复“取消”或搜索整个时间线。而且,按照设计,Aurora 服务提供了可以和新的回溯特性一起使用的克隆、备份和还原功能。

Aurora 回溯特性在所有运行 Amazon Aurora 的 AWS 区域中都可以使用。对于托管在公司美国区域的数据库,这项新特性的成本约为每百万条变更记录 0.012 美元,在欧洲和亚洲要稍贵一点。要了解详细价格信息,请查看 Aurora定价页面

查看英文原文Amazon Aurora Adds "Backtrack" Feature to Enable Rewinding a DB Cluster to a Specific Point in Time

MySQLAWSDevOps语言 & 开发