

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 虚拟数据提供程序
<a name="virtual-data-provider"></a>

AWS Database Migration Service (DMS) 为架构转换中的数据提供者提供虚拟模式。此功能允许您在不连接到目标数据库的情况下执行架构转换，从而降低基础设施成本并实现灵活的迁移规划。使用虚拟模式，您可以立即开始转换工作，以便在提交资源之前规划最佳迁移策略。您可以评估兼容性，转换和审查架构代码，甚至可以测试不同的目标选项。然后，您就可以在准备就绪时连接到数据库。虚拟模式支持与 AWS DMS 架构转换兼容的所有目标数据库，包括 MySQL、PostgreSQL、Amazon Redshift 和 Amazon RDS for Db2。

## 创建虚拟数据提供程序
<a name="create-virtual-data-provider"></a>

要创建虚拟数据提供程序，只需在用于创建数据提供程序的表单中启用虚拟模式。有关更多信息，请参阅[为 DMS 架构转换配置数据提供程序](https://docs.aws.amazon.com/dms/latest/userguide/getting-started-data-providers.html)。

## 虚拟数据提供程序的使用情况
<a name="virtual-data-provider-usage"></a>

要使用虚拟数据提供程序，请创建一个新的迁移项目或修改现有的迁移项目。然后将项目的目标数据提供程序设置为您已创建的虚拟数据提供程序。

要对该密钥以及用于读取该密钥字段的 IAM 角色使用虚拟提供程序，需使用向该 IAM 角色授予的任意密钥，方可成功设置迁移项目。

设置目标提供程序后，选择**架构转换**选项卡。然后选择**启动架构转换**按钮。等待项目启动。

现在，您可以将架构转换功能用于虚拟目标数据提供程序，就像在真实目标数据提供程序中一样。需要连接到真实目标数据库的操作将被禁用，但是**另存为 SQL** 将可用于目标树。

## 从虚拟数据提供程序过渡到真实数据提供程序
<a name="transition-virtual-to-real-data-provider"></a>

当您准备好继续进行实际迁移时，可以过渡到真实数据提供程序。

**要从虚拟数据提供程序过渡到真实数据提供程序，请按照以下步骤操作。**

1. 登录 AWS 管理控制台，然后打开 AWS DMS 控制台。

1. 在导航窗格中，选择**数据提供程序**。然后选择您要修改的数据提供程序。

1. 转到**关联的迁移项目**部分，查看使用此虚拟数据提供程序的所有迁移项目。

1. 选择第一个关联的项目。

1. 选择**架构转换**选项卡。

1. 选中**详细信息**部分 - **状态**选项。

1. 如果状态为**打开**且**关闭架构转换**按钮未灰显，请选择该按钮并等待项目关闭。

1. 对其余的所有关联迁移项目重复之前的步骤。

1. 确认没有其余打开的项目。

1. 返回到数据提供程序并选择**修改**。

1. 关闭**虚拟模式**。

1. 正确填写连接设置。连接参数取决于数据库引擎。有关更多信息，请参阅[创建数据提供程序](https://docs.aws.amazon.com/dms/latest/userguide/data-providers-create.html)。

1. 选择**保存更改**。
**注意**  
保存更改后，将无法重新开启虚拟模式。

1. 返回 AWS DMS 控制台。

1. 在导航窗格中，选择**迁移项目**。然后选择您要更改其数据提供程序的迁移项目。

1. 选择 **Modify**(修改)。

1. 填写用于连接到目标数据提供程序的密钥。使用正确的密钥，其中包含连接数据库所需的凭证。

1. 填写用于读取目标密钥的 IAM 角色。检查此处指定的 IAM 角色是否正确，是否被授予对连接证书密钥的读取权限，并且可用于 AWS DMS 架构转换服务。

1. 选择**保存更改**。

1. 选择**架构转换**选项卡。

1. 选择**启动架构转换**按钮。

1. 等待项目启动。

**重要**  
禁用虚拟模式并将此更改保存到数据提供程序后，此操作将无法撤消。在关联的迁移项目中，您需要提供数据提供程序的实际数据库连接详细信息，以及可正常使用的密钥和用于访问该密钥的 IAM 角色。

在包含传输数据提供程序的项目第一次启动时，您将获得转换结果。只有以下操作可用：
+ **在节点架构上** - 从数据库刷新。
+ **在数据库对象上** - 应用更改，然后另存为 SQL。

**应用**操作会将转换后的对象应用到真实数据库。

**从数据库刷新**操作会从真实数据库加载数据库对象。所有未保存的转换对象都将丢失。