本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
实现SQL服务器数据库现代化
概述
如果您正在开始对传统数据库进行现代化改造,以实现可扩展性、性能和成本优化,那么在使用像 SQL Server 这样的商用数据库时,您可能会面临挑战。商业数据库价格昂贵,会锁定客户,并提供惩罚性的许可条款。本节概述了从SQL服务器向开源数据库迁移和实现现代化的选项,以及有关为您的工作负载选择最佳选项的信息。
您可以将SQL服务器数据库重构为开源数据库,例如亚马逊 Aurora PostgreSQL,以节省 Windows 和SQL服务器许可成本。像 Aurora 这样的云原生现代数据库将开源数据库的灵活性和低成本与商业数据库的强大企业级功能融为一体。如果您有可变的工作负载或多租户工作负载,也可以迁移到 Aurora 无服务器 V2。这可以将成本降低多达 90%,具体取决于工作负载特征。此外,还 AWS 提供诸如适用于 Aurora Postgre 的 Babelfish SQL
数据库产品
从 Windows 上的SQL服务器迁移到开源数据库,例如 Amazon Aurora、Amazon RDS for My SQL 或 Amazon RDS for Postgre,SQL可以在不影响性能或功能的情况下节省大量成本。请考虑以下事项:
-
从亚马逊的 SQL Server Enterprise 版切换EC2到 Postgre 版RDS的亚马逊版SQL或 Amazon for My 版SQL可以节省高达 80% 的成本。RDS
-
从亚马逊上的 SQL Server Enterprise 版切换EC2到亚马逊 Aurora Postgre SQL 兼容版或亚马逊 Aurora 我的SQL兼容版可以节省高达 70% 的成本。
对于传统的数据库工作负载,Amazon RDS for Postgre SQL 和 Amazon RDS for My SQL 地址要求为关系数据库提供了经济实惠的解决方案。Aurora 增加了许多以前仅限于昂贵的商业供应商的可用性和性能功能。Aurora 中的弹性功能需要额外付费。但是,与其他商业供应商的类似功能相比,Aurora的弹性成本仍然比商业软件为同类功能收取的费用便宜。与标准的 My SQL 和 Postgre SQL 部署相比,Aurora 架构经过优化,可显著提高性能。
由于 Aurora 与开源 Postgre SQL 和 My SQL 数据库兼容,因此还有一个额外的好处,那就是便携性。无论是RDS适用于 Postgre 的 Amazon SQL、Amazon RDS for My SQL 还是 Aurora,都取决于了解业务需求并将必要的功能映射到最佳选择。
亚马逊RDS和 Aurora 的比较
下表总结了亚马逊RDS和亚马逊 Aurora 之间的主要区别。
类别 | Amazon RDS for Postgre SQL 或者亚马逊 f RDS or My SQL | Aurora Postgre SQL 或 Aurora My SQL |
---|---|---|
性能 | 表现不错 | 3 倍或更高的性能 |
故障转移 | 通常为 60—120 秒* | 通常为 30 秒 |
可扩展性 | 最多 5 个只读副本 以秒为单位延迟 |
最多 15 个只读副本 延迟(以毫秒为单位) |
存储 | 高达 64 TB | 高达 128 TB |
存储 HA | 多可用区,一个或两个备用区域,每个备用区域都有数据库副本 | 默认情况下,在 3 个可用区中有 6 个数据副本 |
备份 | 每日快照和日志备份 | 持续、异步备份到 Amazon S3 |
Aurora 的创新 | NA | 100 GB 快速克隆数据库 |
自动缩放只读副本 | ||
查询计划管理 | ||
Aurora Serverless | ||
带有全球数据库的跨区域副本 | ||
集群缓存管理** | ||
并行查询 | ||
数据库活动流 |
*大型事务可能会增加故障转移时间
**在 Aurora Postgre 中可用 SQL
下表显示了本节所涵盖的不同数据库服务的每月估计成本。
数据库服务 | USD每月费用* | AWS Pricing Calculator (需要 AWS 账户) |
---|---|---|
Amazon RDS SQL 服务器版企业版 | 3,750 美元 | 估计 |
Amazon RDS SQL 服务器版标准版 | 2,318 美元 | 估计 |
SQL亚马逊上的服务器企业版 EC2 | 2,835 美元 | 估计 |
SQLAmazon 上的服务器标准版 EC2 | 1,345 美元 | 估计 |
适用于 Post RDS gre 的亚马逊 SQL | 742 美元 | 估计 |
Amazon RDS for My SQL | 712 美元 | 估计 |
Aurora SQL | 1,032 美元 | 估计 |
Aurora My SQL | 1,031 美元 | 估计 |
* 存储价格包含在实例定价中。费用根据us-east-1
地区而定。吞吐量和IOPS均为假设。计算是针对 r6i.2xlarge 和 r6g.2xlarge 实例的。
成本优化建议
异构数据库迁移通常需要将数据库架构从源数据库引擎转换为目标数据库引擎,并将数据从源数据库迁移到目标数据库。迁移的第一步是评估SQL服务器架构和代码对象并将其转换为目标数据库引擎。
您可以使用 AWS Schema Conversion Tool (AWS SCT) 来评估和评估数据库是否与各种目标开源数据库选项兼容,RDS例如 Amazon for My SQL 或 Amazon for Postgre SQL、A RDS urora My SQL 和 Post SQL gre。你也可以使用 Babelfish Compass 工具来评估与 Aurora Postgre 的 Babelfish 的兼容性。SQL这使得 AWS SCT 和 Compass 成为了在决定迁移策略之前了解所涉及的前期工作的强大工具。如果您决定继续,则 AWS SCT 会自动对架构进行所需的更改。Babelfish Compass 背后的核心理念是允许SQL数据库在不进行任何修改或很少修改的情况下迁移到 Aurora。Compass 将评估现有SQL数据库,以确定能否实现这一目标。这样,在将数据从SQL服务器迁移到 Aurora 之前,就可以知道结果。
AWS SCT 自动将数据库架构和代码转换和迁移到目标数据库引擎。你可以使用 Babelfish for Aurora Postgre 将数据库和应用程序从服务器迁移SQLSQL到 Aurora Postgre,无需更改架构或SQL进行最少的架构更改。这可以加速您的迁移。
架构迁移完成后,您可以使用迁 AWS DMS 移数据。 AWS DMS 可以执行完整数据加载和复制更改,以便在最短的停机时间内执行迁移。
本节更详细地探讨了以下工具:
-
AWS Schema Conversion Tool
-
Aurora 的 Babelfish Postgre SQL
-
Babelfish 指南针
-
AWS Database Migration Service
AWS Schema Conversion Tool
您可以使用评估现有SQL服务器数据库 AWS SCT 并评估与 Amazon RDS 或 Aurora 的兼容性。为了简化迁移过程,您还可以在异构数据库迁 AWS SCT 移中使用将架构从一个数据库引擎转换为另一个数据库引擎。您可以使用评估您的应用程序 AWS SCT ,并转换编写 C#、C++、Java 和其他语言的应用程序的嵌入式应用程序代码。有关更多信息,请参阅 AWS SCT 文档 AWS SCT中的SQL使用转换应用程序。
AWS SCT 是一款支持许多数据库源的免费 AWS 工具。要使用 AWS SCT,请将其指向源数据库,然后进行评估。然后,AWS SCT
下表显示了由生成的执行摘要示例 AWS SCT ,用于显示将数据库更改为不同目标平台所涉及的复杂性。
目标平台 |
自动更改或最小更改 |
复杂的动作 |
|||||
存储对象 |
代码对象 |
转化操作 |
存储对象 |
代码对象 |
|||
Amazon RDS for My SQL |
60 (98%) |
8 (35%) |
42 |
1 (2%) |
1 |
15 (65%) |
56 |
亚马逊 Aurora 我的SQL兼容版 |
60 (98%) |
8 (35%) |
42 |
1 (2%) |
1 |
15 (65%) |
56 |
适用于 Post RDS gre 的亚马逊 SQL |
60 (98%) |
12 (52%) |
54 |
1 (2%) |
1 |
11 (48%) |
26 |
亚马逊 Aurora Postgre SQL-兼容版 |
60 (98%) |
12 (52%) |
54 |
1 (2%) |
1 |
11 (48%) |
26 |
亚马逊版 Mar RDS iaDB |
60 (98%) |
7 (30%) |
42 |
1 (2%) |
1 |
16 (70%) |
58 |
Amazon Redshift |
61 (100%) |
9 (39%) |
124 |
0 (0%) |
0 |
14 (61%) |
25 |
AWS Glue |
0 (0%) |
17 (100%) |
0 |
0 (0%) |
0 |
0 (0%) |
0 |
Babelfish |
59 (97%) |
10 (45%) |
20 |
2 (3%) |
2 |
12 (55%) |
30 |
AWS SCT 报告还提供有关无法自动转换的架构元素的详细信息。您可以参考AWS 迁移行动手册
Aurora 的 Babelfish Postgre SQL
适用于 Aurora 的 Babelfish Postgre 扩展了 A SQL urora PostgreSQL,使其能够接受来自服务器客户端的数据库连接。SQLBabelfish 使最初为SQL服务器构建的应用程序可以直接与 Aurora Postgre 配合使用SQL,只需很少的代码更改,也无需更改数据库驱动程序。Babelfish 将 Aurora Postgre SQL 变成了双语,这样 Aurora Postgre SQL 就可以同时使用 T 和 SQL PL/pg 语言。SQLBabelfish 最大限度地减少了从 Server 迁移SQL到 Aurora Postgre 的工作量。SQL这加快了迁移速度,最大限度地降低了风险,并显著降低了迁移成本。你可以继续使用 T-p SQL ost 迁移,但也可以选择使用 Postgre SQL 原生工具进行开发
下图说明了使用 T 的应用程序如何SQL连接到SQL服务器中的默认端口 1433 并使用 Babelfish 转换器与 Aurora Postgre SQL 数据库通信,而使用 PL/pg 的应用程序SQL如何使用 Aurora Postgre 中的默认端口 5432 直接同时连接到 Aurora Postgre SQL 数据库。SQL
Babelfish 不支持某些SQL服务器 T-SQL 功能。因此,Amazon 提供了评估工具,用于 line-by-line分析您的SQL陈述并确定 Babelfish 是否不支持其中任何陈述。
Babelfish 评估有两种选择。 AWS SCT 可以评估您的SQL服务器数据库与 Babelfish 的兼容性。另一种选择是 Babelfish Compass 工具,这是推荐的解决方案,因为指南针工具已根据新版本的 Aurora Postgre 版 Babelfish 进行了更新。SQL
Babelfish 指南针
Babelfish Compas
评估和更改完成后,您可以使用SQL服务器原生工具(如SSMS或 sqlcmd)将架构迁移到 Aurora Postgr SQL e。有关说明,请参阅 AWS 数据库博客上的 “使用 Babelfish 从SQL服务器迁移到 Amazon Aurora
AWS Database Migration Service
迁移架构后,您可以使用 AWS Database Migration Service (AWS DMS) 在停机时间最短的情况下将数据迁移到。 AWS AWS DMS 不仅可以加载完整数据,还可以在源系统启动并运行时将更改从源系统复制到目标。源数据库和目标数据库同步后,可以在应用程序指向完成迁移的目标数据库时进行直接转换活动。 AWS DMS 目前仅使用 Babelfish 对 Aurora Postgre SQL 目标执行完整数据加载,不会复制更改。有关更多信息,请参阅文档 AWS Database Migration Service中的 “使用 Babelfish 作为目标” AWS DMS 。
AWS DMS 可以进行同构(跨同一个数据库引擎)和异构(跨不同的数据库引擎)迁移。 AWS DMS 支持许多源数据库和目标数据库引擎。有关更多信息,请参阅数据库博客中的使用 AWS DMS文章将您的SQL服务器数据库迁移到 Amazon RDS for SQL S