为什么迁移至托管数据库

背景

对于首次涉足云计算的组织而言,直接迁移是一种常见的策略。例如,原本在本地 VMware 上运行的应用程序计算,现在迁移至了 AWS 的虚拟化实例上运行。原本在托管机房运行的 Oracle 数据库,现在迁移至了 Amazon Elastic Compute Cloud (Amazon EC2) 上运行。

乍看之下,这种直接迁移策略似乎是上云最简单的方式。从架构图上看差别不大,团队的职责也没有改变。然而,这种做法无法让您充分享受到云计算带来的种种优势。

最近一项由 AWS 委托 IDC 开展的研究中,研究对象是使用 Amazon Relational Database Service (Amazon RDS) 的客户,Amazon RDS 是 AWS 提供的全托管关系型数据库服务。该研究表明,这些客户的数据库运营成本平均降低了 39%,三年内的投资回报率高达 264%。通过与 AWS 合作,这些客户掌握了云优先的思维模式。

要做到这一点,您需要思考公司的核心竞争力是什么,并始终如一地将创新聚焦于这些关键优势之上。

请点击以下选项卡,深入了解为什么要迁移至托管数据库。

  • 数据库管理属于无差别的繁重任务
  • 对于绝大多数公司来说,数据库管理不过是一项毫无差别化的繁重任务。数据虽然是企业最宝贵的资产之一,但数据库管理本身并不能为企业创造价值。

    作为一家公司,您的价值在于通过创新为客户创造价值。而作为数据库管理员,您的价值体现在为数据库模式 (Schema) 设计、查询优化和访问控制提供指导与协助。数据库备份和故障转移管理做得再好,最多只能让您安枕无忧,而提供针对具体应用优化数据使用的建议,才能帮您获得升职加薪的机会。

    AWS 工程师长期以来一直在管理世界上一些数据规模最大的业务系统。正是因为需要支撑如此巨大的业务规模,AWS 开发出了一整套可靠的数据库管理工具,可以全方位地帮助您始终使数据库保持在最佳运行状态。AWS 托管数据库可以为您处理所有基础运维工作。通过托管数据库,您就能够在不中断业务的前提下,实现补丁修复和小版本升级、自动备份和故障转移,获得高可用性和持久性保障,并能随时获得快速有效的技术支持。

    这样,您的开发人员就可以专注于客户最看重的功能,创造更大价值。

  • 数据库故障转移和恢复很难做到万无一失
  • 管理数据库是项技术要求很高且极为敏感的工作,稍有闪失就可能酿成灾难性的后果。一旦主实例发生故障,就意味着应用程序中断运行,公司会因此蒙受经济损失。而错误的备份计划甚至有可能导致数据永久性丢失,这种损失是无法挽回的。

    由于涉及高度敏感的数据和操作,灾难恢复方案往往难以通过实践测试。没有人敢轻易尝试在生产数据库上模拟真实的灾难场景。因此,很多自托管数据库的企业,在实际出现实例故障之前根本无从得知数据库的实际应对能力。对开发人员而言,在处理生产事故的紧张时刻还要操作平时很少用到的运行手册,无疑是一种折磨。

    云计算改变了应用程序故障处理的方式。AWS 云服务根据地理位置划分为多个不同的 AWS 区域,例如 us-east-1(美国弗吉尼亚州北部)、us-west-2(美国俄勒冈州)和 ap-northeast-2(韩国首尔)等。每个区域中还包含多个可用区,而可用区实质上是该区域内彼此独立的数据中心。

    每个可用区从设计上就实现了与同区域内其他可用区故障的隔离。AWS 的很多托管数据库充分利用了这一隔离特性,支持在同一区域的多个可用区内运行数据库实例。这可以最大程度减少最终用户经历的服务中断。

    AWS 在管理大规模客户数据库方面拥有丰富经验。正是管理着如此庞大数量的数据库,AWS 才能开发出一整套成熟的流程来应对各种数据库问题。当主实例发生故障时,您可以轻松切换到备用实例。您还能通过自动化数据库备份来满足合规要求,确保数据在紧急情况下的安全。

  • 容量规划和扩展极为灵活
  • 使用本地数据中心时,容量规划是日常工作中在所难免的一环。您必须提前几个月制定计划,估算增长率,祈祷一切顺利。为了确保万无一失,大家往往会高估容量需求,结果把钱花在了根本用不到的基础设施上。有时又会出现低估的情况,意外停机让客户怨声载道。

    公有云的设计宗旨就是要解决这些棘手的问题。如果您在公有云上自建数据库,可以通过增加实例规格实现纵向扩展,也可以通过增加节点数量实现横向扩展。但这些操作往往存在风险,有可能导致服务中断。

    使用 AWS 的托管数据库,您可以根据需求随时调整数据库规模。系统会自动根据您的需求扩展数据库存储,确保永远不会出现磁盘空间耗尽。您还可以通过控制台根据需要快速调整数据库实例规格或集群规模。AWS 会负责管理扩缩容操作,确保不会引发数据丢失风险。

    除了以上所述,很多商业数据库都要求客户预先购买年度许可,要经历复杂的谈判过程。而大部分 AWS 托管数据库都支持按需付费,您只需要为实际使用的实例规格和存储容量付费。相比之下,按需付费为您提供更大的灵活性,减少了前期的预估工作。

选择托管数据库需要考虑的因素

从自托管数据库迁移至全托管数据库,您需要仔细权衡不同选择。最重要的两个考虑因素是:托管数据库的类型,以及迁移数据的流程。

  • 选择托管数据库类型
  • 在选择托管数据库时,首要考虑的因素是数据库类型。近年来,数据库类型不断增加,从传统的关系型数据库发展出了多种类型的 NoSQL 数据库。比如文档型数据库 MongoDB 和兼容 MongoDB 的 Amazon DocumentDB图形数据库 Amazon Neptune,以及内存数据库 RedisMemcached 等。

    AWS 为各类数据库均提供支持。如果您要使用关系型数据库,Amazon RDS 支持 7 种主流关系型数据库引擎。其中包括 MySQLPostgreSQL 等开源产品,以及 Microsoft SQL ServerOracle Database 等商业产品。

    对于非关系型数据库,AWS 同样提供多种选择。Amazon DocumentDB 是一款全托管的、 兼容 MongoDB 的文档型数据库。Amazon ElastiCache 为 Redis 和 Memcached 数据库提供支持。Amazon Keyspaces (for Apache Cassandra) 是一种与 Apache Cassandra 兼容的数据库,提供无服务器扩展和定价模式。

    面对如此丰富的数据库选择,您便能够在 AWS 上找到最适合自己的托管数据库。

  • 选择迁移流程
  • 数据库迁移是一个精细的过程。尽管迁移至全托管数据库有诸多好处,但您需要谨慎行事,确保数据迁移操作万无一失,尽量避免影响现有用户使用。

    为帮助您成功迁移数据库,AWS 提供多种工具。首先是 AWS Database Migration Service (AWS DMS),它是一项自助式数据库迁移服务。

    您可以使用 AWS DMS 在同类数据库间进行迁移,比如从一个旧的 MySQL 实例迁移至全新的 MySQL 实例。AWS DMS 还可用于在不同类型的数据库之间迁移,比如将 Oracle 等商业数据库迁移至 Amazon Aurora 等云原生关系型数据库。AWS 还提供 AWS Schema Conversion Tool (AWS SCT),用于在不同类型的数据库之间转换数据库模式。

    如果您在数据库迁移过程中需要更多帮助,AWS 还提供其他一些选择。Database Freedom 计划面向符合资格的客户,提供专家咨询和迁移帮助。这些数据库迁移专家的专业知识可以帮助您实现无缝迁移。

    最后,如果您希望获得现场支持,不妨求助 AWS Professional Services 团队。AWS Professional Services 团队可以与您通力合作,共同规划和实施迁移,确保迁移的圆满成功。此外,AWS 还有众多 AWS Database Migration Service 合作伙伴随时为您提供帮助。

在本课程余下的内容中,我们将通过实际案例演示如何将自托管数据库迁移至 AWS 全托管数据库。

从 SQL Server 迁移至 Amazon RDS