AWS Database Migration Service - 用户指南

Size: px
Start display at page:

Download "AWS Database Migration Service - 用户指南"

Transcription

1 AWS Database Migration Service 用户指南

2 AWS Database Migration Service: 用户指南

3 Table of Contents 什么是 AWS Database Migration Service... 1 AWS DMS 执行的迁移任务... 1 AWS DMS 如何在基本级别工作... 2 AWS DMS 的工作原理... 3 AWS DMS 的概述... 3 组成部分... 4 源... 7 目标... 8 与其他 AWS 服务结合使用... 8 支持 AWS CloudFormation... 9 构建 ARN... 9 设置 注册 AWS 创建 IAM 用户 AWS Database Migration Service 迁移规划 入门 开始数据库迁移 步骤 1 欢迎 步骤 2 创建复制实例 步骤 3 指定源和目标终端节点 步骤 4 创建任务 监控您的任务 安全性 所需的 IAM 权限 适用于 CLI 和 API 的 IAM 角色 精细访问控制 使用资源名称控制访问 使用标签控制访问 设置加密密钥 网络安全性 使用 SSL 将 SSL 用于 AWS Database Migration Service 的限制 管理证书 为 MySQL 兼容 PostgreSQL 或 SQL Server 终端节点启用 SSL Oracle 终端节点的 SSL 支持 更改数据库密码 限制 AWS Database Migration Service 的限制 Replication Instance 深入了解复制实例 公有和私有复制实例 AWS DMS 维护 AWS DMS 维护时段 复制引擎版本 弃用复制实例版本 升级复制实例的引擎版本 为复制实例设置网络 数据库迁移的网络配置 创建复制子组 设置加密密钥 创建复制实例 修改复制实例 重启复制实例 删除复制实例 iii

4 支持的 DDL 语句 终端节点 数据迁移的源 将 Oracle 作为源 将 SQL Server 作为源 将 Azure SQL 数据库作为源 将 PostgreSQL 作为源 将 MySQL 作为源 将 SAP ASE 作为源 将 MongoDB 作为源 将 Amazon S3 作为源 将 IBM Db2 用作源 数据迁移的目标 将 Oracle 作为目标 将 SQL Server 作为目标 将 PostgreSQL 作为目标 使用 MySQL 作为目标 使用 Amazon Redshift 作为目标 将 SAP ASE 作为目标 将 Amazon S3 作为目标 使用 Amazon DynamoDB 用作目标 创建源和目标终端节点 任务 创建任务评估报告 创建任务 任务设置 设置 LOB 支持 创建多个任务 连续复制任务 本机 CDC 开始点 修改任务 在任务期间重新加载表 AWS 管理控制台 表映射 使用 AWS 管理控制台选择和转换表映射 使用 JSON 的选择和转换表映射 使用源筛选器 监控任务 任务状态 任务期间的表状态 使用 Amazon CloudWatch 监控复制任务 数据迁移服务指标 复制实例指标 复制任务指标 管理 AWS DMS 日志 使用 AWS CloudTrail 记录 AWS DMS API 调用 配置 CloudTrail 事件日志记录 CloudTrail 日志文件中的 AWS Database Migration Service 事件条目 验证任务 复制任务统计数据 故障排除 限制 标记资源 API 使用事件和通知 AWS DMS 事件类别和事件消息 订阅 AWS DMS 事件通知 iv

5 AWS 管理控制台 AWS DMS API 使用 AWS DMS 和 Snowball 迁移大型数据存储 过程概述 使用 AWS DMS 和 AWS Snowball 迁移数据的分步过程 步骤 1 创建 AWS Snowball 任务 步骤 2 安装 SCT 步骤 3 安装并配置 SCT DMS 代理 步骤 4 解锁 AWS Snowball Edge 设备 步骤 5 创建新的 AWS SCT 项目 步骤 6 配置 AWS SCT 配置文件 步骤 7 注册 DMS 代理 步骤 8 安装源数据库驱动程序 步骤 9 配置 AWS SCT 以访问 Amazon S3 存储桶 步骤 10 创建本地和 DMS 任务 步骤 11 运行和监控本地和 DMS 任务 步骤 12 管理 AWS Snowball 设备 Snowball 到 Amazon S 故障排除 缓慢运行的迁移任务 任务状态栏未移动 缺少外键和辅助索引 Amazon RDS 连接问题 错误消息 线程连接字符串不正确 线程值 0 不正确 联网问题 CDC 在完全加载后粘滞 重新启动任务时出现主键冲突错误 架构初始加载失败 任务失败 并出现未知错误 任务重新启动操作从头开始加载表 每个任务的表数 解决 Oracle 特定的问题 从视图中提取数据 从 Oracle 12c 迁移 LOB 在 Oracle LogMiner 和 Binary Reader 之间切换 错误 Oracle CDC 已停止 Oracle CDC 已超出最大重试计数器 自动将补充日志记录添加到 Oracle 源终端节点 未捕获 LOB 更改 错误 ORA-12899: 值对于列 <column-name> 过大 未正确解释 NUMBER 数据类型 解决 MySQL 特定的问题 由于已禁用二进制日志记录 无法为 Amazon RDS 数据库实例终端节点完成 CDC 任务 与目标 MySQL 实例的连接在任务期间中断 将自动提交添加到与 MySQL 兼容的终端节点 在与 MySQL 兼容的目标终端节点上禁用外键 字符被替换为问号 错误事件 日志条目 使用 MySQL 5.5 的更改数据捕获 增加 Amazon RDS 数据库实例的二进制日志保留期 日志消息 源数据库中的一些更改在应用于目标数据库时不起作用 错误 标识符太长 错误 不受支持的字符集导致字段数据转换失败 错误 代码页 1252 到 UTF8 [120112] 字段数据转换失败 解决 PostgreSQL 特定的问题 JSON 数据类型被截断 用户定义的数据类型的列未正确迁移 错误 未选择要在其中执行创建操作的架构 v

6 未使用 CDC 复制针对表的删除内容和更新内容 未传播截断语句 阻止 PostgreSQL 捕获 DDL 选择在其中创建用于捕获 DDL 的数据库对象的架构 迁移到 PostgreSQL 后缺少 Oracle 表 使用视图作为源的任务未复制行 解决 Microsoft SQL Server 特定的问题 AWS DMS 用户账户在使用 CDC 时所需的特殊权限 捕获 SQL Server 数据库的更改时出错 缺少身份列 错误 SQL Server 不支持发布 更改未显示在目标中 解决 Amazon Redshift 特定的问题 正在加载到与 AWS DMS 复制实例不同的其他区域内的 Amazon Redshift 群集中 错误 关系 attrep_apply_exceptions 已存在 其名称以 awsdms_changes 开头的表出错 查看群集中具有诸如 dms.awsdms_changes xxxx 这样的名称的表 使用 Amazon Redshift 所需的权限 解决 Amazon Aurora MySQL 特定的问题 错误 CHARACTER SET UTF8 字段由, 终止 包含在 " 中 行由 \n 终止 最佳实践 改进性能 调整复制实例的大小 减少源数据库上的工作负载 使用任务日志 架构转换 迁移大型二进制对象 (LOB) 使用受限 LOB 模式 持续复制 为 Oracle 目标更改用户和架构 提高迁移大型表时的性能 参考 AWS DMS 数据类型 发布说明 AWS DMS 发布说明 AWS DMS 发布说明 AWS DMS 发布说明 AWS DMS 发布说明 AWS DMS 发布说明 文档历史记录 早期更新 AWS 词汇表 vi

7 AWS DMS 执行的迁移任务 什么是 AWS Database Migration Service AWS Database Migration Service (AWS DMS) 是一项云服务 可轻松迁移关系数据库 数据仓库 NoSQL 数据库及其他类型的数据存储 您可以在本地实例之间或云与本地设置的组合之间使用 AWS DMS 将数据迁 移到 AWS 云中 利用 AWS DMS 您可以执行一次性迁移 并且可以复制持续更改以保持源和目标同步 如果您要更改数据 库引擎 则可以使用 AWS Schema Conversion Tool (AWS SCT) 将数据库架构转移到新平台 然后 您可 以使用 AWS DMS 来迁移数据 由于 AWS DMS 是 AWS 云的一部分 您将获得 AWS 服务提供的成本效 益 上市速度 安全性与灵活性 有关什么 AWS 区域支持 AWS DMS 的信息 请参阅使用 AWS DMS 复制实例 (p. 51) 有关数据库迁移 成本的信息 请参阅 AWS Database Migration Service 定价页面 AWS DMS 执行的迁移任务 AWS DMS 会接管迁移项目中涉及的许多困难或繁琐的任务 在传统解决方案中 您需要执行容量分析 采购硬件和软件 安装和管理系统以及测试和调试安装 AWS DMS 会自动管理您的迁移所需的所有硬件和软件的部署 管理和监控 您的迁移可在启动 AWS DMS 配 置过程的几分钟内启动并运行 利用 AWS DMS 您可以根据需要向上扩展 (或向下扩展) 迁移以匹配您的实际工作负载 例如 如果您确 定需要额外的存储空间 则可轻松增加分配的存储空间并重新开始您的迁移 通常在几分钟内完成 另一 方面 如果您发现您使用的不是所配置的资源容量的全部 则可轻松缩减以满足您的实际工作负载 AWS DMS 采用即付即用模式 您只需为所使用的 AWS DMS 资源付费 与传统的许可模式相对 无需支 付前期购买成本和日常维护费用 AWS DMS 会自动管理支持您的迁移服务器的基础设施的所有部分 包括硬件和软件 软件修补和错误报 告 AWS DMS 提供了自动故障转移 如果您的主复制服务器因任何原因发生故障 则备份复制服务器可接管 运行 而对服务造成的中断很少或没有 AWS DMS 可以帮助您转换到一个可能比您现在运行的引擎更具成本效益的现代化数据库引擎 例 如 AWS DMS 可以帮助您利用由 Amazon RDS 或 Amazon Aurora 提供的托管数据库服务 或者 它 可以帮助您迁移到由 Amazon Redshift 提供的托管数据仓库服务 NoSQL 平台 (如 Amazon DynamoDB) 或低成本存储平台 (如 Amazon S3) 相反 如果您想要迁离旧的基础设施但继续使用相同的数据库引 擎 AWS DMS 也支持该过程 AWS DMS 支持当今最受欢迎的几乎所有 DBMS 引擎作为数据源 包括 Oracle Microsoft SQL Server MySQL MariaDB PostgreSQL Db2 LUW SAP MongoDB 和 Amazon Aurora AWS DMS 提供了各种可用目标引擎 包括 Oracle Microsoft SQL Server PostgreSQL MySQL Amazon Redshift SAP ASE S3 和 Amazon DynamoDB 您可以从任何支持的数据源迁移到任何支持的数据目标 AWS DMS 完全支持受支持的引擎之间的异构数 据迁移 AWS DMS 可确保您的数据迁移是安全的 静态数据通过 AWS Key Management Service (AWS KMS) 加 密进行加密 迁移过程中 您可以在传输中的数据从源传输至目标时使用安全套接字层 (SSL) 对其进行加 密 1

8 AWS DMS 如何在基本级别工作 AWS DMS 如何在基本级别工作 在最基本级别上 AWS DMS 是 AWS 云中运行复制软件的服务器 您创建源和目标连接以告知 AWS DMS 要进行提取和加载的位置 然后 计划在此服务器上运行以迁移数据的任务 AWS DMS 会创建表和关联的 主键 (如果它们在目标上不存在) 如果您愿意 则可以预先手动创建目标表 或者 也可以使用 AWS SCT 创建部分或全部目标表 索引 视图 触发器等 下图阐明了 AWS DMS 过程 运行 AWS DMS 过程的完整步骤 1. 要开始迁移项目 请确定您的源和目标数据存储 这些数据存储可以驻留在上述任何数据引擎上 2. 对于源和目标 请配置 AWS DMS 内指定到数据库的连接信息的终端节点 这些终端节点使用适当的 ODBC 驱动程序与您的源和目标进行通信 预置复制实例 这是 AWS DMS 使用复制软件自动配置的服务器 创建复制任务 该任务指定要迁移的实际数据表和应用的转换规则 AWS DMS 管理复制任务运行并为 您提供有关迁移过程的状态 要了解更多信息 请参阅以下内容 如果您是初次使用 AWS DMS 但熟悉其他 AWS 服务 请先参阅 AWS Database Migration Service 的工作 原理 (p. 3) 本节详细说明了 AWS DMS 的关键组件及设置和运行迁移的整体过程 如果您要切换数据库引擎 AWS Schema Conversion Tool 可以将您的现有数据库架构 (包括表 索引及 大部分应用程序代码) 迁移到目标平台 有关您要设计迁移策略可能需要的相关 AWS 服务的信息 请参阅 AWS 云产品 Amazon Web Services 提供了丰富的数据库服务 有关最适合您的环境的服务指南 请参阅在 AWS 上运 行数据库. 有关所有 AWS 产品的概述 请参阅 何为云计算 2

9 AWS DMS 的概述 AWS Database Migration Service 的 工作原理 AWS Database Migration Service (AWS DMS) 是一种 Web 服务 可用于将数据从源数据存储迁移到目标 数据存储 这两个数据存储称为终端节点 您可在使用相同数据库引擎的源和目标终端节点之间迁移 例 如从 Oracle 数据库到 Oracle 数据库 您也可在使用不同数据库引擎的源和目标终端节点之间迁移 例如从 Oracle 数据库到 PostgresSQL 数据库 使用 AWS DMS 的唯一要求是 您的终端节点之一必须位于 AWS 服务上 您不能使用 AWS DMS 从一个本地数据库迁移到另一个本地数据库 有关数据库迁移成本的信息 请参阅 AWS Database Migration Service 定价页面 使用以下主题更好地了解 AWS DMS 主题 AWS DMS 的概述 (p. 3) AWS Database Migration Service 的组件 (p. 4) AWS Database Migration Service 源 (p. 7) AWS Database Migration Service 目标 (p. 8) 将 AWS DMS 与其他 AWS 服务结合使用 (p. 8) AWS DMS 的概述 要执行数据库迁移 AWS DMS 将连接到源数据存储 读取源数据并设置数据格式以供目标数据存储使用 然后 它会将数据加载到目标数据存储中 此处理大部分在内存中进行 不过大型事务可能需要部分缓冲到 磁盘 缓存事务和日志文件也会写入磁盘 概括来说 使用 AWS DMS 时 您需要执行以下操作 创建复制服务器 创建源和目标终端节点 它们具有有关您的数据存储的连接信息 创建一个或多个迁移任务以在源和目标数据存储之间迁移数据 任务可能包括三个主要阶段 完全加载现有数据 应用缓存的更改 持续复制 在完全加载迁移过程中 源中的现有数据将移动到目标数据库 AWS DMS 会将源数据存储上的表中的数据 加载到目标数据存储上的表 在完全加载进行期间 对所加载表进行的更改将缓存到复制服务器上 这些是 缓存的更改 请务必注意 在启动给定表的完全加载后 AWS DMS 才会捕获该表的更改 换句话说 对于 每个单独的表 开始捕获更改的时间点是不同的 指定表的完全加载完成时 AWS DMS 立即开始应用该表的缓存更改 所有表加载之后 AWS DMS 开 始收集更改作为持续复制阶段的事务 AWS DMS 应用了所有缓存更改之后 表处于事务一致的状态 此 时 AWS DMS 转向持续复制阶段 将更改作为事务进行应用 3

10 组成部分 持续复制阶段开始之后 积压的事务通常会导致源数据库与目标数据库之间的一些滞后 在处理完这些积压 事务之后 迁移最终进入稳态 此时 您可以关闭应用程序 允许任何剩余的事务应用到目标 然后启动您 的应用程序 现在指向目标数据库 AWS DMS 创建执行迁移所需的目标架构对象 不过 AWS DMS 采用极简方法 仅创建有效迁移数据所需 的那些对象 换而言之 AWS DMS 创建表 主键和 (在某些情况下) 唯一索引 但不会创建有效迁移源中的 数据时不需要的任何其他对象 例如 它不会创建二级索引 非主键约束或数据默认值 在大多数情况下 执行迁移时 您还要迁移大部分或所有源架构 如果您执行同构迁移 (在相同引擎类型的 两个数据库之间) 则您可以使用引擎的本机工具导出和导入架构本身而无需任何数据 以此来迁移架构 如果您执行异构迁移 (在使用不同引擎类型的两个数据库之间) 则可以使用 AWS Schema Conversion Tool (AWS SCT) 为您生成一个完整的目标架构 如果使用该工具 则需要在迁移的 完全加载 和 缓存的更改应 用 阶段禁用表之间的任何依赖项 例如 外键约束 如果出现性能问题 在迁移过程中删除或禁用辅助索引 会有帮助 有关 AWS SCT 的更多信息 请参阅 AWS SCT 文档中的 AWS Schema Conversion Tool AWS Database Migration Service 的组件 本节介绍 AWS DMS 的内部组件以及这些组件如何合作完成数据迁移 了解 AWS DMS 的基础组件可以帮 助您更高效地迁移数据 并可在进行故障排除或调查问题时提供更好的洞察力 AWS DMS 迁移包含三个组件 复制实例 源和目标终端节点以及复制任务 通过在 AWS 区域中创建必要 的复制实例 终端节点和任务即可创建 AWS DMS 迁移 复制实例 概括来说 AWS DMS 复制实例只是托管一个或多个复制任务的托管 Amazon Elastic Compute Cloud (Amazon EC2) 实例 下图显示了运行多个关联的复制任务的示例复制实例 4

11 组成部分 单个复制实例可以托管一个或多个复制任务 具体取决于迁移的特性及复制服务器的容量 AWS DMS 提供了多种复制实例 这样您可以为您的使用案例选择最优配置 有关各类复制实例的更多信息 请参 阅为您的实例选择合适的 AWS DMS 复制实例 (p. 52) AWS DMS 可在 Amazon Elastic Compute Cloud (Amazon EC2) 实例上创建复制实例 一些较小的实例 类足够用于测试服务或小型迁移 如果您的迁移涉及大量表 或者如果您打算同时运行多个复制任务 则应考虑使用较大的实例之一 建议使用这种方法 因为 AWS DMS 可能会占用大量内存和 CPU 根据所选的 Amazon EC2 实例类 您的复制实例附带 50 GB 或 100 GB 的数据存储 对于大多数客 户 此数量通常已足够使用 但是 如果您的迁移涉及大型事务或大量数据更改 则可能需要增加基本 存储分配 更改数据捕获 (CDC) 可能会导致数据被写入磁盘 具体取决于目标写入更改的速度 AWS DMS 使用多可用区部署提供高可用性和故障转移支持 在多可用区部署中 AWS DMS 自动在不 同可用区中预置和维护复制实例的备用副本 主复制实例将同步复制到备用副本 如果主复制实例发生 故障或没有响应 备用副本将以最少中断恢复任何正在运行的任务 由于主复制实例会不断将其状态复 制到备用副本中 因此多可用区部署会产生一些性能开销 有关 AWS DMS 复制实例的更详细信息 请参阅使用 AWS DMS 复制实例 (p. 51) 终端节点 AWS DMS 使用终端节点访问您的源或目标数据存储 根据您的数据存储 特定连接信息会有所不同 但通常 您在创建终端节点时会提供以下信息 终端节点类型 源或目标 引擎类型 数据库引擎的类型 如 Oracle Postgres 或 Amazon S3 服务器名称 服务器名称或 IP 地址 可供 AWS DMS 访问 端口 用于数据库服务器连接的端口号 加密 SSL 模式 (如果用于加密连接) 凭证 具有所需访问权限的账户的用户名和密码 在使用 AWS DMS 控制台创建终端节点时 控制台要求您对终端节点连接进行测试 测试必须成功 然后才能在 DMS 任务中使用该终端节点 与连接信息相似 不同引擎类型的特定测试标准不同 一般 而言 AWS DMS 会验证给定服务器名称和端口处是否存在数据库以及给定的凭证是否可用于连接数据 库 并具有执行迁移所需的必要权限 如果连接测试成功 AWS DMS 将下载并存储架构信息 包括稍 后可在任务配置中使用的表定义和主要/唯一的密钥定义 单个终端节点可供多个复制任务使用 例如 您可能有两个在逻辑上不同的应用程序托管在要单独迁移 的同一源数据库中 您将创建两个复制任务 每组应用程序表一个 但您可以在两个任务中使用同一 AWS DMS 终端节点 您可以使用额外连接属性来自定义终端节点的行为 这些属性可以控制多种行为 如日志记录详细 信息 文件大小以及其他参数 每个数据存储引擎类型具有不同的额外连接属性可用 您可以在各个 数据存储的源或目标部分中 查找该数据存储的特定额外连接属性 有关支持的源和目标数据存储的 列表 请参阅AWS Database Migration Service 源 (p. 7)和AWS Database Migration Service 目 标 (p. 8) 有关 AWS DMS 终端节点的更多详细信息 请参阅 使用 AWS DMS 终端节点 (p. 73) 复制任务 可以使用 AWS DMS 复制任务将一组数据从源终端节点复制到目标终端节点 创建复制任务是在开始迁 移之前需要执行的最后一步 当您创建复制任务时 需要指定以下任务设置 复制实例 将托管和运行任务的实例 源终端节点 5

12 组成部分 目标终端节点 迁移类型选项 迁移类型可以为以下各项之一 完全加载 (迁移现有数据) 如果您可以承受足够长时间的中断来复制现有数据 则适合选择该选 项 该选项仅将数据从您的源数据库迁移到目标数据库 在需要时创建表 完全加载 + CDC (迁移现有数据和复制持续更改) 该选项执行完整数据加载 同时捕获源上的更 改 完全加载完成之后 将捕获的更改应用到目标 最终更改应用达到稳态 此时您可以关闭应用 程序 让剩余的更改传播到目标 然后重新启动应用程序并指向目标 仅 CDC (仅复制数据更改) 在一些情况下 使用 AWS DMS 之外的方法复制现有数据可能会更有 效 例如 在同构迁移中 使用本机导出/导入工具可能会在加载批量数据时更有效 在这种情况 下 您可以使用 AWS DMS 复制从您开始批量加载的时候开始的更改 以实现并保持源数据库与目 标数据库的同步. 有关迁移类型选项的完整说明 请参阅 创建任务 (p. 173) 目标表准备模式选项 有关目标表模式的完整说明 请参阅 创建任务 (p. 173) 不执行任何操作 AWS DMS 假定已在目标上预先创建目标表 删除目标中的表 AWS DMS 删除并重新创建目标表 截断 如果您在目标上创建表 AWS DMS 将在开始迁移之前截断这些表 如果不存在任何表并且 您选择了此选项 AWS DMS 将创建任何缺少的表 LOB 模式选项 有关 LOB 模式的完整说明 请参阅 在 AWS DMS 任务中为源数据库设置 LOB 支 持 (p. 189) 不包括 LOB 列 将从迁移操作中排除 LOB 列 完整 LOB 模式 迁移整个 LOB 而不管大小如何 AWS DMS 以块的形式分段迁移 LOB 块的大 小受最大 LOB 大小参数的控制 此模式比受限 LOB 模式的速度要慢 受限 LOB 模式 按最大 LOB 大小参数指定的值截断 LOB 此模式比使用完整 LOB 模式的速度要 快 表映射 指示要迁移的表 数据转换 更改架构 表和列名称 数据验证 CloudWatch 日志记录 您可以使用任务将数据从源终端节点迁移到目标终端节点 任务处理在复制实例上完成 您可以指定要 迁移的表和架构以及任何特殊处理 例如 日志记录要求 控制表数据和错误处理 从概念上说 AWS DMS 复制任务执行两种不同的功能 如下图所示 完全加载过程非常简单明了 易于理解 从源中以批量提取方式提取数据 并将其直接加载到目标中 您可以在 AWS DMS 控制台上的 Advanced Settings (高级设置) 下指定要并行提取和加载的表数 有关 AWS DMS 任务的更多信息 请参阅使用 AWS DMS 任务 (p. 170) 6

13 源 持续复制 或更改数据捕获 (CDC) 您也可以使用 AWS DMS 任务在将数据迁移到目标时捕获对源数据存储的持续更改 AWS DMS 在复制 来自源终端节点的持续更改时使用更改捕获流程 该流程使用数据库引擎的本机 API 收集对数据库日志 的更改 在 CDC 过程中 复制任务旨在使用内存中缓冲区保存传输中的数据 从而从源到目标流式处理更改 如果内存中缓冲区因任何原因而耗尽 负责任务会将待处理更改溢出到磁盘上的更改缓存 例如 如果 AWS DMS 从源捕获更改的速度比在目标中应用更改的速度快 则会出现这种情况 在这种情况下 您 会看到任务的目标延迟 超出任务的源延迟 通过在 AWS DMS 控制台上导航到您的任务并打开 Task Monitoring (任务监控) 选项卡可以查看此内 容 CDCLatencyTarget 和 CDCLatencySource 图形显示在页面底部 如果您有显示目标延迟的任务 则可能需要对目标终端节点进行一些优化 以提高应用程序速率 复制任务还会将存储用于任务日志 如上所述 随复制实例预配置的磁盘空间通常足以满足日志记录和 溢出更改需要 如果您需要更多磁盘空间 例如 在使用详细调试调查迁移问题时 您可以修改复制实 例以分配更多空间 架构和代码迁移 AWS DMS 不执行架构或代码转换 如果您的源和目标是相同的数据库引擎 则可以使用 Oracle SQL Developer MySQL Workbench 或 pgadmin III 等工具来移动架构 如果您希望将现有架构转换到不 同的数据库引擎 则可以使用 AWS SCT 它可以创建目标架构 也可以生成和创建整个架构 表 索 引 视图等 您还可以使用 AWS SCT 来将 PL/SQL 或 TSQL 转换为 PgSQL 和其他格式 有关 AWS SCT 的更多信息 请参阅 AWS Schema Conversion Tool AWS DMS 会尽可能尝试为您创建目标架构 有时 AWS DMS 无法创建架构 例如 出于安全原 因 AWS DMS 不会创建目标 Oracle 架构 对于 MySQL 数据库目标 您可以使用额外连接属性以让 AWS DMS 将所有对象迁移到指定的数据库和架构 或者让其在源上查找架构时为您创建各个数据库和 架构 AWS Database Migration Service 源 在使用 AWS Database Migration Service 进行数据迁移时 您可以将以下数据存储作为源终端节点 本地和 EC2 实例数据库 Oracle 版本 10.2 和更高版本 11g 以及最高为 12.1 (Enterprise Standard Standard One 和 Standard Two 版) Microsoft SQL Server 版本 R 和 2016 (Enterprise Standard Workgroup 和 Developer 版) 不支持 Web 和 Express 版 MySQL 版本 和 5.7 MariaDB (作为与 MySQL 兼容的数据源受支持) PostgreSQL 版本 9.4 和更高版本. MongoDB 版本 2.6.x 和 3.x 和更高版本. SAP Adaptive Server Enterprise (ASE) 版本 和更高版本. Db2 LUW 版本 9.7 版 所有修复包都受支持 10.1 版 所有修复包都受支持 10.5 版 除修复包 5 之外的所有修复包都受支持 Microsoft Azure Azure SQL 数据库. 7

14 目标 Amazon RDS 实例数据库和 Amazon S3 Oracle 版本 11g (版本 v1 及更高版本) 和 12c 包括 Enterprise Standard Standard One 和 Standard Two 版. Microsoft SQL Server 版本 2008R 和 2016 (Enterprise Standard Workgroup 和 Developer 版) 不支持 Web 和 Express 版 MySQL 版本 和 5.7 MariaDB (作为与 MySQL 兼容的数据源受支持) PostgreSQL 9.4 和更高版本 只有版本 和更高版本以及 和更高版本支持更改数据捕获 (CDC) 只有这些版本及更高版本才支持 CDC 必需的 rds.logical_replication 参数 Amazon Aurora (作为与 MySQL 兼容的数据源受支持). Amazon S3. AWS Database Migration Service 目标 在使用 AWS Database Migration Service 进行数据迁移时 您可以将以下数据存储作为目标终端节点 本地实例数据库和 Amazon EC2 实例数据库 Oracle 版本 10g 11g 12c (Enterprise Standard Standard One 和 Standard Two 版) Microsoft SQL Server 版本 R 和 2016 (Enterprise Standard Workgroup 和 Developer 版) 不支持 Web 和 Express 版 MySQL 版本 和 5.7 MariaDB (支持作为与 MySQL 兼容的数据目标) PostgreSQL 版本 9.4 和更高版本 SAP Adaptive Server Enterprise (ASE) 版本 和更高版本 Amazon RDS 实例数据库 Amazon Redshift Amazon DynamoDB 和 Amazon S3 Oracle 版本 11g (版本 v1 和更高版本) 和 12c (Enterprise Standard Standard One 和 Standard Two 版) Microsoft SQL Server 版本 2008 R 和 2014 (Enterprise Standard Workgroup 和 Developer 版) 不支持 Web 和 Express 版 MySQL 版本 和 5.7 MariaDB (支持作为与 MySQL 兼容的数据目标) PostgreSQL 版本 9.4 和更高版本 Amazon Aurora 与 MySQL 的兼容性 与 PostgreSQL 兼容的 Amazon Aurora Amazon Redshift Amazon S3 Amazon DynamoDB 将 AWS DMS 与其他 AWS 服务结合使用 您可以将 AWS DMS 与多种其他 AWS 服务结合使用 您可以将 Amazon EC2 实例或 Amazon RDS 数据库实例用作数据迁移的目标 8

15 支持 AWS CloudFormation 您可以使用 AWS Schema Conversion Tool (AWS SCT) 将源架构和 SQL 代码转换为对等的目标架构和 SQL 代码 您可以使用 Amazon S3 作为数据的存储站点 或者将其用作迁移大量数据的中间步骤 您可以使用 AWS CloudFormation 设置 AWS 资源以便用于基础设施管理或部署 例如 您可以预置 AWS DMS 资源 例如 复制实例 任务 证书和终端节点 您可以创建一个描述所需的全部 AWS 资源的模 板 AWS CloudFormation 将为您预置和配置这些资源 AWS DMS 对 AWS CloudFormation 的支持 您可以使用 AWS CloudFormation 预置 AWS Database Migration Service 资源 AWS CloudFormation 是 一种服务 可以帮助您为基础设施管理或部署模拟和设置您的 AWS 资源 例如 您可以预置 AWS DMS 资 源 例如 复制实例 任务 证书和终端节点 您可以创建一个描述所需的全部 AWS 资源的模板 AWS CloudFormation 将为您预置和配置这些资源 作为开发人员或系统管理员 您可以创建和管理这些资源的集合 然后将其用于重复性迁移任务或将资源 部署到您的组织中 有关 AWS CloudFormation 的更多信息 请参阅 AWS CloudFormation 用户指南 中的 AWS CloudFormation 概念 AWS DMS 支持使用 AWS CloudFormation 创建以下 AWS DMS 资源 AWS::DMS::Certificate AWS::DMS::Endpoint AWS::DMS::EventSubscription AWS::DMS::ReplicationInstance AWS::DMS::ReplicationSubnetGroup AWS::DMS::ReplicationTask 为 AWS DMS 构造 Amazon 资源名称 (ARN) 如果您使用 AWS CLI 或 AWS Database Migration Service API 自动进行数据库迁移 则需要了解如何使用 Amazon 资源名称 (ARN) 在 Amazon Web Services 中创建的资源由 ARN 标识 这是唯一标识符 如果您 使用 AWS CLI 或 AWS DMS API 来设置数据库迁移 则必须提供要使用的资源的 ARN AWS DMS 资源的 ARN 使用以下语法 arn:aws:dms:<region>:<account number>:<resourcetype>:<resourcename> 在此语法中 <region> 是在其中创建 AWS DMS 资源的 AWS 区域的 ID 例如 us-west-2 下表显示了 AWS 区域名称和您在构建 ARN 时应使用的值 区域 名称 亚太区域 东京 ap-northeast-1 亚太区域 首尔 ap-northeast-2 亚太地区 (孟买) 区域 ap-south-1 亚太区域 新加坡 ap-southeast-1 亚太区域 悉尼 ap-southeast-2 9

16 构建 ARN 区域 名称 加拿大 (中部) 区域 ca-central-1 欧洲 法兰克福 区域 eu-central-1 欧洲 爱尔兰 区域 eu-west-1 欧洲 (伦敦) 区域 eu-west-2 南美洲 圣保罗 区域 sa-east-1 美国东部 弗吉尼亚北部 地区 us-east-1 美国东部 俄亥俄 区域 us-east-2 美国西部 加利福利亚北部 区域 us-west-1 美国西部 俄勒冈 区域 us-west-2 <account number> 是省略了短划线的账号 要查找您的账号 请访问 并登 录您的 AWS 账户 选择我的账户/控制台 然后选择我的账户 <resourcetype> 是 AWS DMS 资源的类型 下表显示了在构造特定 AWS DMS 资源的 ARN 时应使用的资源类型 AWS DMS 资源类型 ARN 格式 复制实例 arn:aws:dms:<region>: <account>:rep: <resourcename> Endpoint arn:aws:dms:<region>:<account>:endpoint: <resourcename> 复制任务 arn:aws:dms:<region>:<account>:task:<resourcename> 子网组 arn:aws:dms:<region>:<account>:subgrp:<resourcename> <resourcename> 是分配给 AWS DMS 资源的资源名称 这是一个随机生成的字符串 下表显示了 AWS 账户为 的 AWS DMS 资源的示例 ARN 它们在 美国东部 弗吉尼亚北 部 区域中创建 并具有资源名称 资源类型 示例 ARN 复制实例 arn:aws:dms:useast-1: :rep:qlxqz64mh7cxf4qcqmgrvyvxai Endpoint arn:aws:dms:useast-1: :endpoint:d3hmz2igucgff3ntaxuxgf6s5a 复制任务 arn:aws:dms:useast-1: :task:2pvremwnpgyjcvu2ibptoytiv4 子网组 arn:aws:dms:us-east-1: :subgrp:test-tag-grp 10

17 注册 AWS 针对 AWS Database Migration Service 进行设置 首次使用 AWS Database Migration Service (AWS DMS) 前 请完成以下任务 1. 注册 AWS (p. 11) 2. 创建 IAM 用户 (p. 11) 3. AWS Database Migration Service 迁移规划 (p. 12) 注册 AWS 在注册 Amazon Web Services (AWS) 时 您的 AWS 账户会自动注册 AWS 中的所有服务 包括 AWS DMS 您只需为使用的服务付费 借助 AWS DMS 您仅需为实际使用的资源付费 您创建的 AWS DMS 复制实例将处于活跃状态 (不在沙盒 中运行) 您需要为实例支付标准的 AWS DMS 使用费 直到您终止该实例 有关 AWS DMS 使用费率的更 多信息 请参阅 AWS DMS 产品页面 如果您是新的 AWS 客户 则可以开始免费使用 AWS DMS 有关更 多信息 请参阅 AWS 免费使用套餐 如果您关闭 AWS 账户 则会在两天后删除与您的账户关联的所有 AWS DMS 资源和配置 这些资源包括所 有复制实例 源和目标终端节点配置 复制任务和 SSL 证书 如果两天后您决定再次使用 AWS DMS 则需 重新创建您需要的资源 如果您已有一个 AWS 账户 请跳到下一个任务 如果您没有 AWS 账户 请通过以下步骤创建一个账户 注册 AWS 1. 打开 然后选择 Create an AWS Account 2. 按照屏幕上的说明进行操作 请记下您的 AWS 账号 因为在下一个任务中您会用到它 创建 IAM 用户 AWS 中的服务 (例如 AWS DMS) 要求您在访问时提供证书 以便服务可以确定您是否有权访问其资源 控 制台要求您的密码 您可以为您的 AWS 账户创建访问密钥以访问命令行界面或 API 但是 我们不建议您 使用 AWS 账户的凭证访问 AWS 而建议您使用 AWS Identity and Access Management (IAM) 创建 IAM 用户 然后将该用户添加到具有管理权限的 IAM 组或授予此用户管理权限 然后您就可以使用特别的 URL 和 IAM 用户的凭证访问 AWS 如果您已注册 AWS 但尚未为自己创建一个 IAM 用户 则可以使用 IAM 控制台自行创建 为您自己创建一个 IAM 用户并将该用户添加到管理员组 1. 使用 AWS 账户电子邮件地址和密码 以 AWS 账户根用户 身份登录到 IAM 控制台 ( console.aws.amazon.com/iam/) 11

18 AWS Database Migration Service 迁移规划 Note 强烈建议您遵守以下使用 Administrator IAM 用户的最佳实践 妥善保存根用户凭证 只在 执行少数账户和服务管理任务时才作为根用户登录 2. 在控制台的导航窗格中 选择 Users 然后选择 Add user 3. 对于 User name 键入 Administrator 4. 选中 AWS 管理控制台 access 旁边的复选框 选择 Custom password 然后在文本框中键入新用户的 密码 您可以选择 Require password reset (需要重置密码) 以强制用户在下次登录时创建新密码 5. 选择 Next: Permissions 6. 在设置权限页面上 选择将用户添加到组 7. 选择 Create group 8. 在 Create group (创建组) 对话框中 对于 Group name (组名称) 键入 Administrators 9. 对于 Filter policies (筛选策略) 选中 AWS managed - job function (AWS 托管 - 工作职能) 的复选框 10. 在策略列表中 选中 AdministratorAccess 的复选框 然后选择 Create group 11. 返回到组列表中 选中您的新组所对应的复选框 如有必要 选择 Refresh 以在列表中查看该组 12. 选择 Next: Review 以查看要添加到新用户的组成员资格的列表 如果您已准备好继续 请选择 Create user 您可使用此相同的流程创建更多的组和用户 并允许您的用户访问 AWS 账户资源 要了解有关使用策略限 制用户对特定 AWS 资源的权限的信息 请参阅访问管理和示例策略 要以该新 IAM 用户的身份登录 请从 AWS 控制台退出 然后使用以下 URL 其中 your_aws_account_id 是您的不带连字符的 AWS 账户 (例如 如果您的 AWS 账户是 则您的 AWS 账户 ID 是 ) 输入您刚创建的 IAM 用户名和密码 登录后 导航栏显示 your_aws_account_id 如果您不希望您的登录页面 URL 包含 AWS 账户 ID 可以创建账户别名 在 IAM 控制面板上 选择自定 义并键入别名 例如 您的公司名称 要在创建账户别名后登录 请使用以下 URL 要为您的账户验证 IAM 用户的登录链接 请打开 IAM 控制台并在控制面板的 AWS Account Alias 下进行检 查 AWS Database Migration Service 迁移规划 在规划使用 AWS Database Migration Service 进行数据库迁移时 请考虑以下事项 您需要配置网络 将您的源和目标数据库连接到 AWS DMS 复制实例 这可以非常简单 例如连接到位 于相同 VPC 中的两个 AWS 资源作为复制实例 也可以非常复杂 例如将本地数据库通过 VPN 连接到 Amazon RDS 数据库实例 有关更多信息 请参阅 数据库迁移的网络配置 (p. 58) 源和目标终端节点 您需要知道源数据库中的哪些信息和表需要迁移到目标数据库 AWS DMS 支持基本 架构迁移 包括创建表和主键 但是 AWS DMS 不会在目标数据库中自动创建辅助索引 外键 用户账 户等 请注意 根据源和目标数据库引擎 您可能需要设置补充日志记录或者修改源和目标数据库的其他 设置 有关更多信息 请参阅数据迁移的源 (p. 73)和数据迁移的目标 (p. 127) 架构/代码迁移 AWS DMS 不执行架构或代码转换 您可以使用 Oracle SQL Developer MySQL Workbench 或 pgadmin III 等工具来转换架构 如果您希望将现有架构转换到不同的数据库引擎 则可以 12

19 AWS Database Migration Service 迁移规划 使用 AWS Schema Conversion Tool 它可以创建目标架构 也可以生成和创建整个架构 表 索引 视图等 您还可以使用此工具来将 PL/SQL 或 TSQL 转换为 PgSQL 和其他格式 有关 AWS Schema Conversion Tool 的更多信息 请参阅 AWS Schema Conversion Tool 不支持的数据类型 一些源数据类型需要转换为目标数据库的等效数据类型 请参阅有关数据存储的源或 目标部分来查找有关支持的数据类型的更多信息 13

20 开始数据库迁移 AWS Database Migration Service 入 门指南 AWS Database Migration Service (AWS DMS) 可帮助您轻松而安全地将数据库迁移至 AWS 您可以在与 最广泛使用的商用和开源数据库 (例如 Oracle MySQL 和 PostgreSQL) 之间迁移数据 该服务支持同构迁 移 (如 Oracle 到 Oracle) 也支持不同数据库平台之间的异构迁移 (如 Oracle 到 PostgreSQL 或 MySQL 到 Oracle) 有关使用 AWS Database Migration Service 进行数据库迁移的成本的信息 请参阅 AWS Database Migration Service 定价页 主题 使用 AWS Database Migration Service 开始数据库迁移 (p. 14) 步骤 1 欢迎 (p. 14) 步骤 2 创建复制实例 (p. 15) 步骤 3 指定源和目标终端节点 (p. 19) 步骤 4 创建任务 (p. 22) 监控您的任务 (p. 26) 使用 AWS Database Migration Service 开始数据库 迁移 您可以通过多种方法开始数据库迁移 您可以选择将指导您完成该过程中各个步骤的 AWS DMS 控制台向 导 也可以通过从导航窗格中选择相应的任务来执行各个步骤 您也可以使用 AWS CLI 有关将 CLI 与 AWS DMS 一起使用的信息 请参阅适用于 AWS DMS 的 AWS CLI 要使用该向导 请从 AWS DMS 控制台上的导航窗格中选择 Getting started 可以使用该向导来帮助创建您 的第一个数据迁移 在向导执行过程中 您将分配执行迁移的所有过程的复制实例 指定源数据库和目标数 据库 然后创建一个任务或一组任务来定义要使用的表和复制过程 随后 AWS DMS 将创建复制实例并对 要迁移的数据执行任务 或者 您可以通过从导航窗格中选择项来创建 AWS DMS 数据库迁移的每个组件 对于数据库迁移 您必须 执行以下操作 完成针对 AWS Database Migration Service 进行设置 (p. 11)中概述的任务 分配执行迁移的所有过程的复制实例 指定源和目标数据库终端节点 创建一个任务或一组任务来定义要使用的表和复制过程 步骤 1 欢迎 如果您使用 AWS DMS 控制台向导启动您的数据库迁移 您将看到 Welcome 页面 其中介绍了使用 AWS DMS 的数据库迁移过程 14

21 步骤 2 创建复制实例 从控制台的 Welcome 页面开始数据库迁移 选择 Next 步骤 2 创建复制实例 数据库迁移过程中的第一个任务是创建一个复制实例 该实例具有足够的存储和处理能力来执行您分配的任 务并将数据从源数据库迁移至目标数据库 此实例的所需大小是变化的 具体取决于需迁移的数据量和需要 实例执行的任务数 有关复制实例的更多信息 请参阅使用 AWS DMS 复制实例 (p. 51) 以下过程假定您已选择 AWS DMS 控制台向导 请注意 也可以从 AWS DMS 控制台的导航窗格中选择复 制实例 然后选择创建复制实例以执行该步骤 使用 AWS 控制台创建复制实例 1. 在导航窗格中 单击复制实例 2. 选择创建复制实例 3. 在创建复制实例页中 指定您的复制实例信息 下表描述了设置 15

22 步骤 2 创建复制实例 对于此选项 请执行该操作 名称 为复制实例指定包含 8 到 16 个可打印 ASCII 字符 (不 含 / " 的名称 该名称对于所选择区域中您的账 户应唯一 您可以选择向名称中添加一些信息 例如包 含区域和要执行的任务 例如 west2-mysql2mysqlinstance1 描述 键入复制实例的简要描述 实例类 选择带迁移所需的配置的实例类 请记住 实例必须具有足 够的存储 网络和处理能力才能成功完成迁移 有关如何决 定最适合迁移的实例类的更多信息 请参阅使用 AWS DMS 复制实例 (p. 51) 复制引擎版本 默认情况下 复制实例运行最新版本的 AWS DMS 复制引 擎软件 建议您接受该默认值 不过 您可以选择以前的引 擎版本 (如果需要) VPC 选择要使用的 Amazon Virtual Private Cloud (Amazon VPC) 如果源或目标数据库位于 VPC 中 请选择该 VPC 如果您的源数据库和目标数据库位于不同的 VPC 中 请确保它们位于公有子网中且可公开访问 然后选择复 制实例将放置到的 VPC 中 复制实例必须能够访问源 VPC 中的数据 如果您的源数据库和目标数据库都不在 VPC 中 请选择复制实例将放置到的 VPC 16

23 步骤 2 创建复制实例 4. 对于此选项 请执行该操作 多可用区 可使用此可选参数在另一个可用区中创建复制实例的备用副 本以支持故障转移 如果您打算使用更改数据捕获 (CDC) 或持续复制 您应启用该选项 公开访问 如果您希望能够从 Internet 访问复制实例 请选择该选项 选择高级选项卡 (如下所示) 以设置网络和加密设置值 (如果需要) 下表描述了设置 对于此选项 请执行该操作 分配的存储空间 (GB) 存储空间主要由日志文件和缓存的事务消耗 对于缓存事 务 仅在需要将缓存的事务写入磁盘时消耗存储空间 因 此 AWS DMS 不会使用大量存储空间 一些例外情况包 括 产生大量事务负载的超大型表 加载大型表可能需要花费 一些时间 因此 在大型表加载期间 很有可能将缓存的 事务写入磁盘 配置为在加载缓存的事务之前暂停的任务 在此情况下 将缓存所有事务 直到为所有表完成完全加载 在使用此 配置时 缓存的事务可能会占用大量存储空间 17

24 步骤 2 创建复制实例 对于此选项 请执行该操作 使用将加载到 Amazon Redshift 中的表配置的任务 不 过 在目标为 Amazon Aurora 时 该配置不会出现问 题 在大多数情况下 默认分配的存储空间已足够 不过 关注 与存储相关的指标并在您发现使用的存储空间大于默认分配 值时纵向扩展始终是不错的做法 5. 复制子网组 在选定 VPC 中选择要在其中创建复制实例的复制子网组 如果源数据库位于 VPC 中 请选择包含源数据库的子网组 作为复制实例的位置 有关复制子网组的更多信息 请参 阅创建复制子组 (p. 62) 可用区 选择源数据库所在的可用区 VPC 安全组 在 VPC 中创建复制实例 如果源数据库位于 VPC 中 请选 择一个 VPC 安全组 该安全组提供对数据库所在的数据库 实例的访问权限 KMS 主密钥 选择要用于加密复制存储和连接信息的加密密钥 如果选择 (默认值) aws/dms 则会使用与您的账户和区域关联的默认 AWS Key Management Service (AWS KMS) 密钥 将显示 说明和您的账号以及密钥的 ARN 有关使用加密密钥的更 多信息 请参阅设置加密密钥和指定 KMS 权限 (p. 40) 指定维护设置 下表描述了设置 有关维护设置的更多信息 请参阅AWS DMS 维护时段 (p. 54) 对于此选项 请执行该操作 自动次要版本升级 选择在维护时段内自动将次要引擎升级应用于复制实例 维护时段 选择每周可以进行系统维护的时间范围 采用通用协调时间 (UTC) 默认值 从每区域 8 小时的时间段中随机选择的 30 分钟时 段 (随机选取周中的某天进行) 6. 选择创建复制实例 18

25 步骤 3 指定源和目标终端节点 步骤 3 指定源和目标终端节点 在创建复制实例时 您可以指定源和目标数据存储 源和目标数据存储可能位于 Amazon Elastic Compute Cloud (Amazon EC2) 实例和 Amazon Relational Database Service (Amazon RDS) 数据库实例上 也可能 是本地数据库 以下过程假定您已选择 AWS DMS 控制台向导 请注意 也可以从 AWS DMS 控制台的导航窗格中选择终 端节点 然后选择创建终端节点以执行该步骤 在使用控制台向导时 您将在同一页面上创建源和目标终端 节点 如果未使用控制台向导 您可以单独创建每个终端节点 使用 AWS 控制台指定源或目标数据库终端节点 1. 在连接源和目标数据库终端节点页中 指定源或目标数据库的连接信息 下表描述了设置 19

26 步骤 3 指定源和目标终端节点 对于此选项 请执行该操作 终端节点标识符 键入要用于标识终端节点的名称 您可能需要在名称中包含 终端节点的类型 例如 oracle-source 或 PostgreSQLtarget 对于所有复制实例来说 名称必须是唯一的 源引擎和目标引擎 选择作为终端节点的数据库引擎的类型 20

27 步骤 3 指定源和目标终端节点 2. 对于此选项 请执行该操作 服务器名称 键入服务器名称 对于本地数据库 这可以是 IP 地 址或公有主机名 对于 Amazon RDS 数据库实例 这可以是数据库实例的终端节点 (也称为 DNS 名 称) 例如 mysqlsrvinst.abcd uswest-2.rds.amazonaws.com 端口 键入数据库使用的端口 SSL 模式 如果您需要为此终端节点启用连接加密 请选择 SSL 模 式 根据您选择的模式 您可能需要提供证书和服务器证书 信息 用户名称 使用允许数据迁移所需的权限键入用户名 有关所需权限的 信息 请参阅本用户指南中的源和目标数据库引擎的安全性 部分 密码 键入具有所需权限的账户的密码 如果您需要在密码中使用 特殊字符 (例如 + 或 & ) 请用大括号 将整个密码括起 来 选择高级选项卡 (如下所示) 以设置连接字符串和加密密钥值 (如果需要) 您可以选择运行测试以测试终 端节点连接 21

28 步骤 4 创建任务 对于此选项 请执行该操作 额外的连接属性 在此处键入任何其他连接参数 有关额外连接属性的更多信 息 请参阅有关数据存储的文档部分 KMS 主密钥 选择要用于加密复制存储和连接信息的加密密钥 如果选择 (默认值) aws/dms 则会使用与您的账户和区域关联的默认 AWS Key Management Service (AWS KMS) 密钥 有关使 用加密密钥的更多信息 请参阅设置加密密钥和指定 KMS 权限 (p. 40) 步骤 4 创建任务 创建一个任务以指定要迁移的表 使用目标架构映射数据并在目标数据库上创建新表 在创建任务的过程 中 您可以选择迁移类型 迁移现有数据 迁移现有数据并复制持续更改或仅复制数据更改 借助 AWS DMS 您可以指定源数据库和目标数据库之间的准确数据映射 在指定映射之前 请确保查看有 关源数据库和目标数据库之间的数据类型映射的文档部分 22

29 步骤 4 创建任务 您可以选择在创建任务页中指定完任务信息后立即启动任务 或者在指定完任务信息后从 控制面板 页中启 动任务 以下过程假定您已选择 AWS DMS 控制台向导并且已使用该向导指定复制实例信息和终端节点 请注意 也 可以从 AWS DMS 控制台的导航窗格中选择任务 然后选择创建任务以执行该步骤 创建迁移任务 1. 在创建任务页中 指定任务选项 下表描述了设置 对于此选项 请执行该操作 任务名称 为任务键入名称 任务描述 键入任务的说明 源终端节点 显示将使用的源终端节点 目标终端节点 显示将使用的目标终端节点 复制实例 显示将使用的复制实例 迁移类型 选择要使用的迁移方法 您可以选择仅让现有数据迁移到目 标数据库 或将持续更改以及迁移的数据发送到目标数据 库 在创建时启动任务 在选定该选项时 任务将在创建后立即开始 23

30 步骤 4 创建任务 2. 选择任务设置选项卡 (如下所示) 指定目标表 LOB 支持以及启用日志记录值 显示的任务设置取决于 所选的迁移类型值 例如 在选择迁移现有数据时 将显示以下选项 对于此选项 请执行该操作 Target table preparation mode 不执行任何操作 不更改目标表的数据和元数据 Drop tables on target 删除表并在其位置创建新表 截断 截断表 而不会影响表元数据 在复制时包括 LOB 列 不包括 LOB 列 将从迁移中排除 LOB 列 完整 LOB 模式 迁移整个 LOB 而不管大小如何 在受 LOB 块大小控制的组块中分段迁移 LOB 此方法比受限 LOB 模式速度慢 受限 LOB 模式 将 LOB 截断到最大 LOB 大小 这种方法 比使用完整 LOB 模式快 最大 LOB 大小 (kb) 在受限 LOB 模式下 超出最大 LOB 大小设置的 LOB 列将 被截断到指定的最大 LOB 大小 启用日志记录 由 Amazon CloudWatch 启用日志记录 如果为迁移类型选择迁移现有数据并复制 将显示以下选项 24

31 步骤 4 创建任务 对于此选项 请执行该操作 Target table preparation mode 不执行任何操作 不更改目标表的数据和元数据 Drop tables on target 删除表并在其位置创建新表 截断 截断表 而不会影响表元数据 在完全加载完成后停止任务 不停止 不停止任务 立即应用缓存的更改 然后继续 在应用缓存的更改前停止 在应用缓存的更改之前停止任 务 使用该选项时 可以添加辅助索引 从而加速更改的应 用 在应用缓存的更改之后停止 在应用缓存的更改后停止任 务 使用该选项时 可以在进行 事务应用 时添加外键 触 发器等 在复制时包括 LOB 列 不包括 LOB 列 将从迁移中排除 LOB 列 完整 LOB 模式 迁移整个 LOB 而不管大小如何 在受 LOB 块大小控制的组块中分段迁移 LOB 此方法比受限 LOB 模式速度慢 受限 LOB 模式 将 LOB 截断到最大 LOB 大小 这种方法 比使用完整 LOB 模式快 最大 LOB 大小 (kb) 在受限 LOB 模式下 超出最大 LOB 大小设置的 LOB 列将 被截断到指定的最大 LOB 大小 启用日志记录 由 Amazon CloudWatch 启用日志记录 25

32 监控您的任务 3. 选择表映射选项卡 (如下所示) 以设置架构映射和映射方法值 如果选择自定义 您可以指定目标架构和 表值 有关表映射的更多信息 请参阅使用表映射指定任务设置 (p. 194) 4. 在完成任务设置后 请选择创建任务 监控您的任务 如果在创建任务时选择在创建时启动任务 在选择创建任务时 将立即启动您的任务以迁移数据 您可以通 过从 AWS 管理控制台选择正在运行的任务来查看任务的统计数据和监控信息 以下屏幕截图显示数据库迁 移的表统计数据 有关监控的更多信息 请参阅监控 AWS DMS 任务 (p. 209) 26

33 所需的 IAM 权限 AWS Database Migration Service 的 安全性 AWS Database Migration Service (AWS DMS) 使用多个流程在迁移过程中保护您的数据 该服务使用对您 的 AWS 账户唯一的 AWS Key Management Service (AWS KMS) 密钥 加密您的复制实例使用的存储以及 终端节点连接信息 支持安全套接字层 (SSL) 如果您以 AWS Identity and Access Management (IAM) 用户 的身份登录 AWS Database Migration Service 还要求您拥有适当的权限 VPC 基于 Amazon Virtual Private Cloud (Amazon VPC) 服务 您将其用于您的复制实例时必须与安全组关 联 该安全组应具有规则 允许所有端口上的所有流量离开 (传出) VPC 使用此方法 只要这些终端节点上 启用了正确的传入 就允许从复制实例与您的源和目标数据库终端节点通信 如果您要查看数据库迁移日志 则所使用的 IAM 角色需要适当的 Amazon CloudWatch Logs 权限 主题 使用 AWS DMS 所需的 IAM 权限 (p. 27) 创建 IAM 角色以用于 AWS CLI 和 AWS DMS API (p. 30) 使用资源名称和标签进行精细访问控制 (p. 34) 设置加密密钥和指定 KMS 权限 (p. 40) AWS Database Migration Service 的网络安全 (p. 41) 将 SSL 用于 AWS Database Migration Service (p. 41) 更改数据库密码 (p. 49) 使用 AWS DMS 所需的 IAM 权限 您需要使用特定 IAM 权限和 IAM 角色来使用 AWS DMS 如果您以 IAM 用户的身份登录并希望使用 AWS DMS 您的账户管理员必须将本部分讨论的策略附加到 IAM 用户 组或您运行 AWS DMS 使用的角色 有 关 IAM 权限的更多信息 请参阅 IAM 用户指南 下面的一组权限为您提供了对 AWS DMS 的访问权限 以及其他 Amazon 服务 (如 AWS KMS IAM Amazon Elastic Compute Cloud (Amazon EC2) 和 Amazon CloudWatch) 的特定操作所 需的权限 CloudWatch 实时监控您的 AWS DMS 迁移并收集和跟踪指示迁移进度的指标 您可以使用 CloudWatch 日志来调试任务中的问题 Note 您可以使用标记进一步限制对 AWS DMS 资源的访问 有关使用标记限制对 AWS DMS 资源的访问 的更多信息 请参阅使用资源名称和标签进行精细访问控制 (p. 34) "Version": " ", "Statement": [ "Effect": "Allow", "Action": "dms:*", "Resource": "*", 27

34 所需的 IAM 权限,,,,, ] "Effect": "Allow", "Action": [ "kms:listaliases", "kms:describekey" ], "Resource": "*" "Effect": "Allow", "Action": [ "iam:getrole", "iam:passrole", "iam:createrole", "iam:attachrolepolicy" ], "Resource": "*" "Effect": "Allow", "Action": [ "ec2:describevpcs", "ec2:describeinternetgateways", "ec2:describeavailabilityzones", "ec2:describesubnets", "ec2:describesecuritygroups", "ec2:modifynetworkinterfaceattribute", "ec2:createnetworkinterface", "ec2:deletenetworkinterface" ], "Resource": "*" "Effect": "Allow", "Action": [ "cloudwatch:get*", "cloudwatch:list*" ], "Resource": "*" "Effect": "Allow", "Action": [ "logs:describeloggroups", "logs:describelogstreams", "logs:filterlogevents", "logs:getlogevents" ], "Resource": "*" "Effect": "Allow", "Action": [ "redshift:describe*", "redshift:modifyclusteriamroles" ], "Resource": "*" 细分这些权限可以帮助您更好地了解需要每个权限的原因 需要使用该部分以允许用户调用 AWS DMS API 操作 28

35 所需的 IAM 权限 "Effect": "Allow", "Action": "dms:*", "Resource": "*" 需要使用该部分以允许用户列出可用的 KMS 密钥和别名 以便在控制台中显示 如果 KMS 密钥 ARN 已知 以及在仅使用 CLI 时 不需要使用该条目 "Effect": "Allow", "Action": [ "kms:listaliases", "kms:describekey" ], "Resource": "*" 对于需要在终端节点中传入角色 ARN 的某些终端节点类型 需要使用该部分 此外 如果没有提前创建所 需的 AWS DMS 角色 则 AWS DMS 控制台可以创建该角色 如果提前配置了所有角色 这是 iam:getrole 和 iam:passrole 中所需的所有角色 有关 角色的更多信息 请参阅创建 IAM 角色以用于 AWS CLI 和 AWS DMS API (p. 30) "Effect": "Allow", "Action": [ "iam:getrole", "iam:passrole", "iam:createrole", "iam:attachrolepolicy" ], "Resource": "*" 需要使用该部分 因为 AWS DMS 需要创建 EC2 实例并为创建的复制实例配置网络 这些资源位于客户的 账户中 因此 需要能够代表客户执行这些操作 "Effect": "Allow", "Action": [ "ec2:describevpcs", "ec2:describeinternetgateways", "ec2:describeavailabilityzones", "ec2:describesubnets", "ec2:describesecuritygroups", "ec2:modifynetworkinterfaceattribute", "ec2:createnetworkinterface", "ec2:deletenetworkinterface" ], "Resource": "*" 需要使用该部分 以允许用户查看复制实例指标 "Effect": "Allow", "Action": [ "cloudwatch:get*", "cloudwatch:list*" 29

36 适用于 CLI 和 API 的 IAM 角色 ], "Resource": "*" 需要使用该部分 以允许用户查看复制日志 "Effect": "Allow", "Action": [ "logs:describeloggroups", "logs:describelogstreams", "logs:filterlogevents", "logs:getlogevents" ], "Resource": "*" 在将 Redshift 作为目标时 需要使用该部分 它允许 AWS DMS 验证是否为 AWS DMS 正确设置 Redshift 群集 "Effect": "Allow", "Action": [ "redshift:describe*", "redshift:modifyclusteriamroles" ], "Resource": "*" AWS DMS 控制台创建了多个角色 在您使用 AWS DMS 控制台时可自动附加到您的 AWS 账户 如果您 将 AWS Command Line Interface (AWS CLI) 或 AWS DMS API 用于迁移 则需要将这些角色添加到您的账 户 有关添加这些角色的更多信息 请参阅 创建 IAM 角色以用于 AWS CLI 和 AWS DMS API (p. 30) 创建 IAM 角色以用于 AWS CLI 和 AWS DMS API 如果您使用 AWS CLI 或 AWS DMS API 用于数据库迁移 则首先必须添加三个 IAM 角色到您的 AWS 账户 然后才能使用 AWS DMS 的功能 其中两个角色为 dms-vpc-role 和 dms-cloudwatchlogs-role 如果您使用 Amazon Redshift 作为目标数据库 还必须添加 IAM 角色 dms-access-forendpoint 到您的 AWS 账户 对托管策略的更新是自动的 如果您为 IAM 角色使用自定义策略 请确保定期在此文档中检查对托管策略的 更新 您可以使用 get-policy 和 get-policy-version 命令的组合查看托管策略的详细信息 例如 以下 get-policy 命令检索角色上的信息 aws iam get-policy --policy-arn arn:aws:iam::aws:policy/service-role/ AmazonDMSVPCManagementRole 命令返回的信息如下所示 "Policy": 30

37 适用于 CLI 和 API 的 IAM 角色 "PolicyName": "AmazonDMSVPCManagementRole", "Description": "Provides access to manage VPC settings for AWS managed customer configurations", "CreateDate": " T16:33:19Z", "AttachmentCount": 1, "IsAttachable": true, "PolicyId": "ANPAJHKIGMBQI4AEFFSYO", "DefaultVersionId": "v3", "Path": "/service-role/", "Arn": "arn:aws:iam::aws:policy/service-role/amazondmsvpcmanagementrole", "UpdateDate": " T16:29:57Z" 以下 get-policy-version 命令检索策略信息 aws iam get-policy-version --policy-arn arn:aws:iam::aws:policy/service-role/ AmazonDMSVPCManagementRole --version-id v3 命令返回的信息如下所示 "PolicyVersion": "CreateDate": " T16:29:57Z", "VersionId": "v3", "Document": "Version": " ", "Statement": [ "Action": [ "ec2:createnetworkinterface", "ec2:describeavailabilityzones", "ec2:describeinternetgateways", "ec2:describesecuritygroups", "ec2:describesubnets", "ec2:describevpcs", "ec2:deletenetworkinterface", "ec2:modifynetworkinterfaceattribute" ], "Resource": "*", "Effect": "Allow" ], "IsDefaultVersion": true 在 AmazonDMSCloudWatchLogsRole 和 AmazonDMSRedshiftS3Role 托管策略上可使用相同的命令来 获取信息 Note 如果您使用 AWS DMS 控制台进行数据库迁移 这些角色将自动添加到您的 AWS 账户 以下过程创建 dms-vpc-role dms-cloudwatch-logs-role 和 dms-access-for-endpoint IAM 角 色 31

38 适用于 CLI 和 API 的 IAM 角色 创建用于 AWS CLI 或 AWS DMS API 的 dms-vpc-role IAM 角色 1. 使用以下 IAM 策略创建 JSON 文件 将 JSON 文件命名为 dmsassumerolepolicydocument.json ] "Version": " ", "Statement": [ "Effect": "Allow", "Principal": "Service": "dms.amazonaws.com", "Action": "sts:assumerole" 使用 AWS CLI 通过以下命令创建角色 aws iam create-role --role-name dms-vpc-role --assume-role-policy-document file:// dmsassumerolepolicydocument.json 2. 使用以下命令将 AmazonDMSVPCManagementRole 策略附加到 dms-vpc-role aws iam attach-role-policy --role-name dms-vpc-role --policy-arn arn:aws:iam::aws:policy/service-role/amazondmsvpcmanagementrole 创建用于 AWS CLI 或 AWS DMS API 的 dms-cloudwatch-logs-role IAM 角色 1. 使用以下 IAM 策略创建 JSON 文件 将 JSON 文件命名为 dmsassumerolepolicydocument2.json ] "Version": " ", "Statement": [ "Effect": "Allow", "Principal": "Service": "dms.amazonaws.com", "Action": "sts:assumerole" 使用 AWS CLI 通过以下命令创建角色 aws iam create-role --role-name dms-cloudwatch-logs-role --assume-role-policy-document file://dmsassumerolepolicydocument2.json 32

39 适用于 CLI 和 API 的 IAM 角色 2. 使用以下命令将 AmazonDMSCloudWatchLogsRole 策略附加到 dms-cloudwatch-logs-role aws iam attach-role-policy --role-name dms-cloudwatch-logs-role --policy-arn arn:aws:iam::aws:policy/service-role/amazondmscloudwatchlogsrole 如果您使用 Amazon Redshift 作为目标数据库 则必须创建 IAM 角色 dms-access-for-endpoint 以提 供对 Amazon S3 (S3) 的访问权限 创建 dms-access-for-endpoint IAM 角色以用于将 Amazon Redshift 作为目标数据库 1. 使用以下 IAM 策略创建 JSON 文件 将 JSON 文件命名为 dmsassumerolepolicydocument3.json "Version": " ", "Statement": [ "Sid": "1", "Effect": "Allow", "Principal": "Service": "dms.amazonaws.com", "Action": "sts:assumerole", "Sid": "2", "Effect": "Allow", "Principal": "Service": "redshift.amazonaws.com", "Action": "sts:assumerole" ] 2. 使用 AWS CLI 通过以下命令创建角色 aws iam create-role --role-name dms-access-for-endpoint --assume-role-policy-document file://dmsassumerolepolicydocument3.json 3. 使用以下命令将 AmazonDMSRedshiftS3Role 策略附加到 dms-access-for-endpoint 角色 aws iam attach-role-policy --role-name dms-access-for-endpoint \ --policy-arn arn:aws:iam::aws:policy/service-role/amazondmsredshifts3role 现在 您应该准备好了 IAM 策略来使用 AWS CLI 或 AWS DMS API 33

40 精细访问控制 使用资源名称和标签进行精细访问控制 您可以使用基于 ARN 的资源名称和资源标签管理对 AWS DMS 资源的访问 为此 请在 IAM 策略中定义允 许的操作或包括条件语句 使用资源名称控制访问 您可以创建一个 IAM 用户账户 并根据 AWS DMS 资源的 Amazon 资源名称 (ARN) 分配策略 以下策略拒绝访问具有 ARN arn:aws:dms:us-east-1: :rep:doh67ztoxglixmihkitv 的 AWS DMS 复制实例 "Version": " ", "Statement": [ "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "arn:aws:dms:us-east-1: :rep:doh67ztoxglixmihkitv" ] 例如 在该策略生效时 以下命令将失败 $ aws dms delete-replication-instance --replication-instance-arn "arn:aws:dms:us-east-1: :rep:doh67ztoxglixmihkitv" A client error (AccessDeniedException) occurred when calling the DeleteReplicationInstance operation: User: arn:aws:iam:: :user/dmstestusr is not authorized to perform: dms:deletereplicationinstance on resource: arn:aws:dms:useast-1: :rep:doh67ztoxglixmihkitv $ aws dms modify-replication-instance --replication-instance-arn "arn:aws:dms:us-east-1: :rep:doh67ztoxglixmihkitv" A client error (AccessDeniedException) occurred when calling the ModifyReplicationInstance operation: User: arn:aws:iam:: :user/dmstestusr is not authorized to perform: dms:modifyreplicationinstance on resource: arn:aws:dms:useast-1: :rep:doh67ztoxglixmihkitv 您还可以指定限制访问 AWS DMS 终端节点和复制任务的 IAM 策略 以下策略使用终端节点的 ARN 限制对 AWS DMS 终端节点的访问 "Version": " ", "Statement": [ "Action": [ "dms:*" ], "Effect": "Deny", 34

41 使用标签控制访问 ] "Resource": "arn:aws:dms:us-east-1: :endpoint:d6e37ybxtnhoa6xrqszcugx" 例如 在使用终端节点的 ARN 的策略生效时 以下命令将失败 $ aws dms delete-endpoint --endpoint-arn "arn:aws:dms:us-east-1: :endpoint:d6e37ybxtnhoa6xrqszcugx" A client error (AccessDeniedException) occurred when calling the DeleteEndpoint operation: User: arn:aws:iam:: :user/dmstestusr is not authorized to perform: dms:deleteendpoint on resource: arn:aws:dms:us-east-1: :endpoint:d6e37ybxtnhoa6xrqszcugx $ aws dms modify-endpoint --endpoint-arn "arn:aws:dms:us-east-1: :endpoint:d6e37ybxtnhoa6xrqszcugx" A client error (AccessDeniedException) occurred when calling the ModifyEndpoint operation: User: arn:aws:iam:: :user/dmstestusr is not authorized to perform: dms:modifyendpoint on resource: arn:aws:dms:us-east-1: :endpoint:d6e37ybxtnhoa6xrqszcugx 以下策略使用任务的 ARN 限制对 AWS DMS 任务的访问 "Version": " ", "Statement": [ "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "arn:aws:dms:us-east-1: :task:uo3yr4n47dxh3att4ymwoit" ] 例如 在使用任务的 ARN 的策略生效时 以下命令将失败 $ aws dms delete-replication-task --replication-task-arn "arn:aws:dms:us-east-1: :task:uo3yr4n47dxh3att4ymwoit" A client error (AccessDeniedException) occurred when calling the DeleteReplicationTask operation: User: arn:aws:iam:: :user/dmstestusr is not authorized to perform: dms:deletereplicationtask on resource: arn:aws:dms:us-east-1: :task:uo3yr4n47dxh3att4ymwoit 使用标签控制访问 AWS DMS 定义了一组可用于客户定义的策略的常见键值对 而没有任何额外的标记要求 有关标记 AWS DMS 资源的更多信息 请参阅标记 AWS Database Migration Service 中的资源 (p. 222) 35

42 使用标签控制访问 下面列出了可用于 AWS DMS 的标准标签 aws:currenttime 表示请求日期和时间 从而允许根据时间条件限制访问 aws:epochtime 该标签类似于上面的 aws:currenttime 标签 所不同的是 当前时间表示为自 Unix 纪 元时间以来经过的秒数 aws:multifactorauthpresent 这是一个布尔值标签 它指示是否通过多重身份验证对请求进行签名 aws:multifactorauthage 提供对多重身份验证令牌期限 (秒) 的访问 aws:principaltype 提供对当前请求的委托人类型 (用户 账户 联合用户等) 的访问 aws:sourceip 表示发出请求的用户的源 IP 地址 aws:useragent 提供有关请求资源的客户端应用程序的信息 aws:userid 提供对发出请求的用户的 ID 的访问 aws:username 提供对发出请求的用户的名称的访问 dms:instanceclass 提供对复制实例主机的计算大小的访问 dms:storagesize 提供对存储卷大小 (GB) 的访问 您还可以定义自己的标签 客户定义的标签是永久保存在 AWS Tagging Service 中的简单键值对 并且可以 将其添加到 AWS DMS 资源中 包括复制实例 终端节点和任务 这些标签是通过策略中的 IAM 条件 语句 匹配的 并使用特定的条件标签引用这些标签 标签键前面带有 dms 资源类型和 tag 前缀 下面显示了 标签格式 dms:resource type-tag/tag key=tag value 例如 假设您要定义一个策略 以仅允许包含 stage=production 标签的复制实例成功完成 API 调用 以下条 件语句会匹配具有给定标签的资源 "Condition": "streq": "dms:rep-tag/stage":"production" 您可以将以下标签添加到与该策略条件匹配的复制实例中 stage production 除了已分配给 AWS DMS 资源的标签以外 还可以编写策略以限制可应用于给定资源的标签键和值 在这种 情况下 标签前缀为 req 例如 以下策略语句将用户可为给定资源分配的标签限制为特定的允许值列表 "Condition": "streq": "dms:req-tag/stage": [ "production", "development", "testing" ] 以下策略示例根据资源标签限制对 AWS DMS 资源的访问 以下策略限制对标签值为 Desktop 且标签键为 Env 的复制实例的访问 36

43 使用标签控制访问 "Version": " ", "Statement": [ "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "*", "Condition": "StringEquals": "dms:rep-tag/env": [ "Desktop" ] ] 根据在标签值为 Desktop 且标签键为 Env 时限制访问的 IAM 策略 以下命令成功或失败 $ aws dms list-tags-for-resource --resource-name arn:aws:dms:us-east-1: :rep:46dhou7jojyojxwdoznfen --endpoint-url "TagList": [ "Value": "Desktop", "Key": "Env" ] $ aws dms delete-replication-instance --replication-instance-arn "arn:aws:dms:us-east-1: :rep:46dhou7jojyojxwdoznfen" A client error (AccessDeniedException) occurred when calling the DeleteReplicationInstance operation: User: arn:aws:iam:: :user/dmstestusr is not authorized to perform: dms:deletereplicationinstance on resource: arn:aws:dms:useast-1: :rep:46dhou7jojyojxwdoznfen $ aws dms modify-replication-instance --replication-instance-arn "arn:aws:dms:us-east-1: :rep:46dhou7jojyojxwdoznfen" A client error (AccessDeniedException) occurred when calling the ModifyReplicationInstance operation: User: arn:aws:iam:: :user/dmstestusr is not authorized to perform: dms:modifyreplicationinstance on resource: arn:aws:dms:useast-1: :rep:46dhou7jojyojxwdoznfen $ aws dms add-tags-to-resource --resource-name arn:aws:dms:us-east-1: :rep:46dhou7jojyojxwdoznfen --tags Key=CostCenter,Value=1234 A client error (AccessDeniedException) occurred when calling the AddTagsToResource operation: User: arn:aws:iam:: :user/dmstestusr is not authorized to perform: dms:addtagstoresource on resource: arn:aws:dms:useast-1: :rep:46dhou7jojyojxwdoznfen $ aws dms remove-tags-from-resource --resource-name arn:aws:dms:us-east-1: :rep:46dhou7jojyojxwdoznfen --tag-keys Env 37

44 使用标签控制访问 A client error (AccessDeniedException) occurred when calling the RemoveTagsFromResource operation: User: arn:aws:iam:: :user/dmstestusr is not authorized to perform: dms:removetagsfromresource on resource: arn:aws:dms:useast-1: :rep:46dhou7jojyojxwdoznfen 以下策略限制对标签值为 Desktop 且标签键为 Env 的 AWS DMS 终端节点的访问 "Version": " ", "Statement": [ "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "*", "Condition": "StringEquals": "dms:endpoint-tag/env": [ "Desktop" ] ] 根据在标签值为 Desktop 且标签键为 Env 时限制访问的 IAM 策略 以下命令成功或失败 $ aws dms list-tags-for-resource --resource-name arn:aws:dms:us-east-1: :endpoint:j2yczpngolfy52344izwa6i "TagList": [ "Value": "Desktop", "Key": "Env" ] $ aws dms delete-endpoint --endpoint-arn "arn:aws:dms:us-east-1: :endpoint:j2yczpngolfy52344izwa6i" A client error (AccessDeniedException) occurred when calling the DeleteEndpoint operation: User: arn:aws:iam:: :user/dmstestusr is not authorized to perform: dms:deleteendpoint on resource: arn:aws:dms:useast-1: :endpoint:j2yczpngolfy52344izwa6i $ aws dms modify-endpoint --endpoint-arn "arn:aws:dms:us-east-1: :endpoint:j2yczpngolfy52344izwa6i" A client error (AccessDeniedException) occurred when calling the ModifyEndpoint operation: User: arn:aws:iam:: :user/dmstestusr is not authorized to perform: dms:modifyendpoint on resource: arn:aws:dms:useast-1: :endpoint:j2yczpngolfy52344izwa6i $ aws dms add-tags-to-resource --resource-name arn:aws:dms:us-east-1: :endpoint:j2yczpngolfy52344izwa6i 38

45 使用标签控制访问 --tags Key=CostCenter,Value=1234 A client error (AccessDeniedException) occurred when calling the AddTagsToResource operation: User: arn:aws:iam:: :user/dmstestusr is not authorized to perform: dms:addtagstoresource on resource: arn:aws:dms:useast-1: :endpoint:j2yczpngolfy52344izwa6i $ aws dms remove-tags-from-resource --resource-name arn:aws:dms:us-east-1: :endpoint:j2yczpngolfy52344izwa6i --tag-keys Env A client error (AccessDeniedException) occurred when calling the RemoveTagsFromResource operation: User: arn:aws:iam:: :user/dmstestusr is not authorized to perform: dms:removetagsfromresource on resource: arn:aws:dms:useast-1: :endpoint:j2yczpngolfy52344izwa6i 以下策略限制对标签值为 Desktop 且标签键为 Env 的复制任务的访问 "Version": " ", "Statement": [ "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "*", "Condition": "StringEquals": "dms:task-tag/env": [ "Desktop" ] ] 根据在标签值为 Desktop 且标签键为 Env 时限制访问的 IAM 策略 以下命令成功或失败 $ aws dms list-tags-for-resource --resource-name arn:aws:dms:us-east-1: :task:rb7n24j2xbups3rfabztg3 "TagList": [ "Value": "Desktop", "Key": "Env" ] $ aws dms delete-replication-task --replication-task-arn "arn:aws:dms:us-east-1: :task:rb7n24j2xbups3rfabztg3" A client error (AccessDeniedException) occurred when calling the DeleteReplicationTask operation: User: arn:aws:iam:: :user/dmstestusr is not authorized to perform: dms:deletereplicationtask on resource: arn:aws:dms:useast-1: :task:rb7n24j2xbups3rfabztg3 $ aws dms add-tags-to-resource 39

46 设置加密密钥 --resource-name arn:aws:dms:us-east-1: :task:rb7n24j2xbups3rfabztg3 --tags Key=CostCenter,Value=1234 A client error (AccessDeniedException) occurred when calling the AddTagsToResource operation: User: arn:aws:iam:: :user/dmstestusr is not authorized to perform: dms:addtagstoresource on resource: arn:aws:dms:useast-1: :task:rb7n24j2xbups3rfabztg3 $ aws dms remove-tags-from-resource --resource-name arn:aws:dms:us-east-1: :task:rb7n24j2xbups3rfabztg3 --tag-keys Env A client error (AccessDeniedException) occurred when calling the RemoveTagsFromResource operation: User: arn:aws:iam:: :user/dmstestusr is not authorized to perform: dms:removetagsfromresource on resource: arn:aws:dms:useast-1: :task:rb7n24j2xbups3rfabztg3 设置加密密钥和指定 KMS 权限 AWS DMS 加密复制实例使用的存储以及终端节点连接信息 为加密复制实例使用的存储 AWS DMS 使 用对您的 AWS 账户唯一的 AWS Key Management Service (KMS) 密钥 您可以使用 KMS 查看和管理此 密钥 您可以使用您账户 (aws/dms) 中的默认 KMS 密钥 也可以创建自定义 KMS 密钥 如果您有现有的 KMS 密钥 也可以使用该密钥加密 在首次启动复制实例时 如果未从创建复制实例页的高级部分中选择自定义 KMS 主密钥 将创建默认 KMS 密钥 (aws/dms) 如果您使用默认的 KMS 密钥 您只需要将 kms:listaliases 和 kms:describekey 权限授予用于迁移的 IAM 用户账户 有关使用默认 KMS 密钥的更多信息 请参阅 使用 AWS DMS 所需的 IAM 权限 (p. 27) 要使用自定义 KMS 密钥 请使用以下选项之一为自定义 KMS 密钥分配权限 为迁移添加 IAM 用户账户 作为 KMS 自定义密钥的密钥管理员/密钥用户 这可确保将所需的 KMS 权限 授予 IAM 用户账户 请注意 在必须授予 IAM 用户账户以使用 AWS DMS 的 IAM 权限以外 您还需要执 行此操作 有关向密钥用户授予权限的更多信息 请参阅允许密钥用户使用 CMK 如果您不希望添加 IAM 用户账户作为自定义 KMS 密钥的密钥管理员/密钥用户 则在必须授予 IAM 用户 账户以使用 AWS DMS 的 IAM 权限以外 还要授予以下附加权限, "Effect": "Allow", "Action": [ "kms:listaliases", "kms:describekey", "kms:creategrant", "kms:encrypt", "kms:reencrypt*" ], "Resource": "*" AWS DMS 不适用于 KMS 密钥别名 但在指定 KMS 密钥信息时 您可以使用 KMS 密钥的 Amazon 资源编 号 (ARN) 有关创建您自己的 KMS 密钥以及授予用户对 KMS 密钥访问权限的更多信息 请参阅 KMS 开发 人员指南 如果您未指定 KMS 密钥标识符 则 AWS DMS 使用您的默认加密密钥 KMS 为您的 AWS 账户创建 AWS DMS 的默认加密密钥 您的 AWS 账户在每个 AWS 区域都有一个不同的默认加密密钥 40

47 网络安全性 要管理用于加密 AWS DMS 资源的 KMS 密钥 请使用 KMS 您可以在 AWS 管理控制台主页上选择 Identity & Access Management 然后在导航窗格中选择加密密钥以在控制台中查找 KMS KMS 将安全 高度可用的硬件和软件结合起来 提供可为云扩展的密钥管理系统 通过使用 KMS 您可创建加密密钥 并定义控制这些密钥的使用方式的策略 KMS; 支持 AWS CloudTrail 因此 您可审核密钥使用情况以验 证密钥是否使用得当 您的 KMS 密钥可以与 AWS DMS 以及支持的 AWS 服务一起使用 例如 Amazon RDS Amazon Simple Storage Service (Amazon S3) Amazon Redshift 和 Amazon Elastic Block Store (Amazon EBS) 在您创建了 AWS DMS 资源以及 KMS 密钥之后 您无法更改这些资源的加密密钥 请确保先定义您的加密 密钥要求 然后再创建 AWS DMS 资源 AWS Database Migration Service 的网络安全 您在使用 AWS Database Migration Service 时为网络创建的安全要求取决于您配置网络的方式 AWS DMS 网络安全的一般规则如下 复制实例必须具有对源和目标终端节点的访问权限 复制实例的安全组必须具有网络 ACL 或规则来允许从 实例数据库端口上传出到数据库终端节点 数据库终端节点必须包括网络 ACL 和安全组规则 允许来自复制实例的传入访问 根据配置 您可以使用 复制实例的安全组 私有 IP 地址 公有 IP 地址或 NAT 网关的公有地址来实现这一点 如果您的网络使用 VPN 隧道 则作为 NAT 网关的 EC2 实例使用的安全组必须具有规则 允许复制实例 通过它发送流量 默认情况下 AWS DMS 复制实例使用的 VPC 安全组具有允许传出到所有端口上的 /0 的规则 如果 您修改此安全组或者使用自己的安全组 则必须至少允许传出到相应数据库端口上的源和目标终端节点 您可用于数据库迁移的网络配置均要求有特定安全注意事项 一个 VPC 中具有所有数据库迁移组件的配置 (p. 58) 终端节点使用的安全组必须允许从复制实例向数 据库端口上的传入 确保由复制实例使用的安全组已传入到终端节点 或者您可以在由终端节点使用的安 全组中创建规则 允许访问复制实例的私有 IP 地址 两个 VPC 的配置 (p. 59) 复制实例使用的安全组规则必须具有针对数据库上的 VPC 范围和数据库端口 的规则 使用 AWS Direct Connect 或 VPN 连接到 VPC 的网络的配置 (p. 59) VPN 隧道 允许流量从 VPC 通 过隧道流向本地 VPN 在此配置中 VPC 包含路由规则 会将以特定 IP 地址或范围为目标的流量发送到 主机 该主机可以桥接从 VPC 到本地 VPN 的流量 如果是这种情况 NAT 主机包括自己的安全组设置 必须允许从复制实例私有 IP 地址或安全组到 NAT 实例的流量 使用 Internet 连接 VPC 的网络配置 (p. 60) VPC 安全组必须包括路由规则 将并非以 VPC 为目标的 流量发送到 Internet 网关 在此配置中 与终端节点的连接显示为来自复制实例上的公有 IP 地址 使用 ClassicLink 将不在 VPC 中的 Amazon RDS 数据库实例迁移到 VPC 中数据库实例的配置 (p. 60) 当源或目标 Amazon RDS 数据库实例不在 VPC 中 并且不与复制实例所在的 VPC 共享安全组时 您可 以设置代理服务器并使用 ClassicLink 连接源数据库和目标数据库 源终端节点位于复制实例所使用的 VPC 的外部并使用 NAT 网关 您可以使用绑定到单个弹性网络接口 (将接收 NAT 标识符 (nat-#####)) 的单个弹性 IP 地址来配置网络地址转换 (NAT) 网关 如果 VPC 包含到 NAT 网关而不是 Internet 网关的默认路由 复制实例将改为显示使用 Internet 网关的公有 IP 地址连接数 据库终端节点 在这种情况下 对 VPC 外部的数据库终端节点的传入需要允许从 NAT 地址的传入 而不 是复制实例的公有 IP 地址 将 SSL 用于 AWS Database Migration Service 您可以使用安全套接字层 (SSL) 为源和目标终端节点的连接加密 要执行此操作 您可以使用 AWS DMS 管 理控制台或 AWS DMS API 将证书分配到终端节点 您也可以使用 AWS DMS 控制台来管理证书 41

48 将 SSL 用于 AWS Database Migration Service 的限制 并非所有数据库都以相同的方式使用 SSL Amazon Aurora 与 MySQL 的兼容性 将服务器名称 (群集中的主 实例的终端节点) 作为 SSL 的终端节点 Amazon Redshift 终端节点已使用 SSL 连接 并且不需要由 AWS DMS 设置 SSL 连接 Oracle 终端节点需要其他步骤 有关更多信息 请参阅 Oracle 终端节点的 SSL 支 持 (p. 45) 主题 将 SSL 用于 AWS Database Migration Service 的限制 (p. 42) 管理证书 (p. 43) 为 MySQL 兼容 PostgreSQL 或 SQL Server 终端节点启用 SSL (p. 43) Oracle 终端节点的 SSL 支持 (p. 45) 要将证书分配到某个终端节点 您需要提供对部署到终端节点的服务器 SSL 证书进行签名时使用的根证书或 者直至根的中间 CA 证书链 (作为证书捆绑包) 只接受 PEM 格式的 X509 文件的证书 在导入证书时 您收 到可用于为终端节点指定证书的 Amazon 资源名称 (ARN) 如果您使用 Amazon RDS 则可以下载 Amazon RDS 在 提供的根 CA 和证书捆 绑包 您可从多个 SSL 模式中选择用于 SSL 证书验证的模式 none 不加密连接 该选项不安全 但需要的开销较少 require 使用 SSL (TLS) 加密连接 但不进行任何 CA 验证 该选项更为安全 但需要的开销较多 verify-ca 加密连接 该选项更为安全 但需要的开销较多 该选项将验证服务器证书 verify-full 加密连接 该选项更为安全 但需要的开销较多 该选项验证服务器证书并验证服务器主机名 与证书的主机名属性匹配 并非所有 SSL 模式均适用于所有数据库终端节点 下表显示了各个数据库引擎支持哪些 SSL 模式 数据库引擎 无 require verify-ca verify-full MySQL/MariaDB/ Amazon Aurora MySQL 默认值 不支持 支持 支持 Microsoft SQL Server 默认值 支持 不支持 支持 PostgreSQL 默认值 支持 支持 支持 Amazon Redshift 默认值 SSL 未启用 SSL 未启用 SSL 未启用 Oracle 默认值 不支持 支持 不支持 SAP ASE 默认值 SSL 未启用 SSL 未启用 支持 MongoDB 默认值 支持 不支持 支持 Db2 LUW 默认值 不支持 支持 不支持 将 SSL 用于 AWS Database Migration Service 的限制 不支持与 Amazon Redshift 目标终端节点的 SSL 连接 AWS DMS 使用 S3 存储桶来将数据传输到 Redshift 数据库 此传输默认情况下由 Amazon Redshift 加密 使用启用了 SSL 的 Oracle 终端节点执行 CDC 任务时 可能会出现 SQL 超时 如果您遇到 此问题 其中 CDC 计数器未体现预期的数字 请在任务设置的 ChangeProcessingTuning 42

49 管理证书 部分将 MinimumTransactionSize 参数设置为较低的值 可以从最低值 100 开始 有关 MinimumTransactionSize 参数的更多信息 请参阅更改处理优化设置 (p. 185) 证书只能以.PEM 和.SSO (Oracle wallet) 格式导入 如果您的服务器 SSL 证书使用中间 CA 签名 请确保将从中间 CA 直到根 CA 的整个证书链作为单 个.PEM 文件导入 如果在服务器上使用自签名证书 请选择 require 以作为 SSL 模式 require SSL 模式隐式信任服务器的 SSL 证书 而不会尝试验证证书是否由 CA 签名 管理证书 您可以使用 DMS 控制台来查看和管理 SSL 证书 您也可以使用 DMS 控制台导入证书 为 MySQL 兼容 PostgreSQL 或 SQL Server 终端节 点启用 SSL 您可以添加指向新创建终端节点或现有终端节点的 SSL 连接 使用 SSL 创建 AWS DMS 终端节点 1. 登录到 AWS 管理控制台 然后选择 AWS Database Migration Service Note 如果您以 AWS Identity and Access Management (IAM) 用户身份登录 则必须具有 AWS DMS 的相应访问权限 有关数据库迁移所需权限的更多信息 请参阅 使用 AWS DMS 所需的 IAM 权限 (p. 27) 在导航窗格中 选择证书 选择导入证书 4. 将要用于加密连接的证书上传到终端节点 Note 在创建或修改终端节点时 您也可以在 AWS DMS 控制台的创建数据库终端节点页上选择添加 新的 CA 证书以上传证书 43

50 为 MySQL 兼容 PostgreSQL 或 SQL Server 终端节点启用 SSL 5. 如步骤 3 指定源和目标终端节点 (p. 19)中所述创建终端节点 要修改现有 AWS DMS 终端节点以使用 SSL 1. 登录到 AWS 管理控制台 然后选择 AWS Database Migration Service Note 如果您以 AWS Identity and Access Management (IAM) 用户身份登录 则必须具有 AWS DMS 的相应访问权限 有关数据库迁移所需权限的更多信息 请参阅 使用 AWS DMS 所需的 IAM 权限 (p. 27) 2. 在导航窗格中 选择证书 3. 选择导入证书 4. 将要用于加密连接的证书上传到终端节点 Note 在创建或修改终端节点时 您也可以在 AWS DMS 控制台的创建数据库终端节点页上选择添加 新的 CA 证书以上传证书 5. 在导航窗格中选择终端节点 选择要修改的终端节点 然后选择修改 6. 选择 SSL 模式 如果选择 verify-ca 或 verify-full 模式 您必须指定要使用的 CA 证书 如下所示 7. 选择 Modify 8. 在修改终端节点后 选择终端节点 然后选择测试连接以确定 SSL 连接是否正常工作 44

51 Oracle 终端节点的 SSL 支持 创建源和目标终端节点之后 创建使用这些终端节点的任务 有关创建任务的更多信息 请参阅步骤 4 创 建任务 (p. 22) Oracle 终端节点的 SSL 支持 AWS DMS 中的 Oracle 终端节点支持 none 和 verify-ca SSL 模式 要将 SSL 用于 Oracle 终端节点 您 必须上传终端节点的 Oracle wallet 而不是.pem 证书文件 主题 为 Oracle SSL 使用现有证书 (p. 45) 使用适用于 Oracle SSL 的自签名证书 (p. 46) 为 Oracle SSL 使用现有证书 要使用现有的 Oracle 客户端安装 从 CA 证书文件创建 Oracle wallet 文件 请执行以下步骤 在 AWS DMS 中为 Oracle SSL 使用现有 Oracle 客户端安装 1. 通过运行以下命令 将 ORACLE_HOME 系统变量设置为您的 dbhome_1 目录的位置 prompt>export ORACLE_HOME=/home/user/app/user/product/12.1.0/dbhome_1 2. 将 $ORACLE_HOME/lib 附加到 LD_LIBRARY_PATH 系统变量中 prompt>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib 3. 为 $ORACLE_HOME/ssl_wallet 处的 Oracle wallet 创建一个目录 prompt>mkdir $ORACLE_HOME/ssl_wallet 4. 将 CA 证书的.pem 文件放入 ssl_wallet 目录中 Amazon RDS 客户可以从 s3.amazonaws.com.cn/rds-downloads/rds-ca-2015-root.pem 下载 RDS CA 证书文件 5. 运行下列命令以创建 Oracle wallet prompt>orapki wallet create -wallet $ORACLE_HOME/ssl_wallet -auto_login_only prompt>orapki wallet add -wallet $ORACLE_HOME/ssl_wallet -trusted_cert cert $ORACLE_HOME/ssl_wallet/ca-cert.pem -auto_login_only 完成前面的步骤之后 您以通过指定 certificate-wallet 参数 使用 ImportCertificate API 来导入 wallet 文件 然后 在创建或修改 Oracle 终端节点时 如果选择 verify-ca 作为 SSL 模式 您可以使用导入的 wallet 证书 Note Oracle wallet 是二进制文件 AWS DMS 按原样接受这些文件 45

52 Oracle 终端节点的 SSL 支持 使用适用于 Oracle SSL 的自签名证书 要使用适用于 Oracle SSL 的自签名证书 请执行以下操作 在 AWS DMS 中使用适用于 Oracle SSL 的自签名证书 1. 创建一个您将用于处理自签名证书的目录 mkdir <SELF_SIGNED_CERT_DIRECTORY> 2. 转到您在上一步创建的目录中 cd <SELF_SIGNED_CERT_DIRECTORY> 3. 创建根密钥 openssl genrsa -out self-rootca.key 使用在上一步中创建的根密钥对根证书进行自签名 openssl req -x509 -new -nodes -key self-rootca.key -sha256 -days out self-rootca.pem 5. 为 Oracle 数据库创建 Oracle wallet 目录 mkdir $ORACLE_HOME/self_signed_ssl_wallet 6. 创建新的 Oracle wallet orapki wallet create -wallet $ORACLE_HOME/self_signed_ssl_wallet -pwd <password> -auto_login_local 7. 将根证书添加到 Oracle wallet orapki wallet add -wallet $ORACLE_HOME/self_signed_ssl_wallet -trusted_cert -cert self-rootca.pem -pwd <password> 8. 列出 Oracle wallet 的内容 该列表应包含根证书 orapki wallet display -wallet $ORACLE_HOME/self_signed_ssl_wallet 9. 使用 ORAPKI 实用程序生成证书签名请求 (CSR) orapki wallet add -wallet $ORACLE_HOME/self_signed_ssl_wallet -dn "CN=dms" -keysize sign_alg sha256 -pwd <password> 10. 运行以下命令 openssl pkcs12 -in ewallet.p12 -nodes -out nonoracle_wallet.pem 11. 将 dms 用作公用名 openssl req -new -key nonoracle_wallet.pem -out certrequest.csr 12. 获取证书签名 46

53 Oracle 终端节点的 SSL 支持 openssl req -noout -text -in self-signed-oracle.csr grep -i signature 13. 如果步骤 12 的输出为 sha256withrsaencryption 则运行以下代码 openssl x509 -req -in self-signed-oracle.csr -CA self-rootca.pem -CAkey self-rootca.key -CAcreateserial -out self-signed-oracle.crt -days 365 -sha 如果步骤 12 的输出为 md5withrsaencryption 则运行以下代码 openssl x509 -req -in certrequest.csr -CA self-rootca.pem -CAkey self-rootca.key -CAcreateserial -out certrequest.crt -days 365 -sha 将证书添加到 wallet orapki wallet add -wallet $ORACLE_HOME/self_signed_ssl_wallet -user_cert -cert certrequest.crt -pwd <password> 16. 配置 sqlnet.ora 文件 ($ORACLE_HOME/network/admin/sqlnet.ora) WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = <ORACLE_HOME>/self_signed_ssl_wallet) ) ) SQLNET.AUTHENTICATION_SERVICES = (NONE) SSL_VERSION = 1.0 SSL_CLIENT_AUTHENTICATION = FALSE SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA) 17. 停止 Oracle 侦听器 lsnrctl stop 18. 在 listener.ora 文件 ($ORACLE_HOME/network/admin/listener.ora) 中添加 SSL 的条目 SSL_CLIENT_AUTHENTICATION = FALSE WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = <ORACLE_HOME>/self_signed_ssl_wallet) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = <SID>) (ORACLE_HOME = <ORACLE_HOME>) (SID_NAME = <SID>) ) ) LISTENER = (DESCRIPTION_LIST = 47

54 Oracle 终端节点的 SSL 支持 ) (DESCRIPTION (ADDRESS = (ADDRESS = (ADDRESS = ) = (PROTOCOL = TCP)(HOST = localhost.localdomain)(port = 1521)) (PROTOCOL = TCPS)(HOST = localhost.localdomain)(port = 1522)) (PROTOCOL = IPC)(KEY = EXTPROC1521)) 19. 配置 tnsnames.ora 文件 ($ORACLE_HOME/network/admin/tnsnames.ora) <SID>= (DESCRIPTION= (ADDRESS_LIST = (ADDRESS=(PROTOCOL = TCP)(HOST = localhost.localdomain)(port = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <SID>) ) ) <SID>_ssl= (DESCRIPTION= (ADDRESS_LIST = (ADDRESS=(PROTOCOL = TCPS)(HOST = localhost.localdomain)(port = 1522)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <SID>) ) ) 20. 重新启动 Oracle 侦听器 lsnrctl start 21. 显示 Oracle 侦听器状态 lsnrctl status 22. 使用 sqlplus 和 SSL tnsnames 条目测试从本地主机到数据库的 SSL 连接 sqlplus -L <ORACLE_USER>@<SID>_ssl 23. 验证您已使用 SSL 成功连接 SELECT SYS_CONTEXT('USERENV', 'network_protocol') FROM DUAL; SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') tcps 24. 将目录更改为具有自签名证书的目录 cd <SELF_SIGNED_CERT_DIRECTORY> 25. 创建 AWS DMS 将使用的新客户端 Oracle wallet orapki wallet create -wallet./ -auto_login_only 26. 将自签名根证书添加到 Oracle wallet 48

55 更改数据库密码 orapki wallet add -wallet./ -trusted_cert -cert rootca.pem -auto_login_only 27. 列出 AWS DMS 将使用的 Oracle wallet 的内容 该列表应包含自签名根证书 orapki wallet display -wallet./ 28. 将您刚刚创建的 Oracle wallet 上传到 AWS DMS 更改数据库密码 在大多数情况下 更改源或目标终端节点的数据库密码非常直接 如果您需要更改当前在迁移或复制任务中 使用的终端节点的数据库密码 过程会略微复杂 以下过程演示了如何完成此操作 更改迁移或复制任务中的终端节点的数据库密码 1. 登录到 AWS 管理控制台 然后选择 AWS DMS 请注意 如果您以 AWS Identity and Access Management (IAM) 用户身份登录 则必须具有 AWS DMS 的相应访问权限 有关所需权限的更多信 息 请参阅使用 AWS DMS 所需的 IAM 权限 (p. 27) 2. 在导航窗格中 选择任务 3. 选择使用要更改数据库密码的终端节点的任务 然后选择停止 任务停止时 您可以使用数据库中的本机工具来更改终端节点的数据库密码 返回到 DMS 管理控制台 然后从导航窗格中选择终端节点 选择已更改密码的数据库的终端节点 然后选择修改 在密码框中键入新密码 然后选择修改 从导航窗格中选择任务 9. 选择以前停止的任务 然后选择启动/恢复 10. 根据您希望如何继续执行该任务 选择启动或恢复 然后选择启动任务 49

56 AWS Database Migration Service 的限制 AWS Database Migration Service 的 限制 接下来 您可以查找 AWS Database Migration Service (AWS DMS) 的资源限制和命名约束 AWS DMS 可迁移的数据库的最大大小取决于您的源环境 源数据库中数据的分布以及源系统的繁忙程度 确定您的特定系统是否适合作为 AWS DMS 候选的最佳方式就是进行测试 一开始不要着急 这样您可以让 配置正常工作 然后添加一些复杂的对象 最后尝试执行完全加载来进行测试 AWS Database Migration Service 的限制 每个区域中每个 AWS 账户都有关于可创建的 AWS DMS 资源数量的限制 达到某一资源的限制时 再进行 创建该资源的调用就会失败并引发异常 6 TB 的存储限制适用于 DMS 复制实例 此存储用于在目标无法与源保持同步时缓存更改 并存储日志信 息 此限制不适用于目标大小 目标终端节点可以大于 6 TB 下表列出了 AWS DMS 资源及其每个区域的限制 资源 默认限制 复制实例 20 总存储量 6 TB 事件订阅 20 复制子网组 20 每个复制子网组的子网 20 终端节点 100 任务 200 每个实例的终端节点 20 50

57 使用 AWS DMS 复制实例 当您创建 AWS DMS 复制实例时 AWS DMS 会根据 Amazon Virtual Private Cloud (Amazon VPC) 服务在 VPC 中的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上创建复制实例 您可以使用此复制实例执 行数据库迁移 在选择多可用区选项时 复制实例使用多可用区部署提供高可用性和故障转移支持 在多可用区部署中 AWS DMS 自动在不同可用区中预置和维护复制实例的同步备用副本 主复制实例可以 跨可用区同步复制到备用副本 此方法提供数据冗余 消除 I/O 冻结 并将延迟峰值降至最小 AWS DMS 使用复制实例连接到您的源数据存储 读取源数据并设置数据格式以供目标数据存储使用 复制 实例还会将数据加载到目标数据存储中 大部分这种处理发生在内存中 但是 大型事务可能需要部分缓冲 到磁盘上 缓存事务和日志文件也会写入磁盘 您可以在以下 AWS 区域中创建 AWS DMS 复制实例 区域 名称 亚太区域 东京 ap-northeast-1 亚太区域 首尔 ap-northeast-2 亚太地区 (孟买) 区域 ap-south-1 亚太区域 新加坡 ap-southeast-1 亚太区域 悉尼 ap-southeast-2 加拿大 (中部) 区域 ca-central-1 欧洲 法兰克福 区域 eu-central-1 欧洲 爱尔兰 区域 eu-west-1 欧洲 (伦敦) 区域 eu-west-2 南美洲 圣保罗 区域 sa-east-1 美国东部 弗吉尼亚北部 地区 us-east-1 美国东部 俄亥俄 区域 us-east-2 美国西部 加利福利亚北部 区域 us-west-1 美国西部 俄勒冈 区域 us-west-2 51

58 深入了解复制实例 AWS DMS 支持一个名为 AWS GovCloud (美国) 的特殊 AWS 区域 该区域旨在使美国政府机构和客户可 以将较为敏感的工作负载移至云中 AWS GovCloud (美国) 满足美国政府的特定法规和合规性要求 有关 AWS GovCloud (美国) 的更多信息 请参阅什么是 AWS GovCloud (美国) 接下来 您可以了解有关复制实例的更多详细信息 主题 为您的实例选择合适的 AWS DMS 复制实例 (p. 52) 公有和私有复制实例 (p. 53) AWS DMS 维护 (p. 54) 使用复制引擎版本 (p. 56) 为复制实例设置网络 (p. 58) 为复制实例设置加密密钥 (p. 64) 创建复制实例 (p. 64) 修改复制实例 (p. 68) 重启复制实例 (p. 69) 删除复制实例 (p. 71) AWS DMS 支持的 DDL 语句 (p. 72) 为您的实例选择合适的 AWS DMS 复制实例 AWS DMS 可在 Amazon Elastic Compute Cloud (Amazon EC2) 实例上创建复制实例 AWS DMS 目前支持 将 T2 C4 和 R4 Amazon EC2 实例类用作复制实例 T2 实例类是一种低成本的标准实例 旨在提供基线水平的 CPU 性能 并可在短时间内突增至基线水平以 上 它们适用于开发 配置和测试数据库迁移过程 而且也非常适合可从 CPU 突增功能中获益的定期数 据迁移任务 C4 实例类旨在为计算机密集型工作负载交付最高级别的处理器性能 它们显著提高了每秒数据包数 (PPS) 性能 降低了网络抖动 并减少了网络延迟 AWS DMS 可能会占用大量 CPU 尤其是在执行异构迁移和 复制时 例如从 Oracle 迁移至 PostgreSQL 针对这些情况 C4 实例是理想选择 R4 实例类针对内存密集型工作负载优化了内存 使用 DMS 持续迁移或复制高吞吐量事务系统有时会占用 大量 CPU 和内存 R4 实例的每个 vcpu 包含更多内存 每个复制实例都有特定的内存和 vcpu 配置 下表显示了各复制实例类型的配置 有关定价信息 请参阅 AWS Database Migration Service 定价页面 复制实例类型 vcpu 内存 (GB) dms.t2.micro 1 1 dms.t2.small 1 2 dms.t2.medium 2 4 dms.t2.large 通用 计算优化 dms.c4.large 52

59 公有和私有复制实例 复制实例类型 vcpu 内存 (GB) dms.c4.xlarge dms.c4.2xlarge 8 15 dms.c4.4xlarge dms.r4.large dms.r4.xlarge dms.r4.2xlarge 8 61 dms.r4.4xlarge dms.r4.8xlarge 内存优化 为了帮助您确定哪种复制实例类最适合您的迁移 我们来看看 AWS DMS 复制实例所使用的更改数据捕获 (CDC) 流程 假设您运行的是完全加载加 CDC 任务 (批量加载加持续复制) 在这种情况下 任务有自己的 SQLite 存储库 来存储元数据和其他信息 在 AWS DMS 开始完全加载之前 将执行以下步骤 AWS DMS 开始为其从源引擎的事务日志中迁移的表捕获更改 (我们将其称为缓存的更改) 完全加载完成 后 将收集这些缓存的更改并将其应用于目标中 根据缓存更改的量 可以直接从内存中应用这些更改 最初在内存中收集更改 并一直收集到设定的阈值 或者 也可以从内存中无法保存更改时将更改写入到 的磁盘中应用更改 默认情况下 在应用缓存的更改后 AWS DMS 会在目标实例上启动事务性应用 在应用缓存的更改阶段和持续复制阶段 AWS DMS 使用两个流缓冲区 入站数据和出站数据各一个 AWS DMS 还使用一个称为排序器的重要组件 它是另一个内存缓冲区 下面是排序器组件的两个重要用法 (还有 其他用法) 它跟踪所有事务并确保只将相关事务转发至传出缓冲区 它确保按照与源中相同的提交顺序转发事务 如您所见 此架构中有三个重要的内存缓冲区用于 AWS DMS 中的 CDC 如果任何缓冲区遇到内存压力 迁移可能会出现导致故障的性能问题 在将每秒事务数 (TPS) 很高的重型工作负载插入此架构时 您会发现 R4 实例提供的额外内存很有用 您可 以使用 R4 实例在内存中保存大量事务 并可避免在持续复制期间出现内存压力问题 公有和私有复制实例 您可以指定复制实例在连接到源和目标数据库时使用公有还是私有 IP 地址 私有复制实例具有无法从复制网络之外访问的私有 IP 地址 当源数据库和目标数据库位于相同的网络中并 使用 VPN AWS Direct Connect 或 VPC 对等连接来连接到复制实例的 VPC 时 复制实例应具有私有 IP 地 址 VPC 对等连接是两个 VPC 之间的连接 使用各 VPC 的私有 IP 地址进行路由 就像它们位于同一个网络中 一样 有关 VPC 对等的更多信息 请参阅 Amazon VPC 用户指南中的 VPC 对等 53

60 AWS DMS 维护 AWS DMS 维护 AWS DMS 会定期对 AWS DMS 资源执行维护 维护通常涉及更新复制实例或复制实例的操作系统 (OS) 您可以使用 AWS CLI 或 AWS DMS API 管理维护窗口的时段和查看维护更新 AWS DMS 控制台当前不支 持此工作 维护项目需要 AWS DMS 使复制实例脱机一小段时间 需要将资源脱机的维护包括必需的操作系统或实例修 补 仅对与安全性和实例可靠性相关的修补程序自动安排必需的修补 这种修补很少发生 (通常每年一到两 次) 并且几乎不会需要过长的维护时段 您可以选择自动次要版本升级控制台选项以自动应用次要版本更 新 AWS DMS 维护时段 每个 AWS DMS 复制实例具有一个每周维护时段 将在此期间应用任何可用的系统更改 您可以通过维护时 段控制何时进行修改和软件修补 如果 AWS DMS 确定需要在某一周进行维护 将在创建复制实例时选择的 30 分钟维护时段内进行维 护 AWS DMS 可在 30 分钟的维护时段内完成大多数维护 但是 对于较大的更改可能需要更长时间 在创建复制实例时选择的 30 分钟维护时段来自为每个 AWS 区域分配的 8 小时时间段 如果在创建复制实例 时未指定首选的维护时段 AWS DMS 会在每周随机选择的日期指定一个时段 对于使用多可用区部署的复 制实例 可能需要进行故障转移以完成维护 下表列出了支持 AWS DMS 的各 AWS 区域的维护时段 区域 时间数据块 亚太区域 悉尼 12:00 20:00 UTC 亚太区域 东京 13:00 21:00 UTC 亚太地区 孟买 区域 17:30 01:30 UTC 亚太区域 首尔 13:00 21:00 UTC 亚太区域 新加坡 14:00 22:00 UTC 加拿大 (中部) 区域 06:29 14:29 UTC 欧洲 法兰克福 区域 23:00 07:00 UTC 欧洲 爱尔兰 区域 22:00 06:00 UTC 欧洲 (伦敦) 区域 06:00 14:00 UTC 南美洲 圣保罗 区域 00:00 08:00 UTC 美国东部 弗吉尼亚北部 地 区 03:00 11:00 UTC 美国东部 俄亥俄 区域 03:00 11:00 UTC 美国西部 加利福利亚北部 区域 06:00 14:00 UTC 美国西部 俄勒冈 区域 06:00 14:00 UTC AWS GovCloud 美国 06:00 14:00 UTC 54

61 AWS DMS 维护时段 维护对现有迁移任务的影响 如果正在实例上运行 AWS DMS 迁移任务 在应用修补程序时 将发生以下事件 如果迁移任务中的表处于复制持续更改阶段 (CDC) 则 AWS DMS 在应用修补程序时将该任务暂停一段时 间 在应用修补程序后 将从中断的位置继续进行迁移 如果在应用修补程序时 AWS DMS 正在迁移一个表 AWS DMS 将重新开始迁移该表 使用维护时段设置 您可以使用 AWS 管理控制台 AWS CLI 或 AWS DMS API 更改维护时段时间范围 使用 AWS 控制台更改维护时段设置 您可以使用 AWS 管理控制台 更改维护时段时间范围 使用 AWS 控制台更改首选的维护时段 1. 登录 AWS 管理控制台 然后选择 AWS DMS 在导航窗格中 选择复制实例 选择要修改的复制实例 然后选择修改 4. 展开维护部分 然后为您的维护时段选择一个日期和时间 选择立即应用更改 选择 Modify 使用 CLI 更改维护时段设置 要调整首选维护时段 请使用带下列参数的 AWS CLI modify-replication-instance 命令 --replication-instance-identifier --preferred-maintenance-window Example 以下 AWS CLI 示例将维护时段设置为周二的凌晨 4:00 4:30 (UTC) aws dms modify-replication-instance \ --replication-instance-identifier myrepinstance \ --preferred-maintenance-window Tue:04:00-Tue:04:30 55

62 复制引擎版本 使用 API 更改维护时段设置 要调整首选维护时段 请使用带下列参数的 AWS DMS API ModifyReplicationInstance 操作 ReplicationInstanceIdentifier = myrepinstance PreferredMaintenanceWindow = Tue:04:00-Tue:04:30 Example 以下代码示例将维护时段设置为周二的凌晨 4:00 4:30 (UTC) &DBInstanceIdentifier=myrepinstance &PreferredMaintenanceWindow=Tue:04:00-Tue:04:30 &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version= &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/ /us-east-1/dms/aws4_request &X-Amz-Date= T192732Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=1dc9dd716f4855e9bdf188c70f1cf9f6251b070b68b81103b59ec70c3e7854b3 使用复制引擎版本 复制引擎 是核心 AWS DMS 软件 它在复制实例上运行并执行指定的迁移任务 AWS 定期发布 AWS DMS 复制引擎软件的新版本以提供新功能和增强性能 每个版本的复制引擎软件具有自己的版本号以区别于其他 版本 除非另行指定 否则在启动新的复制实例时 它将运行最新的 AWS DMS 引擎版本 有关更多信息 请参阅 使用 AWS DMS 复制实例 (p. 51) 如果当前正在运行一个复制实例 您可以将其升级到较新的引擎版本 (AWS DMS 不支持引擎版本降级 ) 有关更多信息 (包括复制引擎版本列表) 请参阅以下章节 弃用复制实例版本 有时 AWS DMS 会弃用较旧版本的复制实例 从 2018 年 4 月 2 日开始 AWS DMS 将禁止创建新复制实 例版本 AWS DMS 于 2016 年 3 月 15 日开始支持此版本 此后由包含对功能性 安全性和可靠性的 改进的后续版本所替代 从 2018 年 8 月 5 日 0:00 (UTC) 开始 运行版本 的所有 DMS 复制实例都将在为每个实例指定的维护 时段自动安排升级到最新可用版本 我们建议您在此之前于方便之时升级您的实例 您可以使用以下部分中的说明操作启动复制实例的升级 升级复制实例的引擎版本 (p. 56) 对于在您选择升级复制实例时运行的迁移任务 升级时完全加载阶段中的表将在升级完成后立即从一开始进 行重新加载 所有其他表的复制应在升级完成后立即继续而不会中断 我们建议在从版本 升级实例前 先测试最新可用版本的 AWS DMS 复制实例上的所有当前迁移任务 升级复制实例的引擎版本 AWS 定期发布 AWS DMS 复制引擎软件的新版本以提供新功能和增强性能 以下是可用的 AWS DMS 引擎 版本的摘要 56

63 升级复制实例的引擎版本 版本 摘要 2.4.x 支持复制 Oracle 索引表空间 支持标准访问 ACL 以支持在 S3 终端节点中进行跨账户访问 2.3.x 支持将 S3 作为 AWS DMS 源 仅支持为作为 AWS DMS 源的 Oracle 复制表空间 仅支持将 Oracle 活动 Data Guard 备用实例作为 Oracle (作为 AWS DMS 源) 源 2.2.x 支持将 Microsoft SQL Server 2016 作为 AWS DMS 源或 AWS DMS 目标 支持将 SAP ASE 16 作为 AWS DMS 源或 AWS DMS 目标 仅支持将 Microsoft Azure 上运行的 Microsoft SQL Server 作为 AWS DMS 源 您可以为现有数据执行完全迁移 但更改数据捕获 (CDC) 不可用 1.9.x AWS DMS 复制引擎软件的累积版本 使用控制台升级引擎版本 您可使用 AWS 管理控制台升级 AWS DMS 复制实例 使用控制台升级复制实例 1. 打开 AWS DMS 控制台 ( 2. 在导航窗格中 选择复制实例 3. 选择您的复制引擎 然后选择修改 4. 对于复制引擎版本 选择所需的版本号 然后选择修改 Note 复制实例升级需要几分钟的时间 在实例准备就绪后 其状态将变为可用 使用 CLI 升级引擎版本 您可使用 AWS CLI 升级 AWS DMS 复制实例 如下所示 使用 AWS CLI 升级复制实例 1. 使用以下命令确定您的复制实例的 Amazon 资源名称 (ARN) aws dms describe-replication-instances \ --query "ReplicationInstances[*]. [ReplicationInstanceIdentifier,ReplicationInstanceArn,ReplicationInstanceClass]" 在输出中 记下要升级的复制实例的ARN 例如 arn:aws:dms:useast-1: :rep:6efqqo6u6edprcpklnpl2sceey 2. 使用以下命令确定可用的复制实例版本 aws dms describe-orderable-replication-instances \ --query "OrderableReplicationInstances[*].[ReplicationInstanceClass,EngineVersion]" 在输出中 记下您的复制实例类的可用引擎版本号 您应该会在步骤 1 的输出中看到此信息 57

64 为复制实例设置网络 3. 使用以下命令升级复制实例 aws dms modify-replication-instance \ --replication-instance-arn arn \ --engine-version n.n.n 将前面的 arn 替换为上一步中的实际复制实例 ARN 将 n.n.n 替换为所需的引擎版本号 例如 Note 复制实例升级需要几分钟的时间 您可以使用以下命令查看复制实例状态 aws dms describe-replication-instances \ --query "ReplicationInstances[*]. [ReplicationInstanceIdentifier,ReplicationInstanceStatus]" 在复制实例准备就绪后 其状态将变为可用 为复制实例设置网络 AWS DMS 始终在基于 Amazon Virtual Private Cloud (Amazon VPC) 的 VPC 中创建复制实例 您可以指定 复制实例所在的 VPC 可以使用您账户和 AWS 区域的默认 VPC 也可以创建新的 VPC VPC 必须至少有 两个子网在一个可用区中 在您的 VPC 中为复制实例分配的弹性网络接口 (ENI) 必须与安全组关联 该安全组应具有规则 允许所有端 口上的所有流量离开 (传出) VPC 使用此方法 只要终端节点上启用了正确的传出规则 就允许从复制实例 与您的源和目标数据库终端节点通信 我们建议您为终端节点使用默认设置 这允许在所有端口上传出到所 有地址 源和目标终端节点连接到 VPC 或者位于 VPC 内部 以此来访问位于 VPC 内部的复制实例 数据库终端节 点必须包含网络访问控制列表 (ACL) 安全组规则 (在适用时) 允许来自复制实例的传入访问 根据您正在使 用的网络配置 您可以使用复制实例 VPC 安全组 复制实例的私有或公有 IP 地址或者 NAT 网关的公有 IP 地址 这些连接构成了您用于数据迁移的网络 数据库迁移的网络配置 您可以为 AWS Database Migration Service 使用多种不同的网络配置 以下是用于数据库迁移的常见网络配 置 主题 一个 VPC 中具有所有数据库迁移组件的配置 (p. 58) 两个 VPC 的配置 (p. 59) 使用 AWS Direct Connect 或 VPN 连接到 VPC 的网络的配置 (p. 59) 使用 Internet 连接 VPC 的网络配置 (p. 60) 使用 ClassicLink 将不在 VPC 中的 Amazon RDS 数据库实例迁移到 VPC 中数据库实例的配 置 (p. 60) 一个 VPC 中具有所有数据库迁移组件的配置 对于数据库迁移而言 最简单的网络是源终端节点 复制实例和目标终端节点都位于同一个 VPC 中 当您的 源和目标终端节点均位于 Amazon RDS 数据库实例或 Amazon EC2 实例上时 此配置非常合适 58

65 数据库迁移的网络配置 下图显示了位于 Amazon EC2 实例上的数据库连接到复制实例并且数据被迁移到 Amazon RDS 数据库实例 的配置 此配置中使用的 VPC 安全组必须允许从复制实例向数据库端口的传入 您可以通过确保复制实例使用的安全 组已传入到终端节点 或者通过明确允许复制实例的私有 IP 地址来实现这一点 两个 VPC 的配置 如果您的源终端节点和目标终端节点位于不同 VPC 则可以在一个 VPC 中创建复制实例 然后使用 VPC 对 等链接两个 VPC VPC 对等连接是两个 VPC 之间的连接 使用各 VPC 的私有 IP 地址进行路由 就像它们位于同一个网络中 一样 我们建议使用此方法来连接位于一个 AWS 区域中的 VPC 您可以在您自己的 VPC 之间创建 VPC 对 等连接 也可以在您自己的 VPC 与同一 AWS 区域内其他 AWS 账户中的 VPC 之间进行创建 有关 VPC 对 等的更多信息 请参阅 Amazon VPC 用户指南中的 VPC 对等 下图显示了一个使用 VPC 对等连接的示例配置 在此处 VPC 中的 Amazon EC2 实例上的源数据库通过 VPC 对等连接来连接到 VPC 此 VPC 包含 Amazon RDS 数据库实例上的复制实例和目标数据库 此配置中使用的 VPC 安全组必须允许从复制实例向数据库端口的传入 使用 AWS Direct Connect 或 VPN 连接到 VPC 的网络的配置 远程网络可以使用多种选项连接到 VPC 例如 AWS Direct Connect 或者软件或硬件 VPN 连接 这些选项 通常将内部网络扩展到 AWS 云来集成现有现场服务 例如监控 身份验证 安全 数据或其他系统 使用 此类型的网络扩展 您可以无缝连接到 AWS 托管的资源 例如 VPC 下图显示了源终端节点是公司数据中心内本地数据库的配置 它使用 AWS Direct Connect 或 VPN 连接到 Amazon RDS 数据库实例上包含复制实例和目标数据库的 VPC 在此配置中 VPC 安全组必须包含一个路由规则 即将发往特定 IP 地址或范围的流量发送到主机 此主机 必须能够将流量从 VPC 桥接到本地 VPN 中 在这种情况下 NAT 主机包括自己的安全组设置 必须允许从 复制实例私有 IP 地址或安全组到 NAT 实例的流量 59

66 数据库迁移的网络配置 使用 Internet 连接 VPC 的网络配置 如果您不使用 VPN 或 AWS Direct Connect 连接到 AWS 资源 则可以使用 Internet 将数据库迁移到 Amazon EC2 实例或 Amazon RDS 数据库实例 此配置涉及到带有 Internet 网关的 VPC 中的公有复制实 例 该 VPC 中包含目标终端节点和复制实例 要将 Internet 网关添加到 VPC 请参阅 Amazon VPC 用户指南中的连接 Internet 网关 VPC 安全组必须包括路由规则 将默认并非以 VPC 为目标的流量发送到 Internet 网关 在此配置中 与终 端节点的连接将显示为来自复制实例的公有 IP 地址 而非私有 IP 地址 使用 ClassicLink 将不在 VPC 中的 Amazon RDS 数据库实例迁移 到 VPC 中数据库实例的配置 您可以将 ClassicLink 与代理服务器结合使用 以便将不在 VPC 中的 Amazon RDS 数据库实例连接到 AWS DMS 复制服务器和 VPC 中的数据库实例 ClassicLink 允许将您的 EC2-Classic 数据库实例链接到您账户中位于同一区域内的 AWS 区域 在您创建了 链接之后 源数据库实例可以与 VPC 中的复制实例通过其私有 IP 地址进行通信 由于 VPC 中的复制实例无法使用 ClassicLink 直接访问 EC2-Classic 平台上的源数据库实例 您必须使用 代理服务器 代理服务器将源数据库实例连接到包含复制实例和目标数据库实例的 VPC 代理服务器使用 ClassicLink 连接到 VPC 代理服务器上的端口转发允许源数据库实例与 VPC 中的目标数据库实例之间的通 信 将 ClassicLink 用于 AWS Database Migration Service 您可以将 ClassicLink 与代理服务器结合使用 以便将不在 VPC 中的 Amazon RDS 数据库实例连接到 AWS DMS 复制服务器和 VPC 中的数据库实例 以下过程说明如何使用 ClassicLink 来将未位于 VPC 中的 Amazon RDS 源数据库实例连接到包含 AWS DMS 复制实例和目标数据库实例的 VPC 在 VPC 中创建 AWS DMS 复制实例 (在 VPC 中创建所有复制实例) 将 VPC 安全组与复制实例和目标数据库实例关联 当两个实例共享一个 VPC 安全组时 默认情况下 它 们可以相互通信 在 EC2 Classic 实例上设置代理服务器 使用 ClassicLink 在代理服务器和 VPC 之间创建连接 为源数据库和目标数据库创建 AWS DMS 终端节点 创建 AWS DMS 任务 60

67 数据库迁移的网络配置 使用 ClassicLink 将未位于 VPC 中的数据库实例上的数据库迁移到 VPC 中的数据库实例上的数据 库 1. 步骤 1 创建 AWS DMS 复制实例 创建 AWS DMS 复制实例并分配 VPC 安全组: 2. a. 登录到 AWS 管理控制台 然后选择 AWS Database Migration Service 请注意 如果您以 AWS Identity and Access Management (IAM) 用户身份登录 则必须具有 AWS DMS 的适当访问权限 有关数据库迁移所需权限的更多信息 请参阅 使用 AWS DMS 所需的 IAM 权限 (p. 27) b. 在控制面板页中 选择复制实例 按照步骤 2 创建复制实例 (p. 15)中的说明操作来创建复制实 例 c. 在创建 AWS DMS 复制实例后 打开 EC2 访问控制台 从导航窗格中选择网络接口 d. 选择 DMSNetworkInterface 然后从操作菜单中选择更改安全组 e. 选择要用于复制实例和目标数据库实例的安全组 步骤 2 将最后一步中的安全组与目标数据库实例关联 将安全组与数据库实例关联 3. a. 打开 Amazon RDS 服务控制台 从导航窗格中选择实例 b. 选择目标数据库实例 从实例操作中 选择修改 c. 对于安全组参数 请选择在上一步中使用的安全组 d. 选择继续 然后选择修改数据库实例 步骤 3 使用 NGINX 在 EC2 Classic 实例上设置代理服务器 使用您选择的 AMI 启动 EC2 Classic 实 例 下面的示例基于 AMI Ubuntu Server LTS (HVM) 在 EC2 Classic 实例上设置代理服务器 a. 使用以下命令连接到 EC2 Classic 实例并安装 NGINX Prompt> Prompt> Prompt> Prompt> Prompt> Prompt> Prompt> Prompt> Prompt> Prompt> b. sudo apt-get update sudo wget sudo tar -xvzf nginx tar.gz cd nginx sudo apt-get install build-essential sudo apt-get install libpcre3 libpcre3-dev sudo apt-get install zlib1g-dev sudo./configure --with-stream sudo make sudo make install 使用以下代码编辑 NGINX 守护程序文件 /etc/init/nginx.conf # /etc/init/nginx.conf Upstart file description "nginx http daemon" author " " start on (filesystem and net-device-up IFACE=lo) stop on runlevel [!2345] env DAEMON=/usr/local/nginx/sbin/nginx env PID=/usr/local/nginx/logs/nginx.pid expect fork respawn 61

68 创建复制子组 respawn limit 10 5 pre-start script $DAEMON -t if [ $? -ne 0 ] then exit $? fi end script exec $DAEMON c. 在 /usr/local/nginx/conf/nginx.conf 处创建 NGINX 配置文件 在配置文件中 添加以下内容 # /usr/local/nginx/conf/nginx.conf - NGINX configuration file worker_processes 1; events worker_connections 1024; stream server listen <DB instance port number>; proxy_pass <DB instance identifier>:<db instance port number>; d. 从命令行中 使用以下命令启动 NGINX Prompt> sudo initctl reload-configuration Prompt> sudo initctl list grep nginx Prompt> sudo initctl start nginx 4. 步骤 4 创建代理服务器和目标 VPC (包含目标数据库实例和复制实例) 之间的 ClassicLink 连接 使用 ClassicLink 将代理服务器与目标 VPC 连接 a. 打开 EC2 控制台并选择正在运行代理服务器的 EC2 Classic 实例 b. 在操作下面选择 ClassicLink 然后选择链接到 VPC c. 选择本过程中前面使用的安全组 d. 选择链接到 VPC 5. 步骤 5 使用步骤 3 指定源和目标终端节点 (p. 19)上的过程创建 AWS DMS 终端节点 在指定源终端 节点时 您必须将代理的内部 EC2 DNS 主机名作为服务器名称 6. 步骤 6 使用步骤 4 创建任务 (p. 22)上的过程创建 AWS DMS 任务 创建复制子组 作为数据库迁移所用网络的一部分 您需要指定计划在 Amazon Virtual Private Cloud (Amazon VPC) 中使用 的子网 子网 是在指定可用区中您的 VPC 内的 IP 地址范围 这些子网可以分布在您的 VPC 所在 AWS 区 域的可用区中 您在选择的子网中创建复制实例 可以使用 AWS DMS 控制台来管理源或目标终端节点使用什么子网 62

69 创建复制子组 您创建复制子网组来定义要使用的子网 您必须至少有一个位于两个不同可用区的子网 创建复制子网组 1. 登录 AWS 管理控制台 然后选择 AWS Database Migration Service 如果您以 AWS Identity and Access Management (IAM) 用户身份登录 则必须具有 AWS DMS 的相应访问权限 有关数据库迁移 所需权限的更多信息 请参阅 使用 AWS DMS 所需的 IAM 权限 (p. 27) 2. 在导航窗格中 选择 Subnet Groups 3. 选择 Create Subnet Group 4. 在编辑复制子网组页中 (如下所示) 指定您的复制子网组信息 下表描述了设置 对于此选项 请执行该操作 标识符 为复制子网组指定包含 8 到 16 个可打印 ASCII 字符 (不 含 / " 的名称 该名称对于所选 AWS 区域中您的 账户应该是唯一的 您可以选择对该名称进行一些巧妙处 理 例如将 AWS 区域和您要执行的任务包含在名称中 如 DMS-default-VPC 描述 键入复制子网组的简短说明 VPC 选择您要用于数据库迁移的 VPC 请记住 VPC 必须至少 有一个位于两个可用区中的子网 可用子网 选择您要包括在复制子网组中的子网 您必须选择至少位于 两个可用区中的子网 5. 选择添加以将子网添加到复制子网组中 6. 选择 Create 63

70 设置加密密钥 为复制实例设置加密密钥 AWS DMS 加密复制实例使用的存储以及终端节点连接信息 为了加密复制实例使用的存储 AWS DMS 使 用对您 AWS 账户唯一的主密钥 您可以使用 AWS Key Management Service (AWS KMS) 查看和管理此主 密钥 您可以在账户中使用默认主密钥 (aws/dms) 或者您创建的自定义主密钥 如果您有一个现有的 AWS KMS 加密密钥 您也可以使用该密钥加密 您可以通过提供 KMS 密钥标识符来加密自己的 AWS DMS 资源 从而指定自己的加密密钥 在您指定自己 的加密密钥时 执行数据库迁移所用的用户账户必须具有对该密钥的访问权限 有关创建您自己的加密密钥 以及向用户提供对加密密钥的访问权限的更多信息 请参阅 AWS KMS 开发人员指南 如果您未指定 KMS 密钥标识符 则 AWS DMS 使用您的默认加密密钥 KMS 为您的 AWS 账户创建 AWS DMS 的默认加密密钥 您的 AWS 账户在每个 AWS 区域都有一个不同的默认加密密钥 要管理用于加密 AWS DMS 资源的密钥 请使用 KMS 您可以在控制台主页上选择 Identity & Access Management 然后在导航窗格中选择加密密钥以在 AWS 管理控制台中查找 KMS KMS 将安全 高度可用的硬件和软件结合起来 提供可为云扩展的密钥管理系统 通过使用 KMS 您 可创建加密密钥并定义控制这些密钥的使用方式的策略 KMS 支持 AWS CloudTrail 因此 您可审核密 钥使用情况以验证密钥是否使用得当 您的 KMS 密钥可与 AWS DMS 及支持的 AWS 服务 (如 Amazon RDS S3 Amazon Elastic Block Store (Amazon EBS) 和 Amazon Redshift) 结合使用 当您创建带有特定加密密钥的 AWS DMS 资源后 您无法更改这些资源的加密密钥 请确保先定义您的加密 密钥要求 然后再创建 AWS DMS 资源 创建复制实例 数据库迁移过程中的第一个任务是创建一个复制实例 该实例具有足够的存储和处理能力来执行您分配的任 务并将数据从源数据库迁移至目标数据库 此实例的所需大小是变化的 具体取决于需迁移的数据量和需要 实例执行的任务数 有关复制实例的更多信息 请参阅使用 AWS DMS 复制实例 (p. 51) 以下过程假定您已选择 AWS DMS 控制台向导 您还可以从 AWS DMS 控制台的导航窗格中选择复制实 例 然后选择创建复制实例以执行该步骤 使用 AWS 控制台创建复制实例 1. 在创建复制实例页中 指定您的复制实例信息 下表描述了设置 64

71 创建复制实例 对于此选项 请执行该操作 名称 为复制实例指定包含 8 到 16 个可打印 ASCII 字符 (不 含 / " 的名称 该名称对于所选 AWS 区域中您 的账户应该是唯一的 您可以选择向名称中添加一些信 息 例如包含 AWS 区域和要执行的任务 如 west2mysql2mysql-instance1 描述 键入复制实例的简要描述 实例类 选择带迁移所需的配置的实例类 请记住 实例必须具有足 够的存储 网络和处理能力才能成功完成迁移 有关如何决 定最适合迁移的实例类的更多信息 请参阅使用 AWS DMS 复制实例 (p. 51) 复制引擎版本 默认情况下 复制实例运行最新版本的 AWS DMS 复制引 擎软件 建议您接受该默认值 不过 您可以选择以前的引 擎版本 (如果需要) VPC 选择要使用的 Amazon Virtual Private Cloud (Amazon VPC) 如果源或目标数据库位于 VPC 中 请选择该 VPC 如果您的源数据库和目标数据库位于不同的 VPC 中 请确保它们位于公有子网中且可公开访问 然后选择复 制实例将放置到的 VPC 中 复制实例必须能够访问源 VPC 中的数据 如果您的源数据库和目标数据库都不在 VPC 中 请选择复制实例将放置到的 VPC 65

72 创建复制实例 2. 对于此选项 请执行该操作 多可用区 可使用此可选参数在另一个可用区中创建复制实例的备用副 本以支持故障转移 如果您打算使用更改数据捕获 (CDC) 或持续复制 您应启用该选项 公开访问 如果您希望能够从 Internet 访问复制实例 请选择该选项 选择高级选项卡 (如下所示) 以设置网络和加密设置值 (如果需要) 下表描述了设置 对于此选项 请执行该操作 分配的存储空间 (GB) 存储空间主要由日志文件和缓存的事务消耗 对于缓存事 务 仅在需要将缓存的事务写入磁盘时消耗存储空间 因 此 AWS DMS 不会使用大量存储空间 一些例外情况包 括 产生大量事务负载的超大型表 加载大型表可能需要花费 一些时间 因此 在大型表加载期间 很有可能将缓存的 事务写入磁盘 配置为在加载缓存的事务之前暂停的任务 在此情况下 将缓存所有事务 直到为所有表完成完全加载 在使用此 配置时 缓存的事务可能会占用大量存储空间 66

73 创建复制实例 对于此选项 请执行该操作 使用将加载到 Amazon Redshift 中的表配置的任务 不 过 在目标为 Amazon Aurora 时 该配置不会出现问 题 在大多数情况下 默认分配的存储空间已足够 不过 关注 与存储相关的指标并在您发现使用的存储空间大于默认分配 值时纵向扩展始终是不错的做法 3. 复制子网组 在选定 VPC 中选择要在其中创建复制实例的复制子网组 如果源数据库位于 VPC 中 请选择包含源数据库的子网组 作为复制实例的位置 有关复制子网组的更多信息 请参 阅创建复制子组 (p. 62) 可用区 选择源数据库所在的可用区 VPC 安全组 在 VPC 中创建复制实例 如果源数据库位于 VPC 中 请选 择一个 VPC 安全组 该安全组提供对数据库所在的数据库 实例的访问权限 KMS 主密钥 选择要用于加密复制存储和连接信息的加密密钥 如果选 择 (默认值) aws/dms 则会使用与您的账户和 AWS 区域 关联的默认 AWS Key Management Service (AWS KMS) 密钥 将显示说明和您的账号以及密钥的 ARN 有关使用 加密密钥的更多信息 请参阅设置加密密钥和指定 KMS 权 限 (p. 40) 指定维护设置 下表描述了设置 有关维护设置的更多信息 请参阅 AWS DMS 维护时段 (p. 54) 对于此选项 请执行该操作 自动次要版本升级 选择在维护时段内自动将次要引擎升级应用于复制实例 维护时段 选择每周可以进行系统维护的时间范围 采用通用协调时间 (UTC) 默认值 从每 AWS 区域 8 小时的时间段中随机选择的 30 分钟时段 (随机选取周中的某天进行) 4. 选择创建复制实例 67

74 修改复制实例 修改复制实例 您可以修改复制实例设置以更改实例类或增加存储 (举例) 在修改复制实例时 您可以立即应用更改 要立即应用更改 您可以在 AWS 管理控制台中选择立即应 用更改选项 在调用 AWS CLI 时使用 --apply-immediately 参数 或者在使用 AWS DMS API 时将 ApplyImmediately 参数设置为 true 如果您没有选择立即应用更改 更改将被放置在等待修改队列中 队列中的所有等待更改都将在下一维护时 段应用 Note 如果您选择立即应用更改 也将同时应用等待修改队列中的所有更改 如果任何待处理修改需要停 机 选择立即应用更改可能导致意外停机 使用 AWS 控制台修改复制实例 登录 AWS 管理控制台 然后选择 AWS DMS 在导航窗格中 选择复制实例 3. 选择要修改的复制实例 下表描述了可进行的修改 对于此选项 请执行该操作 名称 您可以更改复制实例的名称 为复制实例指定包含 8 到 16 个可打印 ASCII 字符 (不含 / " 的名称 该名称对于 所选 AWS 区域中您的账户应该是唯一的 您可以选择向名 称中添加一些信息 例如包含 AWS 区域和要执行的任务 如 west2-mysql2mysql-instance1 实例类 您可以更改实例类 选择带迁移所需的配置的实例类 更改 实例类会导致复制实例重启 将在下一维护时段内重启 如 果选择立即应用更改选项 则会立即进行重启 有关如何决定最适合迁移的实例类的更多信息 请参阅使用 AWS DMS 复制实例 (p. 51) 复制引擎版本 您可以升级复制实例使用的引擎版本 升级复制引擎版本将 导致在升级时关闭复制实例 多可用区 您可以更改该选项以在另一个可用区中创建您的复制实例的 备用副本以支持故障转移 也可以删除该选项 如果您打算 使用更改数据捕获 (CDC) 持续复制 则应该启用该选项 分配的存储空间 (GB) 存储空间主要由日志文件和缓存的事务消耗 对于缓存事 务 仅在需要将缓存的事务写入磁盘时消耗存储空间 因 此 AWS DMS 不会使用大量存储空间 一些例外情况包 括 产生大量事务负载的超大型表 加载大型表可能需要花费 一些时间 因此 在大型表加载期间 很有可能将缓存的 事务写入磁盘 配置为在加载缓存的事务之前暂停的任务 在此情况下 将缓存所有事务 直到为所有表完成完全加载 在使用此 配置时 缓存的事务可能会占用大量存储空间 使用将加载到 Amazon Redshift 中的表配置的任务 不 过 在目标为 Amazon Aurora 时 该配置不会出现问 题 68

75 重启复制实例 对于此选项 请执行该操作 在大多数情况下 默认分配的存储空间已足够 不过 关注 与存储相关的指标并在您发现使用的存储空间大于默认分配 值时纵向扩展始终是不错的做法 VPC 安全组 在 VPC 中创建复制实例 如果源数据库位于 VPC 中 请选 择一个 VPC 安全组 该安全组提供对数据库所在的数据库 实例的访问权限 自动次要版本升级 选择该选项以在维护时段内自动将次要引擎升级应用于复制 实例 如果选择立即应用更改选项 则会立即进行应用 维护时段 选择每周可以进行系统维护的时间范围 采用通用协调时间 (UTC) 默认值 从每 AWS 区域 8 小时的时间段中随机选择的 30 分钟时段 (随机选取周中的某天进行) 立即应用更改 选择该选项以立即应用所做的任何修改 根据您选择的设 置 选择该选项可能会导致立即重启复制实例 重启复制实例 您可以重启 AWS DMS 复制实例以重新启动复制引擎 重启会导致复制实例的短暂中断 在此期间此实例状 态会设置为重启中 如果为多可用区配置了 AWS DMS 实例 则可以通过故障转移进行重启 重启完成后 即会创建 AWS DMS 事件 如果您的 AWS DMS 实例是多可用区部署 您可以在重启时强制从一个 AWS 可用区故障转移到另一个可用 区 当您强制故障转移 AWS DMS 实例时 AWS DMS 会自动切换到另一个可用区中的备用实例 通过故障 转移重启在您想要出于测试目的模拟 AWS DMS 实例的故障时很有用 如果重启时复制实例上正在运行迁移任务 则不会发生数据丢失且任务会在重启完成后立即继续 如果迁移 任务中的表位于批量加载中间 (完全加载阶段) DMS 将为这些表从头重新启动迁移 如果迁移任务中的表位 于持续复制阶段 则任务会在重启完成后立即继续 如果您的 AWS DMS 复制实例未处于可用状态 则无法重启该实例 您的 AWS DMS 实例可能会由于几个 原因而不可用 例如 以前请求的修改或维护时段操作 要重启 AWS DMS 复制实例所需的时间通常较少 (5 分钟以内) 使用 AWS 控制台重启复制实例 要重启复制实例 请使用 AWS 控制台 使用 AWS 控制台重启复制实例 1. 登录 AWS 管理控制台 然后选择 AWS DMS 2. 在导航窗格中 选择复制实例 3. 选择要重启的复制实例 4. 选择 Reboot 5. 对于以下情况 在Reboot replication instance 重启复制实例 对话框中 选择Reboot With Failover? 前提是您已针对多可用区部署配置复制实例 并且想要故障转移到另一个 AWS 可用区 6. 选择 Reboot 69

76 重启复制实例 使用 CLI 重启复制实例 要重启复制实例 请结合以下参数使用 AWS CLI reboot-replication-instance 命令 --replication-instance-arn Example 示例 简单重启 以下 AWS CLI 示例重启复制实例 aws dms reboot-replication-instance \ --replication-instance-arn arnofmyrepinstance Example 示例 简单的通过故障转移重启 以下 AWS CLI 示例通过故障转移重启复制实例 aws dms reboot-replication-instance \ --replication-instance-arn arnofmyrepinstance \ --force-failover 使用 API 重启复制实例 要重启复制实例 请结合以下参数使用 AWS DMS API RebootReplicationInstance 操作 ReplicationInstanceArn = arnofmyrepinstance Example 示例 简单重启 以下代码示例重启复制实例 &DBInstanceArn=arnofmyrepinstance &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version= &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/ /us-east-1/dms/aws4_request &X-Amz-Date= T192732Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=1dc9dd716f4855e9bdf188c70f1cf9f6251b070b68b81103b59ec70c3e7854b3 Example 示例 简单的通过故障转移重启 以下代码示例重启复制实例并故障转移到另一个 AWS 可用区 &DBInstanceArn=arnofmyrepinstance &ForceFailover=true &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version= &X-Amz-Algorithm=AWS4-HMAC-SHA256 70

77 删除复制实例 &X-Amz-Credential=AKIADQKE4SARGYLE/ /us-east-1/dms/aws4_request &X-Amz-Date= T192732Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=1dc9dd716f4855e9bdf188c70f1cf9f6251b070b68b81103b59ec70c3e7854b3 删除复制实例 在使用完 AWS DMS 复制实例后可将其删除 如果您有迁移任务在使用该复制实例 则必须先停止并删除任 务 然后才能删除该复制实例 如果您关闭 AWS 账户 则会在两天后删除与您的账户关联的所有 AWS DMS 资源和配置 这些资源包括所 有复制实例 源和目标终端节点配置 复制任务和 SSL 证书 如果两天后您决定再次使用 AWS DMS 则需 重新创建您需要的资源 使用 AWS 控制台删除复制实例 要删除复制实例 请使用 AWS 控制台 使用 AWS 控制台删除复制实例 1. 登录 AWS 管理控制台 然后选择 AWS DMS 2. 在导航窗格中 选择复制实例 3. 选择要删除的复制实例 4. 选择删除 5. 在对话框中 选择删除 使用 CLI 删除复制实例 要删除复制实例 请结合以下参数使用 AWS CLI delete-replication-instance 命令 --replication-instance-arn Example 删除操作示例 以下 AWS CLI 示例将删除复制实例 aws dms delete-replication-instance \ --replication-instance-arn <arnofmyrepinstance> 使用 API 删除复制实例 要删除复制实例 请结合以下参数使用 AWS DMS API DeleteReplicationInstance 操作 ReplicationInstanceArn = <arnofmyrepinstance> Example 删除操作示例 以下代码示例将删除复制实例 71

78 支持的 DDL 语句 &DBInstanceArn=arnofmyrepinstance &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version= &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/ /us-east-1/dms/aws4_request &X-Amz-Date= T192732Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=1dc9dd716f4855e9bdf188c70f1cf9f6251b070b68b81103b59ec70c3e7854b3 AWS DMS 支持的 DDL 语句 数据迁移流程期间 您可以在源数据库上执行数据定义语言 (DDL) 语句 这些语句由复制服务器复制到目标 数据库 支持以下 DDL 语句 创建表 删除表 重命名表 添加列 删除列 重命名列 更改列数据类型 有关特定源所支持的 DDL 语句的信息 请参阅介绍该源的主题 72

79 数据迁移的源 使用 AWS DMS 终端节点 终端节点提供有关您的数据存储的连接 数据存储类型和位置信息 AWS Database Migration Service 使用 该信息连接到数据存储 并将数据从源终端节点迁移到目标终端节点 您可以使用额外连接属性为终端节点 指定其他连接属性 这些属性可以控制日志记录 文件大小和其他参数 有关额外连接属性的更多信息 请 参阅有关数据存储的文档部分 接下来 您可以了解有关终端节点的更多详细信息 主题 数据迁移的源 (p. 73) 数据迁移的目标 (p. 127) 创建源和目标终端节点 (p. 166) 数据迁移的源 AWS Database Migration Service (AWS DMS) 可以将很多最常用的数据引擎作为数据复制源 数据库源可 以是在 Amazon Elastic Compute Cloud (Amazon EC2) 实例上运行的自管理引擎 也可以是本地数据库 或者 它也可以是 Amazon 托管服务 (如 Amazon Relational Database Service (Amazon RDS) 或 Amazon S3) 上的数据源 AWS DMS 的有效源包括 本地和 Amazon EC2 实例数据库 Oracle 10.2 和更高版本 11g 直至 12.2 版本 (Enterprise Standard Standard One 和 Standard Two 版) Microsoft SQL Server 版本 R 和 2016 (Enterprise Standard Workgroup 和 Developer 版) 不支持 Web 和 Express 版 MySQL 版本 和 5.7 MariaDB (作为与 MySQL 兼容的数据源受支持) PostgreSQL 9.4 和更高版本. SAP Adaptive Server Enterprise (ASE) 版本 或更高版本 和更高版本 MongoDB 版本 2.6.x 和 3.x 和更高版本. Db2 LUW 版本 9.7 版 所有修复包都受支持 10.1 版 所有修复包都受支持 10.5 版 除修复包 5 之外的所有修复包都受支持 Microsoft Azure 将 Azure SQL 数据库作为源时 AWS DMS 支持完全数据加载 不支持更改数据捕获 (CDC) Amazon RDS 实例数据库 Oracle 版本 11g (版本 v1 和更高版本) 和 12c 包括 Enterprise Standard Standard One 和 Standard Two 版. Microsoft SQL Server 版本 2008R 和 2016 包括 Enterprise 和 Standard 版 对于 Enterprise Edition 所有版本都支持 CDC 对于 Standard Edition 只有版本 2016 SP1 和更高版本支持 CDC AWS DMS 不支持 Web Workgroup Developer 和 Express 版 73

80 将 Oracle 作为源 MySQL 版本 和 5.7 只有版本 5.6 及更高版本支持更改数据捕获 (CDC) PostgreSQL 9.4 和更高版本 只有版本 和更高版本以及 和更高版本支持 CDC 只有这些版本 及更高版本才支持 CDC 必需的 rds.logical_replication 参数 MariaDB (作为与 MySQL 兼容的数据源受支持) Amazon Aurora 与 MySQL 的兼容性. Amazon S3 将 Amazon S3 作为源时 AWS DMS 支持完全数据加载和更改数据捕获 (CDC) 主题 将 Oracle 数据库作为 AWS DMS 源 (p. 74) 将 Microsoft SQL Server 数据库作为 AWS DMS 源 (p. 86) 将 Microsoft Azure SQL 数据库作为 AWS DMS 源 (p. 95) 将 PostgreSQL 数据库作为 AWS DMS 源 (p. 95) 将与 MySQL 兼容的数据库作为 AWS DMS 源 (p. 105) 将 SAP ASE 数据库作为 AWS DMS 源 (p. 112) 将 MongoDB 作为 AWS DMS 源 (p. 115) 将 Amazon S3 作为 AWS DMS 源 (p. 119) 将适用于 Linux Unix 和 Windows 数据库的 IBM Db2 (Db2 LUW) 用作 AWS DMS 源 (p. 124) 将 Oracle 数据库作为 AWS DMS 源 您可以使用 &; (AWS DMS) 从一个或多个 Oracle 数据库中迁移数据 通过将 Oracle 数据库作为源 您可以 将数据迁移到 AWS DMS 支持的任一目标 对于自管理 Oracle 数据库 AWS DMS 支持版本 10.2 及更高版本 11g 直至 12.2 版本的所有 Oracle 数据 库版本将自管理数据库作为源 对于由 Amazon RDS 提供的 Amazon 托管 Oracle 数据库 AWS DMS 支持 用于版本 11g (版本 v1 及更高版本) 直至 12.2 版本的所有 Oracle 数据库版本 可以使用 SSL 加密 Oracle 终端节点与复制实例之间的连接 有关将 SSL 用于 Oracle 终端节点的更多信 息 请参阅 将 SSL 用于 AWS Database Migration Service (p. 41) 将 Oracle 数据库配置为 AWS DMS 源的源的步骤如下所示 1. 如果要创建仅限 CDC 的任务或完全加载加上 CDC 的任务 则必须选择 Oracle LogMiner 或 Oracle Binary Reader 来捕获数据更改 选择 LogMiner 或 Binary Reader 可确定某些后续权限和配置任务 有关 LogMiner 和 Binary Reader 的比较 请参阅下一节 2. 创建具有对 AWS DMS 的适当权限的 Oracle 用户 如果您要创建仅限完全加载的任务 则不需要进一步 配置 3. 如果您要创建一个完全加载加上 CDC 的任务或者创建一个仅包含 CDC 任务 请配置 Oracle for LogMiner 或 Binary Reader 4. 创建符合所选配置的 DMS 终端节点 有关使用 Oracle 数据库和 AWS DMS 的其他详细信息 请参阅以下章节 主题 将 Oracle LogMiner 或 Oracle Binary Reader 用于更改数据捕获 (CDC) (p. 75) 将自管理 Oracle 数据库用作 AWS DMS 的源 (p. 76) 使用 Amazon 托管 Oracle 数据库作为 AWS DMS 的源 (p. 79) 74

81 将 Oracle 作为源 将 Oracle 作为 AWS DMS 源的限制 (p. 81) 将 Oracle 作为 AWS DMS 源时的额外连接属性 (p. 82) Oracle 的源数据类型 (p. 84) 将 Oracle LogMiner 或 Oracle Binary Reader 用于更改数据捕获 (CDC) Oracle 提供了两种方法在进行更改处理时读取重做日志 Oracle LogMiner 和 Oracle Binary Reader Oracle LogMiner 提供了到 Oracle 的在线和已存档重做日志文件的 SQL 接口 Binary Reader 是 一个 AWS DMS 功能 用于直接读取和分析原始重做日志文件 默认情况下 AWS DMS 将 Oracle LogMiner 用于更改数据捕获 (CDC) 将 LogMiner 与 AWS DMS 一起使 用的好处包括 LogMiner 支持大部分 Oracle 选项 例如加密选项和压缩选项 Binary Reader 不支持所有 Oracle 选项 特别是用于加密和压缩的选项 LogMiner 提供了更简单的配置 特别是与 Oracle Binary Reader 的直接访问设置或者 Automatic Storage Management (ASM) 上的重做日志相比 LogMiner 完全支持大多数 Oracle 加密选项 包括 Oracle 透明数据加密 (TDE) 对于完全加载和持续复制 (CDC) LogMiner 支持以下 HCC 压缩类型 QUERY HIGH ARCHIVE HIGH ARCHIVE LOW QUERY LOW Binary Reader 仅对完全加载复制支持 QUERY LOW 压缩 而不对持续 (CDC) 复制支持 QUERY LOW 压 缩 LogMiner 支持 AWS DMS 使用表群集 Binary Reader 没有这种支持 将 Binary Reader 与 AWS DMS 一起使用 (而不是 LogMiner) 的优点包括 对于更改量较大的迁移 LogMiner 可能会对托管 Oracle 源数据库的计算机造成一些 I/O 或 CPU 影 响 Binary Reader 对 I/O 或 CPU 造成影响的几率更小 因为存档日志会被复制到复制实例并在该处看 管 对于更改量较大的迁移 与使用 Oracle LogMiner 相比 使用 Binary Reader 时 CDC 性能通常会好得多 Binary Reader 支持对 Oracle 版本 12c 中 LOB 的 CDC LogMiner 则不支持 Binary Reader 在完全加载和连续复制 (CDC) 中支持以下 HCC 压缩类型 QUERY HIGH ARCHIVE HIGH ARCHIVE LOW 完全加载迁移仅支持 QUERY LOW 压缩类型 一般而言 除非遇到以下情况 否则请使用 Oracle LogMiner 迁移您的 Oracle 数据库 需要在源 Oracle 数据库上运行多个迁移任务 源 Oracle 数据库上的更改量或重做日志量很大 您要将 LOB 从 Oracle 12.2 或更高版本源端点迁移 如果您的工作负载包含仅更新 LOB 列的 UPDATE 语句 则必须使用 Binary Reader Oracle LogMiner 不 支持这些更新语句 75

82 将 Oracle 作为源 如果您的源是 Oracle 版本 11 并且您对 XMLTYPE 和 LOB 列执行了 UPDATE 语句 则必须使用 Binary Reader Oracle LogMiner 不支持这些语句 在 Oracle 12c 中 LogMiner 不支持 LOB 列 如果要从 Oracle 12c 迁移 LOB 列 您必须使用 Binary Reader Oracle 源数据库上的更改数据捕获 (CDC) 的配置 当您使用 Oracle 作为完全加载和更改数据捕获 (CDC) 的源终端节点或仅作为 CDC 的源终端节点时 您必须 设置一个额外的连接属性 此属性指定是使用 LogMiner 还是 Binary Reader 来访问事务日志 您在创建源 终端节点时指定了一个额外的连接属性 应将多个额外连接属性设置用分号隔开 默认情况下将使用 LogMiner 因此您不必显式指定使用它 要启用 Binary Reader 以访问事务日志 请添加 以下额外连接属性 uselogminerreader=n; usebfile=y 如果 Oracle 源数据库使用 Oracle Automatic Storage Management (ASM) 则额外连接属性需要包含 ASM 用户名和 ASM 服务器地址 当您创建源终端节点时 密码字段需要具有两个密码 源用户密码和 ASM 密 码 例如 以下额外连接属性格式用于访问使用 Oracle ASM 的服务器 uselogminerreader=n;asm_user=<asm_username>;asm_server=<first_rac_server_ip_address>:<port_number>/ +ASM 如果 Oracle 源数据库使用 Oracle ASM 则源终端节点密码字段必须具有 Oracle 用户密码和 ASM 密码 (以 逗号分隔) 例如 以下代码段适用于密码字段 <oracle_user_password>,<asm_user_password> Oracle 源数据库上的 CDC 的限制 将 Oracle 数据库用作 AWS DMS 更改数据捕获的源时存在以下限制 AWS DMS 不捕获 Oracle DBMS_REDEFINITION 包进行的更改 例如 对表元数据和 OBJECT_ID 值的 更改 在使用 BFILE 时 AWS DMS 在 CDC 模式下不支持具有溢出段且按索引组织的表 例如 在未使用 LogMiner 访问重做日志时 将自管理 Oracle 数据库用作 AWS DMS 的源 自管理数据库是您配置和控制的数据库 它是本地数据库实例或 Amazon EC2 上的数据库 接下来 您可以 了解在将自管理 Oracle 数据库与 AWS DMS 一起使用时需要设置的权限和配置 AWS DMS 的自管理 Oracle 源上所需的用户账户权限 要将 Oracle 数据库作为 AWS DMS 任务中的源 必须在 Oracle 数据库中为 AWS DMS Oracle 数据库定义 中指定的用户授予以下权限 授予权限时 使用对象的实际名称 (例如 包括下划线的 V_$OBJECT) 而不 是对象的同义词 (例如 不带下划线的 V$OBJECT) GRANT SELECT ANY TRANSACTION to <dms_user> GRANT SELECT on V_$ARCHIVED_LOG to <dms_user> 76

83 将 Oracle 作为源 GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT ) GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT on on on on on on on on on on on V_$LOG to <dms_user> V_$LOGFILE to <dms_user> V_$DATABASE to <dms_user> V_$THREAD to <dms_user> V_$PARAMETER to <dms_user> V_$NLS_PARAMETERS to <dms_user> V_$TIMEZONE_NAMES to <dms_user> V_$TRANSACTION to <dms_user> ALL_INDEXES to <dms_user> ALL_OBJECTS to <dms_user> DBA_OBJECTS to <dms_user> (required if the Oracle version is earlier than on on on on on on on on on on on on on on on ALL_TABLES to <dms_user> ALL_USERS to <dms_user> ALL_CATALOG to <dms_user> ALL_CONSTRAINTS to <dms_user> ALL_CONS_COLUMNS to <dms_user> ALL_TAB_COLS to <dms_user> ALL_IND_COLUMNS to <dms_user> ALL_LOG_GROUPS to <dms_user> SYS.DBA_REGISTRY to <dms_user> SYS.OBJ$ to <dms_user> DBA_TABLESPACES to <dms_user> ALL_TAB_PARTITIONS to <dms_user> ALL_ENCRYPTED_COLUMNS to <dms_user> V_$LOGMNR_LOGS to <dms_user> V_$LOGMNR_CONTENTS to <dms_user> 在使用持续复制 (CDC) 时 您需要这些其他权限 在使用 CDC 时需要以下权限 以便 AWS DMS 可添加到 11g 和 12c 的 Oracle LogMiner 重做日志中 Grant EXECUTE ON dbms_logmnr TO <dms_user>; 在使用 CDC 时需要以下权限 以便 AWS DMS 只能添加到 12c 的 Oracle LogMiner 重做日志中 Grant LOGMINING TO <dms_user>; 如果您使用了下面提到的任一额外功能 则需要给定的额外权限 如果视图公开 则向 <dms_user> 授予针对 ALL_VIEWS 的 SELECT 如果您使用模式来匹配复制任务中的表名称 请授予 SELECT ANY TABLE 如果您在复制任务中指定了一个表列表 请授予针对该列表中的每个表的 SELECT 如果您添加了补充日志记录 请授予 ALTER ANY TABLE 如果您添加了补充日志记录并使用了特定表列表 请为该列表中的每个表授予 ALTER 如果您要从 Oracle RAC 迁移 请授予针对前缀为 g_$ 和 v_$ 的具体化视图的 SELECT 权限 配置 AWS DMS 的自管理 Oracle 源 在将自管理 Oracle 数据库用作 AWS DMS 的源之前 您需要执行多项任务 提供 Oracle 账户访问权限 - 您必须为 AWS DMS 提供一个 Oracle 用户账户 该用户账户必须具有对 Oracle 数据库的读/写权限 如上一节中所指定 77

84 将 Oracle 作为源 确保启用 ARCHIVELOG 模式 - Oracle 可以使用两种不同模式运行 ARCHIVELOG 模式和 NOARCHIVELOG 模式 要将 Oracle 与 AWS DMS 一起使用 源数据库必须处于 ARCHIVELOG 模式 设置补充日志记录 - 如果您计划在 CDC 任务或完整加载加上 CDC 任务中使用该源 则需要设置补充日志 记录以便为复制捕获更改 为 Oracle 启用补充日志记录有两个步骤 首先 您需要启用数据库级别补充日志记录 这样做可确保 LogMiner 具有最少的信息来支持各种表结构 (如群集表和按索引组织的表) 其次 您需要为要迁移的每个表 启用表级别补充日志记录 启用数据库级别补充日志记录 1. 运行以下查询以确定是否已启用数据库级别补充日志记录 返回的结果应来自 GE to SELECT name, value, description FROM v$parameter WHERE name = 'compatible'; 2. 运行以下查询 返回的结果应为 YES 或 IMPLICIT SELECT supplemental_log_data_min FROM v$database; 3. 运行以下查询以启用数据库级别补充日志记录 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; 启用表级别补充日志记录有两种方法 在第一种方法中 如果您的数据库用户账户具有对要迁移的所有表的 ALTER TABLE 权限 您可以使用额外的连接参数 addsupplementallogging 如下所述 否则 您可以 对该迁移中的每个表使用以下步骤 启用表级别补充日志记录 1. 如果表具有主键 请通过运行以下命令为表添加 PRIMARY KEY 补充日志记录 ALTER TABLE <table_name> ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS; 2. 如果没有主键并且表具有多个唯一索引 则 AWS DMS 使用按索引名称的字母顺序排列的第一个唯一索 引 按前面所示在该索引的列上创建一个补充日志组 3. 如果没有主键 也没有唯一索引 则必须在所有列上添加补充日志记录 运行以下查询以向所有列添加 补充日志记录 ALTER TABLE <table_name> ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS; 在某些情况下 目标表主键或唯一索引不同于源表主键或唯一索引 在这些情况下 请在构成目标表主键或 唯一索引的源表列上添加补充日志记录 如果您更改目标表主键 则应在所选索引的列上添加补充日志记 录 而不是原始主键或唯一索引的列 必要时添加额外的日志记录 例如 如果为表定义了筛选条件 如果表具有唯一索引或主键 对于筛选条件 中涉及到的各列 如果这些列不同于主键或唯一索引列 则需要在这些列上添加补充日志记录 但是 如果 ALL COLUMNS 补充日志记录已添加到表上 您无需添加任何额外的日志记录 ALTER TABLE <table_name> ADD SUPPLEMENTAL LOG GROUP <group_name> (<column_list>) ALWAYS; 78

85 将 Oracle 作为源 使用 Amazon 托管 Oracle 数据库作为 AWS DMS 的源 Amazon 托管数据库是位于 Amazon 数据库服务 (如 Amazon RDS Amazon Aurora 或 Amazon S3) 上的数 据库 接下来 您可以了解在将 Amazon 托管 Oracle 数据库与 AWS DMS 一起使用时需要设置的权限和配 置 AWS DMS 的 Amazon 托管 Oracle 源上所需的用户账户权限 要授予 Amazon RDS 上 Oracle 数据库的权限 请使用存储过程 rdsadmin.rdsadmin_util.grant_sys_object 有关更多信息 请参阅向 SYS 对象授予 SELECT 或 EXECUTE 权限 向用于访问源 Oracle 终端节点的 AWS DMS 用户账户授予以下权限 GRANT SELECT ANY TABLE to <dms_user>; GRANT SELECT on ALL_VIEWS to <dms_user>; GRANT SELECT ANY TRANSACTION to <dms_user>; 运行以下命令 exec rdsadmin.rdsadmin_util.grant_sys_object('v_ $ARCHIVED_LOG','<dms_user>','SELECT'); 运行以下命令 exec rdsadmin.rdsadmin_util.grant_sys_object('v_ $LOG','<dms_user>','SELECT'); 运行以下命令 exec rdsadmin.rdsadmin_util.grant_sys_object('v_ $LOGFILE','<dms_user>','SELECT'); 运行以下命令 exec rdsadmin.rdsadmin_util.grant_sys_object('v_ $DATABASE','<dms_user>','SELECT'); 运行以下命令 exec rdsadmin.rdsadmin_util.grant_sys_object('v_ $THREAD','<dms_user>','SELECT'); 运行以下命令 exec rdsadmin.rdsadmin_util.grant_sys_object('v_ $PARAMETER','<dms_user>','SELECT'); 运行以下命令 exec rdsadmin.rdsadmin_util.grant_sys_object('v_ $NLS_PARAMETERS','<dms_user>','SELECT'); 运行以下命令 exec rdsadmin.rdsadmin_util.grant_sys_object('v_ $TIMEZONE_NAMES','<dms_user>','SELECT'); 运行以下命令 exec rdsadmin.rdsadmin_util.grant_sys_object('v_ $TRANSACTION','<dms_user>','SELECT'); 运行以下命令 GRANT GRANT GRANT GRANT GRANT GRANT GRANT GRANT GRANT GRANT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT on on on on on on on on on on ALL_INDEXES to <dms_user>; ALL_OBJECTS to <dms_user>; ALL_TABLES to <dms_user>; ALL_USERS to <dms_user>; ALL_CATALOG to <dms_user>; ALL_CONSTRAINTS to <dms_user>; ALL_CONS_COLUMNS to <dms_user>; ALL_TAB_COLS to <dms_user>; ALL_IND_COLUMNS to <dms_user>; ALL_LOG_GROUPS to <dms_user>; 运行以下命令 exec rdsadmin.rdsadmin_util.grant_sys_object('dba_registry','<dms_user>','select'); 运行以下命令 exec rdsadmin.rdsadmin_util.grant_sys_object('obj $','<dms_user>','select'); 79

86 将 Oracle 作为源 GRANT SELECT on DBA_TABLESPACES to <dms_user>; GRANT SELECT on ALL_TAB_PARTITIONS to <dms_user>; GRANT LOGMINING TO <dms_user>; 运行以下命令 exec rdsadmin.rdsadmin_util.grant_sys_object('all_encrypted_columns','<dms_user>','select'); 运行以下命令 exec rdsadmin.rdsadmin_util.grant_sys_object('v_ $LOGMNR_LOGS','<dms_user>','SELECT'); 运行以下命令 exec rdsadmin.rdsadmin_util.grant_sys_object('v_ $LOGMNR_CONTENTS','<dms_user>','SELECT'); 运行以下命令 exec rdsadmin.rdsadmin_util.grant_sys_object('dbms_logmnr','<dms_user>','execute'); 对 Amazon 托管 Oracle 进行 AWS DMS 配置 在使用 Amazon 托管 Oracle 数据库作为 AWS DMS 的源之前 您需要执行多项任务 提供 Oracle 账户访问权限 - 您必须为 AWS DMS 提供一个 Oracle 用户账户 该用户账户必须具有对 Oracle 数据库的读/写权限 如上一节中所指定 将您的 Amazon RDS 数据库的备份保留期设置为 1 天或更长时间 - 设置备份保留期可确保数据库在 ARCHIVELOG 模式下运行 有关设置备份保留期的更多信息 请参阅 Amazon RDS 用户指南. 中的使用 自动备份 设置存档保留 - 运行以下命令以保留 Oracle 数据库实例的已存档重做日志 运行此命令可让 AWS DMS 使用 LogMiner 检索日志信息 确保您具有足够的存储空间 可以在迁移期间容纳已存档重做日志 在以下示例中 日志将保留 24 小时 exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24); 设置补充日志记录 - 如果您计划在 CDC 任务或完整加载加上 CDC 任务中使用该源 则设置补充日志记录 以便为复制捕获更改 为 Oracle 启用补充日志记录有两个步骤 首先 您需要启用数据库级别补充日志记录 这样做可确保 LogMiner 具有最少的信息来支持各种表结构 (如群集表和按索引组织的表) 其次 您需要为要迁移的每个 表启用表级别补充日志记录 启用数据库级别补充日志记录 运行以下查询以启用数据库级别补充日志记录 exec rdsadmin.rdsadmin_util.alter_supplemental_logging('add'); 启用表级别补充日志记录 运行以下命令以为具有主键的表启用 PRIMARY KEY 日志记录 exec rdsadmin.rdsadmin_util.alter_supplemental_logging('add','primary KEY'); 对于具有主键的表 请使用以下命令添加补充日志记录 alter table <table_name> add supplemental log data (ALL) columns; 80

87 将 Oracle 作为源 如果您创建了具有主键的表 则应在创建语句中包含补充日志记录子句 或者修改表以添加补充日志记 录 以下命令创建一个表并添加补充日志记录 create table <table_name> (<column_list>, supplemental log data (ALL) columns); 如果您创建了一个表并随后添加了主键 您需要向表添加补充日志记录 使用以下命令将补充日志记录添 加到表 alter table <table_name> add supplemental log data (PRIMARY KEY) columns; 为用于 AWS DMS 的 Amazon RDS for Oracle 源配置更改数据捕获 (CDC) 您可以对 AWS DMS 进行配置 以使用 Amazon RDS for Oracle 实例作为 CDC 的源 您可以将 Oracle Binary Reader 与 Amazon RDS for Oracle 源结合使用 (Oracle 版本 v11 及更高版本 v7 及更高版本) 在创建 Amazon RDS for Oracle 源终端节点时 应在连接信息中包含以下附加的连接属性 uselogminerreader=n;usebfile=y;accessalternatedirectly=false; usealternatefolderforonline=true; oraclepathprefix=/rdsdbdata/db/orcl_a/;usepathprefix=/rdsdbdata/log/; replacepathprefix=true 将 Oracle 作为 AWS DMS 源的限制 将 Oracle 数据库用作 AWS DMS 的源时存在以下限制 在与 Oracle LogMiner 一起使用时 AWS DMS 支持 Oracle 透明数据加密 (TDE) 表空间加密和 AWS Key Management Service (AWS KMS) 加密 所有其他形式的加密均不支持 包含 LOB 的表必须具有主键才能使用 CDC AWS DMS 在 Oracle 11 和更高版本中支持 rename table <table name> to <new table name> 语法 使用显式 CHAR 语义创建的 Oracle 源数据库列传输到使用 BYTE 语义的目标 Oracle 数据库 在迁移之 前 您必须在目标 Oracle 数据库上创建包含此类型的列的表 AWS DMS 不会复制由分区或子分区操作 (数据定义语言 (DDL) 操作 例如 ADD DROP EXCHANGE 或 TRUNCATE) 导致的数据更改 要复制此类更改 您必须重新加载所复制的表 AWS DMS 会将任何将 来的数据更改复制到新添加的分区 您无需重新加载表 但是 对分区中的旧数据记录的 UPDATE 操作将 失败 并且会生成 0 rows affected 警告 DDL 语句 ALTER TABLE ADD <column> <data_type> DEFAULT <> 不会将默认值复制到目标 目标中的新列将设置为 NULL 如果新列可为空 Oracle 首先更新所有表行 然后再记录 DDL 本身 因 此 AWS DMS 捕获对计数器的更改 但不更新目标 由于新列设置为 NULL 如果目标表没有主键或唯 一索引 接下来的更新会生成 0 rows affected 警告 不支持由 CREATE TABLE AS 语句进行的数据更改 但是 在目标上会创建新表 如果启用了限制大小 LOB 模式 则 AWS DMS 复制 Oracle 源中的空 LOB 以作为目标中的 NULL 值 在 AWS DMS 开始 CDC 时 它将时间戳映射到 Oracle 系统更改号 (SCN) 默认情况下 Oracle 仅将时 间戳与 SCN 的映射保留五天 如果指定的时间戳太早 (超过了 5 天的保留期) Oracle 将生成错误 有关 更多信息 请参阅 Oracle 文档 AWS DMS 不支持使用 ASM 代理连接到 Oracle 源 AWS DMS 不支持虚拟列 81

88 将 Oracle 作为源 将 Oracle 作为 AWS DMS 源时的额外连接属性 您可以使用额外的连接属性配置 Oracle 源 在创建源终端节点时 您可以指定这些设置 对于多个额外连接 属性设置 应该用分号将它们彼此隔开 下表显示了可用于将 Oracle 数据库配置为 AWS DMS 的源的额外连接属性 名称 描述 addsupplementallogging 设置此属性可设置 Oracle 数据库的表级别补充日志记录 此属 性将对为迁移任务选择的所有表启用 PRIMARY KEY 补充日志 记录 默认值 N 有效值 Y/N 示例 addsupplementallogging=y Note 如果您使用此选项 则仍需启用前面讨论过的数据库 级别补充日志记录 additionalarchivedlogdestid 在主/备用设置中将此属性与 archivedlogdestid 一起设 置 当发生故障转移时 此属性很有用 在这种情况下 AWS DMS 需要知道从哪个目标中获取存档重做日志以读取更改 因 为在故障转移后以前的主实例现在是备用实例 uselogminerreader 将此属性设置为 Y 可使用 LogMiner 实用工具 (默认) 捕获更改 数据 如果您希望 AWS DMS 将重做日志作为二进制文件进行 访问 请将该选项设置为 N 如果设置为 N 您还必须添加设 置 usebfile=y 有关更多信息 请参阅将 Oracle LogMiner 或 Oracle Binary Reader 用于更改数据捕获 (CDC) (p. 75) 默认值 Y 有效值 Y/N 示例 uselogminerreader=n; usebfile=y 如果 Oracle 源数据库使用的是 Oracle Automatic Storage Management (ASM) 则额外连接参数需要包含 ASM 用户名 和 ASM 服务器地址 密码字段还需要具有两个密码 源用户 密码和 ASM 密码 (彼此以逗号分隔) 示 例 uselogminerreader=n;asm_user=<asm_username>; asm_server=<first_rac_server_ip_address>:<port_number>/ +ASM retryinterval 指定系统在重新发送查询之前等待的秒数 默认值 5 有效值 从 1 开始的数字 示例 retryinterval=6 82

89 将 Oracle 作为源 名称 描述 archivedlogdestid 指定已存档重做日志的目标 该值应与 $archived_log 表中的 DEST_ID 数相同 在使用多个日志目标 (DEST_ID) 时 建议 您指定已存档重做日志位置标识符 这样做将确保从一开始便 访问正确的日志 从而提高性能 默认值 0 有效值 数字 示例 archivedlogdestid=1 在此字段设置为 Y 时 AWS DMS 仅访问已存档重做日志 如 果已存档重做日志仅存储在 Oracle ASM 上 则 AWS DMS 用 户账户需要获得 ASM 权限 archivedlogsonly 默认值 N 有效值 Y/N 示例 archivedlogsonly=y 指定数字的小数位数 可以选择最大为 38 的小数位数 也可 以选择 FLOAT 默认情况下 NUMBER 数据类型将转换为精 度 38 小数位数 10 numberdatatypescale 调整渲染效果的缩放 有效值 -1 到 38 (对于 FLOAT 为 -1) 示例 numberdatatypescale =12 指定脚本在 AWS DMS 连接到终端节点后立即运行 afterconnectscript 有效值 用分号分隔的 SQL 语句 并非所有 SQL 语句都受支 持 示例 afterconnectscript=alter SESSION SET CURRENT_SCHEMA = system; failtasksonlobtruncation 当设置为 true 时 如果 LOB 列的实际大小大于指定的 LobMaxSize 此属性将导致任务失败 如果任务设置为受限 LOB 模式并且此选项设置为 true 任务 将失败 而不是截断 LOB 数据 默认值 false 有效值 布尔值 示例 failtasksonlobtruncation=true readtablespacename 当设置为 true 时 此属性支持表空间复制 默认值 false 有效值 布尔值 示例 readtablespacename =true 83

90 将 Oracle 作为源 名称 描述 standbydelaytime 使用此属性指定备用同步延迟时间 (以分钟为单位) 利用 AWS DMS 版本 及更高版本 您可以创建一个 Oracle 持续复制 (CDC) 任务 该任务使用 Oracle 活动 Data Guard 备用实例作为源以将持续更改复制到支持的目标中 这 样一来 便无需连接到可能处于生产状态的活动数据库 默认值 0 有效值 数字 示例 standbydelaytime=1 Oracle 的源数据类型 AWS DMS 的 Oracle 终端节点支持大多数 Oracle 数据类型 下表显示了使用 AWS DMS 时支持的 Oracle 源数据类型以及与 AWS DMS 数据类型的默认映射 有关如何查看目标中映射的数据类型的信息 请参阅有关所使用的目标终端节点的部分 有关 AWS DMS 数据类型的其他信息 请参阅AWS Database Migration Service 的数据类型 (p. 257) Oracle 数据类型 AWS DMS 数据类型 BINARY_FLOAT REAL4 BINARY_DOUBLE REAL8 BINARY BYTES FLOAT (P) 如果精度小于或等于 24 请使用 REAL4 如果精度大于 24 请使用 REAL8 NUMBER (P,S) 当小数位数小于 0 时 请使用 REAL8 NUMBER 取决于 Oracle 源数 当小数位数为 0 时 据库设置中的 Expose number 如果精度为 0 请使用 REAL8 as 属性 如果精度大于或等于 2 请使用 INT1 如果精度大于 2 且小于或等于 4 请使用 INT2 如果精度大于 4 且小于或等于 9 请使用 INT4 如果精度大于 9 请使用 NUMERIC 如果精度大于或等于小数位数 请使用 NUMERIC 在所有其他情况下 请使用 REAL8 DATE DATETIME INTERVAL_YEAR TO MONTH STRING (带 interval year_to_month 指示) INTERVAL_DAY TO SECOND STRING (带 interval day_to_second 指示) 84

91 将 Oracle 作为源 Oracle 数据类型 AWS DMS 数据类型 TIME DATETIME TIMESTAMP DATETIME TIMESTAMP 有时区 STRING (带 timestamp_with_timezone 指示) 带本地时区的 TIMESTAMP STRING (带 timestamp_with_local_ timezone 指示) CHAR STRING VARCHAR2 STRING NCHAR WSTRING NVARCHAR2 WSTRING RAW BYTES REAL REAL8 BLOB BLOB 要将此数据类型用于 AWS DMS 您必须允许对特定任务使用 BLOB 数据 类型 AWS DMS 仅在包含主键的表中支持 BLOB 数据类型 CLOB CLOB 要将此数据类型用于 AWS DMS 您必须允许对特定任务使用 CLOB 数据 类型 在更改数据捕获 (CDC) 期间 AWS DMS 仅在包含主键的表中支 持 CLOB 数据类型 NCLOB NCLOB 要将此数据类型用于 AWS DMS 您必须允许对特定任务使用 NCLOB 数 据类型 在 CDC 期间 AWS DMS 仅在包含主键的表中支持 NCLOB 数 据类型 LONG CLOB LONG 数据类型在批处理优化的应用模式 (TurboStream CDC 模式) 中不 受支持 要将此数据类型用于 AWS DMS 您必须允许对特定任务使用 LOB 在 CDC 期间 AWS DMS 仅在包含主键的表中支持 LOB 数据类 型 LONG RAW BLOB LONG RAW 数据类型在批处理优化的应用模式 (TurboStream CDC 模式) 中不受支持 要将此数据类型用于 AWS DMS 您必须允许对特定任务使 用 LOB 在 CDC 期间 AWS DMS 仅在包含主键的表中支持 LOB 数据 类型 XMLTYPE CLOB 需要完整 Oracle 客户端才能支持 XMLTYPE 数据类型 (与 Oracle Instant Client 相对) 当目标列是 CLOB 时 同时支持完整 LOB 模式和受限 LOB 模式 (取决于目标) 作为源的 Oracle 表 带不受支持且无法复制的以下数据类型的列 复制带这些数据类型的列会生成空列 85

92 将 SQL Server 作为源 BFILE ROWID REF UROWID 嵌套表 用户定义的数据类型 ANYDATA Note 不支持虚拟列 将 Microsoft SQL Server 数据库作为 AWS DMS 源 您可以使用 AWS DMS (AWS DMS) 从一个或多个 Microsoft SQL Server 数据库中迁移数据 将 SQL Server 数据库作为源时 您可以将数据迁移到另一个 SQL Server 数据库或其他支持的数据库 AWS DMS 支持将本地和 Amazon EC2 实例上的 Microsoft SQL Server 版本 R 和 2016 数据库作为源 支持 Enterprise Standard Workgroup 和 Developer 版 不支持 Web 和 Express 版 AWS DMS 支持将 Amazon RDS 数据库实例上的 SQL Server 版本 2008R 和 2016 数 据库作为源 这包括 Enterprise 和 Standard 版 对于 Enterprise Edition 所有版本都支持 CDC 对于 Standard Edition 只有版本 2016 SP1 和更高版本支持 CDC 不支持 Web Workgroup Developer 和 Express 版 您可以将源 SQL Server 数据库安装在您网络中的任意计算机上 还需要具有一个 SQL Server 账户以用于 AWS DMS 该账户具有与选定任务类型对应的源数据库访问权限 AWS DMS 支持从 SQL Server 的命名实例中迁移数据 当您创建源终端节点时 您可以在服务器名称中使 用以下表示法 IPAddress\InstanceName 例如 以下是正确的源终端节点服务器名称 在这里 名称的第一部分是服务器的 IP 地址 第二部分是 SQL Server 实例名称 (本例中为 SQLTest) \SQLTest 可以使用 SSL 加密 SQL Server 终端节点与复制实例之间的连接 有关将 SSL 用于 SQL Server 终端节点的 更多信息 请参阅将 SSL 用于 AWS Database Migration Service (p. 41) 要从源 SQL Server 数据库捕获更改 必须为完整备份配置数据库 并且必须为 Enterprise Developer 或 Standard 版 有关使用 SQL Server 源数据库和 AWS DMS 的其他详细信息 请参阅以下内容 主题 将 SQL Server 用作 AWS DMS 的源的限制 (p. 87) 在 SQL Server 源中使用持续复制 (CDC) (p. 87) 支持的压缩方法 (p. 91) 使用 SQL Server AlwaysOn 可用性组 (p. 91) 将 SQL Server 数据库配置为 AWS DMS 复制源 (p. 91) 86

93 将 SQL Server 作为源 将 SQL Server 作为 AWS DMS 源时的额外连接属性 (p. 91) SQL Server 的源数据类型 (p. 92) 将 SQL Server 用作 AWS DMS 的源的限制 将 SQL Server 数据库作为 AWS DMS 源时 存在以下限制 列的身份属性不迁移到目标数据库列 在 2.4.x 版之前的 AWS DMS 引擎版本中 由于 SQL Server TLOG 缓冲区大小的限制 无法正确处理包 含的信息超过 8000 字节 (含标题和映射信息) 的行的更改 使用最新 AWS DMS 版本可避免此问题 SQL Server 终端节点不支持使用稀疏表 不支持 Windows 身份验证 不复制对 SQL Server 中计算字段的更改 不支持临时表 不支持 SQL Server 分区切换 源上的群集索引将在目标上创建为非群集索引 在使用 WRITETEXT 和 UPDATETEXT 实用工具时 AWS DMS 不捕获应用到源数据库的事件 不支持以下数据操作语言 (DML) 模式 SELECT <*> INTO <new_table> FROM <existing_table> 将 SQL Server 作为源时 不支持列级别的加密 由于 SQL Server 2008 和 2008 R2 的已知问题 AWS DMS 在作为源终端节点的 SQL Server 2008 和 SQL Server 2008 R2 上不支持服务器级别审核 例如 运行以下命令将导致 AWS DMS 失败 USE [master] GO ALTER SERVER AUDIT [my_audit_test ] WITH (STATE=on) GO 在 SQL Server 源中使用持续复制 (CDC) 您可以针对本地或 Amazon EC2 上的自管理 SQL Server 数据库或者 Amazon RDS 上的 Amazon 托管数据 库使用持续复制 (更改数据捕获 (CDC)) AWS DMS 对以下 SQL Server 配置支持持续复制 对于在本地或 Amazon EC2 上的 SQL Server 实例 AWS DMS 对 Enterprise Standard 和 Developer Edition 支持持续复制 对于在 Amazon RDS 上运行的源 SQL Server 实例 AWS DMS 对 SQL Server Enterprise 到 SQL Server 2016 SP1 支持持续复制 除了此版本 AWS DMS 还对 SQL Server Enterprise 和 Standard 版本支持 CDC 如果您希望 AWS DMS 自动设置持续复制 则您用于连接到源数据库的 AWS DMS 用户账户必须具有 sysadmin 固定服务器角色 如果您不想将 sysadmin 角色分配到使用的用户账户 则仍然可以通过按照下面 讨论的一系列手动步骤操作使用持续复制 87

94 将 SQL Server 作为源 尤其在对作为 AWS DMS 源的 SQL Server 数据库使用持续复制时 存在以下要求 必须配置 SQL Server 进行完整备份 并且您必须在开始复制数据之前先进行一次备份 恢复模式必须设置为 Bulk logged 或 Full 不支持 SQL Server 备份到多个磁盘 如果定义备份以将数据库备份写入到不同磁盘上的多个文件中 则 AWS DMS 无法读取数据并且 AWS DMS 任务失败 对于自管理 SQL Server 源 请注意 在您删除任务时 DMS CDC 任务中使用的源数据库的 SQL Server Replication Publisher 定义不会被删除 SQL Server 系统管理员必须从 SQL Server 删除为自管理源这些 定义 在 CDC 期间 AWS DMS 需要查找 SQL Server 事务日志备份以读取更改 AWS DMS 不支持使用通过第 三方备份软件创建的 SQL Server 事务日志备份 对于自管理 SQL Server 源 请注意 在新创建的表发布前 SQL Server 不会捕获对它们的更改 在将表 添加到 SQL Server 源后 AWS DMS 将管理创建发布 但是 该过程可能需要几分钟时间 不会将在该 延迟期间对新创建的表执行的操作捕获或复制到目标中 AWS DMS 更改数据捕获要求在 SQL Server 中启用 FULLOGGING 要在 SQL Server 中启用 FULLLOGGING 请启用 MS-REPLICATION 或 CHANGE DATA CAPTURE (CDC) 在处理更改之前 您无法重用 SQL Server tlog 内存优化表上不支持 CDC 操作 该限制适用于 SQL Server 2014 (在此版本中首次引入该功能) 和更高版 本 捕获 SQL Server 的数据更改 对于自管理 SQL Server 源 AWS DMS 使用以下内容 MS-Replication 用于捕获具有主键的表的更改 您可以通过在源 SQL Server 实例上向 AWS DMS 终端 节点用户提供 sysadmin 权限来自动配置此项 或者 也可以按照本部分中提供的步骤操作 准备源并针 对 AWS DMS 终端节点使用非 sysadmin 用户 MS-CDC 用于捕获不带主键的表的更改 MS-CDC 必须在数据库级别上启用 而且分别适用于各个表 对于在 Amazon RDS 上运行的 SQL Server 源 AWS DMS 使用 MS-CDC 捕获带或不带主键的表的更 改 MS-CDC 必须在数据库级别上启用 而且分别适用于各个表 (使用本部分中所述的特定于 Amazon RDS 的存储过程) 您可以通过以下几种方式使用 SQL Server 数据库进行持续复制 (CDC) 使用 sysadmin 角色设置持续复制 (这仅适用于自管理 SQL Server 源 ) 将持续复制设置为不使用 sysadmin 角色 (这仅适用于自管理 SQL Server 源 ) 为 Amazon RDS for SQL Server 数据库实例设置持续复制 使用 sysadmin 角色设置持续复制 对于带主键的表 AWS DMS 可以在源上配置所需的项目 对于不带主键的表 您需要设置 MS-CDC 首先 您必须运行以下命令为数据库启用 MS-CDC 使用分配了 sysadmin 角色的账户 use [DBname] EXEC sys.sp_cdc_enable_db 接下来 运行以下命令来为每个源表启用 MS-CDC EXECUTE = = = NULL; 88

95 将 SQL Server 作为源 有关为特定表设置 MS-CDC 的更多信息 请参阅 SQL Server 文档 在未分配 sysadmin 角色的情况下设置持续复制 您可以为不需要用户账户具有 sysadmin 权限的 SQL Server 数据库源设置持续复制 在不使用 sysadmin 角色的情况下设置 SQL Server 数据库源进行持续复制 1. 使用 SQL Server Management Studio (SSMS) 创建采用密码身份验证的新 SQL Server 账户 在此示例 中 我们使用一个名为 dmstest 的账户 2. 在 SSMS 的 User Mappings (用户映射) 部分中 选择 MSDB 和 MASTER 数据库 (将提供公有权限) 然后为您要使用持续复制的数据库分配 DB_OWNER 角色 3. 打开新帐户的上下文 (右键单击) 菜单 选择 Security (安全性) 然后显式授予 Connect SQL 权限 4. 运行以下授权命令 GRANT SELECT ON FN_DBLOG TO dmstest; GRANT SELECT ON FN_DUMP_DBLOG TO dmstest; GRANT VIEW SERVER STATE TO dmstest; use msdb; GRANT EXECUTE ON MSDB.DBO.SP_STOP_JOB TO dmstest; GRANT EXECUTE ON MSDB.DBO.SP_START_JOB TO dmstest; GRANT SELECT ON MSDB.DBO.BACKUPSET TO dmstest; GRANT SELECT ON MSDB.DBO.BACKUPMEDIAFAMILY TO dmstest; GRANT SELECT ON MSDB.DBO.BACKUPFILE TO dmstest; 5. 在 SSMS 中 打开复制文件夹的上下文 (右键单击) 菜单 然后选择配置分发 按照所有默认步骤操作并 且针对分发配置此 SQL Server 实例 在数据库下创建分发数据库 6. 使用以下过程创建发布 7. 使用您创建的用户账户创建具有作为源终端节点的 SQL Server 的新 AWS DMS 任务 Note 此过程中的步骤仅适用于带主键的表 您仍需要为不带主键的表启用 MS-CDC 为持续复制创建 SQL Server 发布 要将 CDC 与 SQL Server 结合使用 您必须为参与持续复制中的每个表创建发布 为 SQL Server 持续复制创建发布 1. 使用 SYSADMIN 用户账户登录 SSMS 2. 展开 Replication (复制) 3. 右键单击 Local Publications (本地发布) 4. 在 New Publication Wizard (新发布向导) 中 选择 Next (下一步) 5. 选择要在其中创建发布的数据库 6. 选择 Transactional publication (事务性发布) 选择 Next 7. 展开 Tables (表) 选择具有 PK 的表 (也是您要发布的这些表) 选择 Next 8. 您不需要创建筛选器 因此请选择 Next (下一步) 9. 您不需要创建快照代理 因此请选择 Next (下一步) 10. 选择 Security Settings (安全设置) 然后选择 Run under the SQL Server Agent service account (在 SQL Server Agent 服务账户下运行) 确保为发布者连接选择 By impersonating the process account (通 过模拟流程账户) 选择 OK 11. 选择 Next 12. 选择 Create the publication (创建发布) 89

96 将 SQL Server 作为源 13. 采用以下格式提供发布名称 AR_PUBLICATION_000<DBID> 例如 可将发布命名为 AR_PUBLICATION_00018 您还可以在 SQL Server 中使用 DB_ID 函数 有关 DB_ID 函数的更多信息 请参阅 SQL Server 文档 在 Amazon RDS for SQL Server 数据库实例上设置持续复制 Amazon RDS for SQL Server 为 Amazon RDS for SQL Server Enterprise 所有版本 (最高为 SQL Server 2016 SP1) 支持 MS-CDC SQL Server 2016 SP1 的标准版本和更高版本支持 MS-CDC for Amazon RDS for SQL Server 不同于自管理 SQL Server 源 Amazon RDS for SQL Server 不支持 MS-Replication 因此 AWS DMS 需 要对带或不带主键的表使用 MS-CDC Amazon RDS 未授予设置复制项目的 sysadmin 权限 AWS DMS 使用该权限在源 SQL Server 实例中进行 持续更改 您必须在以下过程中使用主用户权限在 Amazon RDS 实例上启用 MS-CDC 在 RDS for SQL Server 数据库实例上启用 MS-CDC 1. 在数据库级别运行以下查询 exec msdb.dbo.rds_cdc_enable_db '<DB instance name>' 2. 对于具有主键的每个表 运行以下查询以启用 MS-CDC exec = = = = 1 GO 对于具有唯一键但没有主键的每个表 运行以下查询以启用 MS-CDC exec = = = = = 1 GO 对于既没有主键又没有唯一键的每个表 运行以下查询以启用 MS-CDC exec = = = NULL GO 3. 使用以下命令设置要在源上可用的更改的保留周期 EXEC = 'capture',@pollinginterval = 按秒计 上述命令保留更改一天 AWS 建议在结合使用 MS-CDC 和 AWS DMS 时使用为期一天的保留周期 90

97 将 SQL Server 作为源 支持的压缩方法 下表显示了 AWS DMS 在每个 SQL Server 版本中支持的压缩方法 SQL Server 版本 行/页压缩 (在分区级别) Vardecimal 存储格式 2005 否 否 2008 是 否 2012 年 是 否 2014 是 否 Note 不支持稀疏列和列式结构压缩 使用 SQL Server AlwaysOn 可用性组 SQL Server AlwaysOn 可用性组配有高可用性和灾难恢复解决方案 提供数据库镜像的企业级替代功能 要将 AlwaysOn 可用性组作为 AWS DMS 中的源 请执行以下操作 在您的可用性副本中的所有 SQL Server 实例上启用分发选项 在 AWS DMS 控制台中 打开 SQL Server 源数据库设置 对于服务器名称 请指定为可用性组侦听器配 置的域名服务 (DNS) 名称或 IP 地址 在首次启动 AWS DMS 任务时 启动所需的时间可能比平时长 因为可用性组服务器需要复制创建的表项 目 将 SQL Server 数据库配置为 AWS DMS 复制源 您可以将 SQL Server 数据库配置为 AWS DMS (AWS DMS) 复制源 如需最完整地对更改进行复制 我们 建议您使用 SQL Server 的 Enterprise Standard 或 Developer 版 必须使用这些版本之一 因为只有这些 版本才包含 MS-Replication (EE SE) 和 MS-CDC (EE DEV) 源 SQL Server 还必须配置为完整备份 此 外 AWS DMS 还必须使用某个用户 (SQL Server 实例登录名) 进行连接 该用户在您连接到的 SQL Server 数据库上具有 sysadmin 固定服务器角色 您可以在下面找到有关将 SQL Server 配置为 AWS DMS 复制源的信息 将 SQL Server 作为 AWS DMS 源时的额外连接属性 您可以使用额外的连接属性配置 SQL Server 源 在创建源终端节点时 您可以指定这些设置 应将多个额 外连接属性设置用分号隔开 下表显示了将 SQL Server 作为源时可以使用的额外连接属性 名称 描述 safeguardpolicy 为实现最佳性能 AWS DMS 尝试从活动事务日志 (TLOG) 捕 获所有未读取的更改 不过 有时由于截断 有效的 TLOG 可 能未包含所有未读取的更改 在出现此情况时 AWS DMS 将 访问备份日志以捕获缺少的更改 为了最大程度地减小访问备 份日志的需求 AWS DMS 使用下列方法之一阻止截断 91

98 将 SQL Server 作为源 名称 描述 1. 在数据库中启动事务 这是默认方法 在使用该方法 时 AWS DMS 将通过模仿数据库中的事务来阻止 TLOG 截 断 只要打开此类事务 事务开始后出现的更改就会被截断 如果您需要在数据库中启用 Microsoft Replication 则必须选择 该方法 2. 在单个任务中独占使用 sp_repldone 在使用该方法 时 AWS DMS 读取更改 然后使用 sp_repldone 将 TLOG 事 务标记为可以截断 虽然该方法不涉及任何事务性活动 但它 仅可在 Microsoft Replication 未运行时使用 此外 在使用该 方法时 仅一个 AWS DMS 任务可在任意给定时间访问数据 库 因此 如果您需要对同一数据库运行并行 AWS DMS 数据 库 请使用默认方法 默认值 RELY_ON_SQL_SERVER_REPLICATION_AGENT 有效值 EXCLUSIVE_AUTOMATIC_TRUNCATION RELY_ON_SQL_SERVER_REPLIC 示例 safeguardpolicy= RELY_ON_SQL_SERVER_REPLICATION_AGENT 当此参数设置为 Y 时 AWS DMS 在持续复制期间只从事务日 志备份中读取更改 而不从活动事务日志文件中读取 将此参 数设置为 Y 会使持续复制增加一些源延迟 但它让您能够在完 全加载和持续复制任务期间控制活动事务日志文件增长 readbackuponly 有效值 N 或 Y. 默认为 N 示例 readbackuponly=y SQL Server 的源数据类型 将 SQL Server 作为 AWS DMS 源的数据迁移支持大多数 SQL Server 数据类型 下表显示了使用 AWS DMS 时支持的 SQL Server 源数据类型以及来自 AWS DMS 数据类型的默认映射 有关如何查看目标中映射的数据类型的信息 请参阅有关所使用的目标终端节点的部分 有关 AWS DMS 数据类型的其他信息 请参阅AWS Database Migration Service 的数据类型 (p. 257) SQL Server 数据类型 AWS DMS 数据类型 BIGINT INT8 BIT BOOLEAN DECIMAL NUMERIC INT INT4 MONEY NUMERIC NUMERIC (p,s) NUMERIC SMALLINT INT2 SMALLMONEY NUMERIC 92

99 将 SQL Server 作为源 SQL Server 数据类型 AWS DMS 数据类型 TINYINT UINT1 REAL REAL4 FLOAT REAL8 DATETIME DATETIME DATETIME2 (SQL Server 2008 和更高版本) DATETIME SMALLDATETIME DATETIME DATE DATE TIME TIME DATETIMEOFFSET WSTRING CHAR STRING VARCHAR STRING VARCHAR (max) CLOB TEXT 要将此数据类型用于 AWS DMS 您必须允许对特 定任务使用 CLOB 数据类型 对于 SQL Server 表 AWS DMS 将为 UPDATE 语 句更新目标中的 LOB 列 但不更改 SQL Server 中 的 LOB 列的值 在 CDC 期间 AWS DMS 仅在包含主键的表中支 持 CLOB 数据类型 NCHAR WSTRING NVARCHAR (length) WSTRING NVARCHAR (max) NCLOB NTEXT 要将此数据类型用于 AWS DMS 您必须允许对特 定任务使用 NCLOB 数据类型 对于 SQL Server 表 AWS DMS 将为 UPDATE 语 句更新目标中的 LOB 列 但不更改 SQL Server 中 的 LOB 列的值 在 CDC 期间 AWS DMS 仅在包含主键的表中支 持 CLOB 数据类型 BINARY BYTES VARBINARY BYTES 93

100 将 SQL Server 作为源 SQL Server 数据类型 AWS DMS 数据类型 VARBINARY (max) BLOB IMAGE 对于 SQL Server 表 AWS DMS 将为 UPDATE 语 句更新目标中的 LOB 列 但不更改 SQL Server 中 的 LOB 列的值 要将此数据类型用于 AWS DMS 您必须允许对特 定任务使用 BLOB 数据类型 AWS DMS 仅在包含主键的表中支持 BLOB 数据类 型 TIMESTAMP BYTES UNIQUEIDENTIFIER STRING HIERARCHYID 在复制到 SQL Server 目标终端节点时 使用 HIERARCHYID 在复制到所有其他目标终端节点时 使用 WSTRING (250) XML NCLOB 对于 SQL Server 表 AWS DMS 将为 UPDATE 语 句更新目标中的 LOB 列 但不更改 SQL Server 中 的 LOB 列的值 要将此数据类型用于 AWS DMS 您必须允许对特 定任务使用 NCLOB 数据类型 在 CDC 期间 AWS DMS 仅在包含主键的表中支 持 NCLOB 数据类型 GEOMETRY 在复制到支持此数据类型的目标终端节点时 使用 GEOMETRY 在复制到不支持此数据类型的目标终端节点时 使 用 CLOB GEOGRAPHY 在复制到支持此数据类型的目标终端节点时 使用 GEOGRAPHY 在复制到不支持此数据类型的目标终端节点时 使 用 CLOB AWS DMS 不支持包含以下数据类型的字段的表 CURSOR SQL_VARIANT TABLE 94

101 将 Azure SQL 数据库作为源 Note 根据用户定义的数据类型的基类型来支持这些类型 例如 基于 DATETIME 的用户定义的数据类型 将作为 DATETIME 数据类型进行处理 将 Microsoft Azure SQL 数据库作为 AWS DMS 源 在使用 AWS DMS 时 您可以将 Azure SQL 数据库作为源 其方式与 Microsoft SQL Server 大致相 同 AWS DMS 支持作为源的数据库版本列表与在本地或 Amazon EC2 实例上运行的 SQL Server 支持的数 据库版本列表相同 有关更多信息 请参阅 将 Microsoft SQL Server 数据库作为 AWS DMS 源 (p. 86) Note AWS DMS 在 Azure SQL 数据库中不支持更改数据捕获 (CDC) 操作 将 PostgreSQL 数据库作为 AWS DMS 源 您可以使用 AWS DMS 从一个或多个 PostgreSQL 数据库中迁移数据 将 PostgreSQL 数据库作为源时 您可以将数据迁移到另一个 PostgreSQL 数据库或其他支持的数据库 AWS DMS 支持将 PostgreSQL 9.4 版及更高版本的数据库 (本地数据库 EC2 实例上的数据库以及 Amazon RDS 数据库实例上的数据库) 作为 源 Note PostgreSQL 版本 10.x 及更高版本包含对以前的版本中的函数名称和文件夹名称的大量更改 如果 您使用 PostgreSQL 版本 10.x 或更高版本作为 AWS DMS 的源 请参阅主题 将 PostgreSQL 版本 10.x 及更高版本用作 AWS DMS 的源 (p. 102) 以了解如何准备要作为 AWS DMS 的源的数据库 您可以使用 SSL 加密 PostgreSQL 终端节点与复制实例之间的连接 有关将 SSL 用于 PostgreSQL 终端节 点的更多信息 请参阅将 SSL 用于 AWS Database Migration Service (p. 41) 对于从 PostgreSQL 数据库到 AWS 上的 PostgreSQL 数据库的同构迁移 会出现以下情况 源上的 JSONB 列迁移到目标上的 JSONB 列 JSON 列作为目标上的 JSON 列迁移 HSTORE 列作为目标上的 HSTORE 列迁移 对于将 PostgreSQL 作为源并将其他数据库引擎作为目标的异构迁移 情况有所不同 在这种情况 下 JSONB JSON 和 HSTORE 列将转换为 AWS DMS 中间类型的 NCLOB 然后转换为目标上的对应 NCLOB 列类型 在这种情况下 AWS DMS 会将 JSONB 数据视为 LOB 列 在阶段的完全加载阶段 目标 列必须可为 null AWS DMS 对具有主键的 PostgreSQL 表支持更改数据捕获 (CDC) 如果某个表没有主键 提前写入日志 (WAL) 将不包含数据库行的前映像并且 AWS DMS 无法更新该表 在数据库实例配置为使用逻辑复制时 AWS DMS 在 Amazon RDS PostgreSQL 数据库上支持 CDC Amazon RDS 支持 PostgreSQL 数据库实例版本 和更高版本 和 和更高版本的逻辑复 制 有关使用 PostgreSQL 数据库和 AWS DMS 的其他详细信息 请参阅以下章节 主题 使用 AWS DMS 从 PostgreSQL 迁移到 PostgreSQL (p. 96) 将 PostgreSQL 数据库作为 AWS DMS 源的先决条件 (p. 98) 将 PostgreSQL 数据库作为 AWS DMS 源时的安全要求 (p. 98) 将 PostgreSQL 数据库作为 AWS DMS 源的限制 (p. 98) 95

102 将 PostgreSQL 作为源 设置将 Amazon RDS PostgreSQL 数据库实例作为源 (p. 99) 从 PostgreSQL 源数据库中删除 AWS DMS 项目 (p. 101) 将 PostgreSQL 数据库作为 AWS DMS 源时的额外配置设置 (p. 101) 将 PostgreSQL 版本 10.x 及更高版本用作 AWS DMS 的源 (p. 102) 将 PostgreSQL 作为 AWS DMS 源时的额外连接属性 (p. 102) PostgreSQL 的源数据类型 (p. 103) 使用 AWS DMS 从 PostgreSQL 迁移到 PostgreSQL 对于异构迁移 在您从 PostgreSQL 之外的数据库引擎迁移到 PostgreSQL 数据库时 通常 AWS DMS 是可 以利用的最佳工具 但是 对于同构迁移 当您从 PostgreSQL 数据库迁移到 PostgreSQL 数据库时 本机 工具效率更高 我们建议您在以下条件下使用本机 PostgreSQL 数据库迁移工具 例如 pg_dump 您有一个从源 PostgreSQL 数据库向目标 PostgreSQL 数据库的同构迁移 您正在迁移整个数据库 利用这些本机工具 可以在迁移您的数据时最大程度地减少停机时间 pg_dump 实用程序使用 COPY 命令创建 PostgreSQL 数据库的架构和数据转储 pg_dump 生成的转储脚本 将数据加载到一个同名的数据库中 然后重新创建表 索引和外键 您可以使用 pg_restore 命令和 -d 参 数将数据恢复到具有不同的名称的数据库 有关将 PostgreSQL 数据库导入 Amazon RDS for PostgreSQL 或 Amazon Aurora (PostgreSQL) 的更多信息 请参阅 PostgreSQL.Procedural.Importing.html 使用 DMS 将数据从 PostgreSQL 迁移到 PostgreSQL 举例而言 AWS DMS 可以将数据从本地的源 PostgreSQL 数据库迁移到目标 Amazon RDS for PostgreSQL 或 Amazon Aurora (PostgreSQL) 实例 核心或基本 PostgreSQL 数据类型通常可以成功迁移 源数据库上支持但目标数据库上不支持的数据类型可能无法成功迁移 如果数据类型未知 AWS DMS 会将 一些数据类型作为字符串流式处理 对于某些数据类型 例如 XML 和 JSON 如果文件较小则可以成功迁 移 但如果是较大的文档 迁移会失败 下表显示了源 PostgreSQL 数据类型以及是否可以成功迁移这些数据类型 数据类型 成功迁移 INTEGER X SMALLINT X BIGINT X 将部分迁移 不迁移 注释 NUMERIC/DECIMAL(p,s) X 0<p<39 且 0<s 时 NUMERIC/DECIMAL X p>38 或 p=s=0 REAL X DOUBLE X SMALLSERIAL X 96

103 将 PostgreSQL 作为源 数据类型 成功迁移 SERIAL X BIGSERIAL X MONEY X CHAR CHAR (n) 将部分迁移 注释 X 未指定精度 X 未指定精度 X VARCHAR VARCHAR (n) X TEXT X BYTEA X TIMESTAMP X TIMESTAMP(Z) X DATE X TIME X TIME (z) X INTERVAL X BOOLEAN 不迁移 X ENUM X CIDR X INET X MACADDR X TSVECTOR X TSQUERY X XML X POINT X LINE X LSEG X BOX X 路径 X POLYGON X CIRCLE X JSON X 97

104 将 PostgreSQL 作为源 数据类型 成功迁移 将部分迁移 不迁移 注释 ARRAY X COMPOSITE X RANGE X 将 PostgreSQL 数据库作为 AWS DMS 源的先决条件 要将 PostgreSQL 数据库作为 AWS DMS 源 应执行以下操作 使用 PostgreSQL 数据库版本 9.4.x 或更高版本 向为 PostgreSQL 源数据库指定的用户账户授予超级用户权限 将 AWS DMS 复制服务器的 IP 地址添加到 pg_hba.conf 配置文件中 在 postgresql.conf 配置文件中设置以下参数和值 Set wal_level = logical 将 max_replication_slots 设置为一个大于 1 的值 max_replication_slots 值应根据您需要运行的任务数进行设置 例如 要运行五个任务 您需要 设置至少五个时隙 在任务启动时时隙立即打开 即使任务不再运行仍保持打开 您需要手动删除打开 的时隙 将 max_wal_senders 设置为一个大于 1 的值 max_wal_senders 参数用于设置可以运行的并发任务数 Set wal_sender_timeout =0 wal_sender_timeout 参数会终止处于不活动状态的时间超过指定毫秒数的复制连接 默认值为 60 秒 但我们建议您将该参数设置为零 这样会禁用超时机制 PostgreSQL 版本 9.6 和更高版本中的参数 idle_in_transaction_session_timeout 使您能够导致 空闲事务超时并失败 在 AWS DMS 引擎再次使用之前 有些 AWS DMS 事务会空闲一段时间 当您使 用 AWS DMS 时 不要结束空闲事务 将 PostgreSQL 数据库作为 AWS DMS 源时的安全要求 使用 PostgreSQL 作为源的唯一安全要求是 指定的用户账户必须是 PostgreSQL 数据库中的注册用户 将 PostgreSQL 数据库作为 AWS DMS 源的限制 将 PostgreSQL 用作 AWS DMS 的源时 以下限制适用 捕获的表必须具有一个主键 如果表没有主键 AWS DMS 将忽略该表的 DELETE 和 UPDATE 记录操 作 不支持包含时区类型列的时间戳 AWS DMS 忽略尝试更新主键段的操作 在这些情况下 目标会将更新标识为未更新任何行的更新 但 是 由于更新 PostgreSQL 中的主键的结果是不可预测的 不会将任何记录写入异常表 AWS DMS 不支持 Start Process Changes from Timestamp 运行选项 AWS DMS 在 Amazon RDS for PostgreSQL 上支持完全加载和更改处理 有关如何准备 PostgreSQL 数 据库实例以及将其设置为使用 CDC 的信息 请参阅设置将 Amazon RDS PostgreSQL 数据库实例作为 源 (p. 99) 如果复制多个名称相同但具有不同大小写的表 (例如 table1 TABLE1 和 Table1) 可能会导致无法预测 的行为 因此 AWS DMS 不支持该操作 98

105 将 PostgreSQL 作为源 AWS DMS 支持表的 CREATE ALTER 和 DROP DDL 语句的更改处理 除非这些表保存在内部函数 过 程主体块或其他嵌套结构中 例如 不捕获以下更改 CREATE OR REPLACE FUNCTION attu.create_distributors1() RETURNS void LANGUAGE plpgsql AS $$ BEGIN create table attu.distributors1(did serial PRIMARY KEY,name varchar(40) NOT NULL); END; $$; AWS DMS 不支持 TRUNCATE 操作的更改处理 OID LOB 数据类型不会迁移到目标 如果您的源是本地 PostgreSQL 数据库或 Amazon EC2 实例上的 PostgreSQL 数据库 请确保源终端节点 中已安装 test_decoding 输出插件 (位于 Postgres contrib 包中) 有关测试解码插件的更多信息 请参 阅 PostgreSQL 文档 AWS DMS 不支持更改处理以设置列默认值 (在 ALTER TABLE 语句中使用 ALTER COLUMN SET DEFAULT 子句) AWS DMS 不支持更改处理以设置列的可为 null 值性 (在 ALTER TABLE 语句中使用 ALTER COLUMN [SET DROP] NOT NULL 子句) AWS DMS 不支持复制分区表 检测到分区表时 将显示以下内容 终端节点报告列出父表和子表 AWS DMS 在目标上创建常规表 这些表具有与选定表相同的属性 如果源数据库中的父表具有与子表相同的主键值 则会产生 重复的键 错误 Note 要将分区表从 PostgreSQL 源复制到 PostgreSQL 目标 您必须在目标上手动创建父表和子表 然后 您可以定义单独的任务来向这些表进行复制 在这种情况下 您可以将任务配置设置为 Truncate before loading 设置将 Amazon RDS PostgreSQL 数据库实例作为源 您可以将 Amazon RDS for PostgreSQL 数据库实例或只读副本用作 AWS DMS 的源 数据库实例可用于完 全加载和 CDC (持续复制) 只读副本只能用于完全加载任务 而不能用于 CDC 您可以将 PostgreSQL 数据库实例的 AWS 主用户账户作为 AWS DMS 的 PostgreSQL 源终端节点的用户账 户 主用户账户具有所需角色 允许它设置更改数据捕获 (CDC) 如果您使用主用户账户之外的账户 该账 户必须具有 rds_superuser 角色和 rds_replication 角色 rds_replication 角色可授予管理逻辑槽并使用逻辑槽 流式处理数据的权限 如果您没有为数据库实例使用主用户账户 则必须从主用户账户为您要使用的账户创建多个对象 有 关创建所需对象的信息 请参阅在不使用主用户账户的情况下迁移 Amazon RDS for PostgreSQL 数据 库 (p. 100) 将 CDC 用于 RDS 的 PostgreSQL 数据库实例 在 Amazon RDS PostgreSQL 数据库实例的数据库迁移期间 您可以使用 PostgreSQL 的本机逻辑复制功能 启用 CDC 这种方法可减少停机时间 并确保目标数据库与源 PostgreSQL 数据库同步 Amazon RDS 支 持 PostgreSQL 数据库实例版本 和更高版本 和 和更高版本的逻辑复制 Note Amazon RDS for PostgreSQL 只读副本不能用于 CDC (持续复制) 99

106 将 PostgreSQL 作为源 要为 RDS PostgreSQL 数据库实例启用逻辑复制 必须执行以下操作 通常 为 PostgreSQL 数据库实例使用 AWS 主用户账户作为 PostgreSQL 源终端节点的用户账户 主 用户账户具有允许它设置 CDC 所需的角色 如果您使用主用户账户之外的账户 您必须从要使用的账 户的主账户创建多个对象 有关更多信息 请参阅 在不使用主用户账户的情况下迁移 Amazon RDS for PostgreSQL 数据库 (p. 100) 在数据库参数组中将 rds.logical_replication 参数设置为 1 这是一个静态 参数 该参数要求重启数据库实例才能生效 在应用该参数期间 AWS DMS 设置 wal_level max_wal_senders max_replication_slots 和 max_connections 参数 这些参 数更改可能会增加 WAL 生成 因此 您只应在使用逻辑槽时设置 rds.logical_replication 参数 最佳做法是将 wal_sender_timeout 参数设置为 0 将该参数设置为 0 可防止 PostgreSQL 终止处于不 活动状态超过指定超时时间的复制连接 在 AWS DMS 迁移数据时 复制连接所需的持续时间超过指定的 超时时间 在不使用主用户账户的情况下迁移 Amazon RDS for PostgreSQL 数据库 如果您不使用作为源的 Amazon RDS PostgreSQL 数据库实例的主用户账户 您需要创建多个对象来捕获 数据定义语言 (DDL) 事件 您可以在主用户账户之外的账户中创建这些对象 然后在主用户账户中创建触发 器 Note 如果在源终端节点上将 captureddl 参数设置为 N 您不需要在源数据库上创建以下表和触发器 使用以下过程创建这些对象 在该过程中 主账户以外的用户账户称为 NoPriv 账户 创建对象 1. 选择要在其中创建对象的架构 默认架构为 public 确保架构存在并且可由 NoPriv 账户访问 2. 使用 NoPriv 账户登录到 PostgreSQL 数据库实例 3. 运行以下命令以创建表 awsdms_ddl_audit 并将以下代码中的 <objects_schema> 替换为要使用 的架构名称 create table <objects_schema>.awsdms_ddl_audit ( c_key bigserial primary key, c_time timestamp, -- Informational c_user varchar(64), -- Informational: current_user c_txn varchar(16), -- Informational: current transaction c_tag varchar(24), -- Either 'CREATE TABLE' or 'ALTER TABLE' or 'DROP TABLE' c_oid integer, -- For future use - TG_OBJECTID c_name varchar(64), -- For future use - TG_OBJECTNAME c_schema varchar(64), -- For future use - TG_SCHEMANAME. For now - holds current_schema c_ddlqry text -- The DDL query associated with the current DDL event ) 4. 运行以下命令以创建函数 awsdms_intercept_ddl 并将以下代码中的 <objects_schema> 替换为 要使用的架构名称 CREATE OR REPLACE FUNCTION <objects_schema>.awsdms_intercept_ddl() RETURNS event_trigger LANGUAGE plpgsql SECURITY DEFINER 100

107 将 PostgreSQL 作为源 AS $$ declare _qry text; BEGIN if (tg_tag='create TABLE' or tg_tag='alter TABLE' or tg_tag='drop TABLE') then SELECT current_query() into _qry; insert into <objects_schema>.awsdms_ddl_audit values ( default,current_timestamp,current_user,cast(txid_current()as varchar(16)),tg_tag,0,'',current_schema,_qry ); delete from <objects_schema>.awsdms_ddl_audit; end if; END; $$; 5. 注销 NoPriv 账户并使用分配了 rds_superuser 角色的账户登录 6. 运行以下命令以创建事件触发器 awsdms_intercept_ddl CREATE EVENT TRIGGER awsdms_intercept_ddl ON ddl_command_end EXECUTE PROCEDURE <objects_schema>.awsdms_intercept_ddl(); 在完成前面的过程后 您可以使用 NoPriv 账户创建 AWS DMS 源终端节点 从 PostgreSQL 源数据库中删除 AWS DMS 项目 要捕获 DDL 事件 在开始执行迁移任务时 AWS DMS 在 PostgreSQL 数据库中创建各种不 同的项目 完成任务后 您可能需要删除这些项目 要删除项目 请发布以下语句 (按显示顺 序) AmazonRDSMigration 是在其中创建项目的架构 drop event trigger awsdms_intercept_ddl; 事件触发器不属于特定架构 drop function AmazonRDSMigration.awsdms_intercept_ddl() drop table AmazonRDSMigration.awsdms_ddl_audit drop schema AmazonRDSMigration Note 在删除架构时应尤为谨慎 请勿删除正在使用的架构 特别是非公有的操作架构 将 PostgreSQL 数据库作为 AWS DMS 源时的额外配置设置 在从 PostgreSQL 数据库迁移数据时 您可以使用两种方法来添加额外配置设置 您可以将值添加到额外连接属性来捕获 DDL 事件 以及指定在其中创建操作 DDL 数据库项目的架构 有 关更多信息 请参阅 将 PostgreSQL 作为 AWS DMS 源时的额外连接属性 (p. 102) 您可以覆盖连接字符串参数 如果您需要执行以下任一操作 请选择该选项 指定内部 AWS DMS 参数 此类参数很少需要 因此不在用户界面中公开 为特定数据库客户端指定传递 (passthru) 值 AWS DMS 在传递给数据库客户端的连接字符串中包括传 递参数 101

108 将 PostgreSQL 作为源 将 PostgreSQL 版本 10.x 及更高版本用作 AWS DMS 的源 PostgreSQL 版本 10.x 及更高版本包含对以前的 PostgreSQL 版本中的函数名称和文件夹名称的大量更改 这些更改使某些迁移操作无法向后兼容 由于大多数名称更改是表面的 AWS DMS 已创建让 AWS DMS 与 PostgreSQL 版本 10.x 及更高版本结合 使用的包装函数 包装函数的优先级高于 pg_catalog 中的函数 此外 我们确保了现有架构的架构可见性 不会更改 从而不会覆盖任何其他系统目录函数 (如用户定义的函数) 要在执行任何迁移任务前使用这些包装函数 请对源 PostgreSQL 数据库运行以下 SQL 代码 使用用于目标 数据库的同一 AWS DMS 用户账户 BEGIN; CREATE SCHEMA IF NOT EXISTS fnrenames; CREATE OR REPLACE FUNCTION fnrenames.pg_switch_xlog() RETURNS pg_lsn AS $$ SELECT pg_switch_wal(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_xlog_replay_pause() RETURNS VOID AS $$ SELECT pg_wal_replay_pause(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_xlog_replay_resume() RETURNS VOID AS $$ SELECT pg_wal_replay_resume(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_current_xlog_location() RETURNS pg_lsn AS $$ SELECT pg_current_wal_lsn(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_is_xlog_replay_paused() RETURNS boolean AS $$ SELECT pg_is_wal_replay_paused(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_xlogfile_name(lsn pg_lsn) RETURNS TEXT AS $$ SELECT pg_walfile_name(lsn); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_last_xlog_replay_location() RETURNS pg_lsn AS $$ SELECT pg_last_wal_replay_lsn(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_last_xlog_receive_location() RETURNS pg_lsn AS $$ SELECT pg_last_wal_receive_lsn(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_current_xlog_flush_location() RETURNS pg_lsn AS $$ SELECT pg_current_wal_flush_lsn(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_current_xlog_insert_location() RETURNS pg_lsn AS $ $ SELECT pg_current_wal_insert_lsn(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_xlog_location_diff(lsn1 pg_lsn, lsn2 pg_lsn) RETURNS NUMERIC AS $$ SELECT pg_wal_lsn_diff(lsn1, lsn2); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_xlogfile_name_offset(lsn pg_lsn, OUT TEXT, OUT INTEGER) AS $$ SELECT pg_walfile_name_offset(lsn); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_create_logical_replication_slot(slot_name name, plugin name, temporary BOOLEAN DEFAULT FALSE, OUT slot_name name, OUT xlog_position pg_lsn) RETURNS RECORD AS $$ SELECT slot_name::name, lsn::pg_lsn FROM pg_catalog.pg_create_logical_replication_slot(slot_name, plugin, temporary); $$ LANGUAGE SQL; ALTER <user name> USER SET search_path = fnrenames, pg_catalog, "$user", public; -- DROP SCHEMA fnrenames CASCADE; -- ALTER USER PG_User SET search_path TO DEFAULT; COMMIT; 将 PostgreSQL 作为 AWS DMS 源时的额外连接属性 您可以使用额外的连接属性配置 PostgreSQL 源 在创建源终端节点时 您可以指定这些设置 应将多个额 外连接属性设置用分号隔开 下表显示了将 PostgreSQL 作为 AWS DMS 源时可以使用的额外连接属性 102

109 将 PostgreSQL 作为源 名称 描述 captureddl 为捕获 DDL 事件 在任务开始时 AWS DMS 在 PostgreSQL 数据库中创建各种项目 稍后可以删除这些项目 如从 PostgreSQL 源数据库中删除 AWS DMS 项目 (p. 101)中所 述 如果此值设置为 N 您无需在源数据库上创建表或触发器 有关更多信息 请参阅 在不使用主用户账户的情况下迁移 Amazon RDS for PostgreSQL 数据库 (p. 100) 捕获流式处理的 DDL 事件 默认值 Y 有效值 Y/N 示例 captureddls=y 在其中创建操作 DDL 数据库项目的架构 ddlartifactsschema 默认值 public 有效值 字符串 示例 ddlartifactsschema=xyzddlschema failtasksonlobtruncation 在设置为 true 时 如果 LOB 列的实际大小大于指定的 LobMaxSize 则此值将导致任务失败 如果任务设置为 受限 LOB 模式 并且该选项设置为 true 任务 将失败 而不是截断 LOB 数据 默认值 false 有效值 布尔值 示例 failtasksonlobtruncation=true 设置 PostgreSQL 实例的客户端语句超时 (以秒为单位) 默认 值为 60 秒 executetimeout 示例 executetimeout=100 PostgreSQL 的源数据类型 下表显示了使用 AWS DMS 时支持的 PostgreSQL 源数据类型以及与 AWS DMS 数据类型的默认映射 有关如何查看目标中映射的数据类型的信息 请参阅有关所使用的目标终端节点的部分 有关 AWS DMS 数据类型的其他信息 请参阅AWS Database Migration Service 的数据类型 (p. 257) PostgreSQL 数据类型 AWS DMS 数据类型 INTEGER INT4 SMALLINT INT2 103

110 将 PostgreSQL 作为源 PostgreSQL 数据类型 AWS DMS 数据类型 BIGINT INT8 NUMERIC (p,s) 如果精度介于 0 和 38 之间 则使用 NUMERIC 如果精度为 39 或更大的值 则使用 STRING DECIMAL(P,S) 如果精度介于 0 和 38 之间 则使用 NUMERIC 如果精度为 39 或更大的值 则使用 STRING REAL REAL4 DOUBLE REAL8 SMALLSERIAL INT2 SERIAL INT4 BIGSERIAL INT8 MONEY NUMERIC(38,4) 注意 MONEY 数据类型将映射到 SQL Server 中的 FLOAT CHAR WSTRING (1) CHAR(N) WSTRING (n) VARCHAR(N) WSTRING (n) TEXT NCLOB BYTEA BLOB TIMESTAMP TIMESTAMP TIMESTAMP (z) TIMESTAMP 带时区的 TIMESTAMP 不支持 DATE DATE TIME TIME TIME (z) TIME INTERVAL STRING (128) 1 YEAR 2 MONTHS 3 DAYS 4 HOURS 5 MINUTES 6 SECONDS BOOLEAN CHAR (5) false 或 true ENUM STRING (64) CIDR STRING (50) INET STRING (50) MACADDR STRING (18) BIT (n) STRING (n) 104

111 将 MySQL 作为源 PostgreSQL 数据类型 AWS DMS 数据类型 BIT VARYING (n) STRING (n) UUID STRING TSVECTOR CLOB TSQUERY CLOB XML CLOB POINT STRING (255) "(x,y)" LINE STRING (255) "(x,y,z)" LSEG STRING (255) "((x1,y1),(x2,y2))" BOX STRING (255) "((x1,y1),(x2,y2))" 路径 CLOB "((x1,y1),(xn,yn))" POLYGON CLOB "((x1,y1),(xn,yn))" CIRCLE STRING (255) "(x,y),r" JSON NCLOB JSONB NCLOB ARRAY NCLOB COMPOSITE NCLOB HSTORE NCLOB INT4RANGE STRING (255) INT8RANGE STRING (255) NUMRANGE STRING (255) STRRANGE STRING (255) 将与 MySQL 兼容的数据库作为 AWS DMS 源 您可以使用 AWS Database Migration Service 从任何与 MySQL 兼容的数据库 (MySQL MariaDB 或 Amazon Aurora MySQL) 中迁移数据 本地支持 MySQL 版本 和 5.7 以及 MariaDB 和 Amazon Aurora MySQL AWS DMS 也支持作为源的所有 AWS 托管 MySQL 数据库 (Amazon RDS for MySQL Amazon RDS for MariaDB Amazon Aurora MySQL) 您可以使用 SSL 来加密 MySQL 兼容终端节点与复制实例之间的连接 有关将 SSL 用于 MySQL 兼容终端 节点的更多信息 请参阅将 SSL 用于 AWS Database Migration Service (p. 41) 在以下各节中 术语 自管理 适用于在本地安装或在 Amazon EC2 上安装的任何数据库 术语 Amazon 托 管 适用于 Amazon RDS Amazon Aurora 或 Amazon S3 上的任何数据库 有关使用与 MySQL 兼容的数据库和 AWS DMS 的其他详细信息 请参阅以下章节 主题 使用 AWS DMS 从 MySQL 迁移到 MySQL (p. 106) 105

112 将 MySQL 作为源 将与 MySQL 兼容的任何数据库用作 AWS DMS 的源 (p. 107) 将与 MySQL 兼容的自管理数据库作为 AWS DMS 的源 (p. 108) 将与 MySQL 兼容的 Amazon 托管数据库用作 AWS DMS 的源 (p. 109) 将 MySQL 数据库作为 AWS DMS 源的限制 (p. 109) 将 MySQL 作为 AWS DMS 源时的额外连接属性 (p. 110) MySQL 的源数据类型 (p. 110) 使用 AWS DMS 从 MySQL 迁移到 MySQL 对于异构迁移 从 MySQL 之外的数据库引擎迁移到 MySQL 数据库时 通常 AWS DMS 是可以利用的最佳 工具 但是 对于同构迁移 当您从 MySQL 数据库迁移到 MySQL 数据库时 本机工具效率更高 我们建议您在以下条件下使用本机 MySQL 数据库迁移工具 例如 mysqldump 您有一个从源 MySQL 数据库向目标 MySQL 数据库的同构迁移 您正在迁移整个数据库 利用这些本机工具 可以在迁移您的数据时最大程度地减少停机时间 您可以将数据从现有 MySQL 或 MariaDB 数据库导入到 Amazon RDS MySQL 或 MariaDB 数据库实例 为 此 请使用 mysqldump 复制数据库 然后通过管道将其直接传输到 Amazon RDS MySQL 或 MariaDB 数据 库实例 mysqldump 命令行实用工具通常用于创建备份以及将数据从一个 MySQL 或 MariaDB 服务器传输 到另一个 MySQL 或 MariaDB 服务器 该实用工具包含在 MySQL 和 MariaDB 客户端软件中 有关将 MySQL 数据库导入 Amazon RDS for MySQL 或 Amazon Aurora (MySQL) 的更多信息 请参阅将数 据导入 MySQL 数据库实例和将数据从 MySQL 或 MariaDB 数据库导入到 Amazon RDS MySQL 或 MariaDB 数据库实例 使用 AWS DMS 将数据从 MySQL 迁移到 MySQL 举例而言 AWS DMS 可以将数据从本地的源 MySQL 数据库迁移到目标 Amazon RDS for MySQL 或 Amazon Aurora (MySQL) 实例 核心或基本 MySQL 数据类型通常可以成功迁移 源数据库上支持但目标数据库上不支持的数据类型可能无法成功迁移 如果数据类型未知 AWS DMS 会将 一些数据类型作为字符串流式处理 对于某些数据类型 例如 XML 和 JSON 如果文件较小则可以成功迁 移 但如果是较大的文档 迁移会失败 下表显示了源 MySQL 数据类型以及是否可以成功迁移这些数据类型 数据类型 成功迁移 INT X BIGINT X MEDIUMINT X TINYINT X DECIMAL (p,s) X BINARY X BIT (M) X 将部分迁移 106 不迁移 注释

113 将 MySQL 作为源 数据类型 成功迁移 BLOB X LONGBLOB X MEDIUMBLOB X TINYBLOB X DATE X DATETIME X TIME 将部分迁移 不迁移 注释 X TIMESTAMP X YEAR X DOUBLE X FLOAT X VARCHAR(N) X VARBINARY(N) X CHAR(N) X TEXT X LONGTEXT X MEDIUMTEXT X TINYTEXT X GEOMETRY X POINT X LINESTRING X POLYGON X MULTILINESTRING X MULTIPOLYGON X GEOMETRYCOLLECTION X ENUM X SET X 将与 MySQL 兼容的任何数据库用作 AWS DMS 的源 在开始将 MySQL 数据库用作 AWS DMS 的源之前 请确保满足以下先决条件 这些先决条件适用于自管理 源或 Amazon 托管源 您必须拥有具有复制管理员角色的 AWS DMS 的账户 该角色需要以下权限 107

114 将 MySQL 作为源 REPLICATION CLIENT 仅更改数据捕获 (CDC) 任务需要此权限 换而言之 full-load-only 任务不需要 此权限 REPLICATION SLAVE 仅更改数据捕获 (CDC) 任务需要此权限 换而言之 full-load-only 任务不需要此 权限 SUPER - 仅 MySQL 之前的版本需要此权限 AWS DMS 用户还必须具有为复制指定的源表的 SELECT 权限 将与 MySQL 兼容的自管理数据库作为 AWS DMS 的源 您可以使用以下与 MySQL 兼容的自管理数据库作为 AWS DMS 的源 MySQL Community Edition MySQL Standard Edition MySQL Enterprise Edition MySQL Cluster Carrier Grade Edition MariaDB Community Edition MariaDB Enterprise Edition MariaDB Column Store 如果您计划使用更改数据捕获 (CDC) 则必须启用二进制日志记录 要启用二进制日志记录 则必须在 MySQL 的 my.ini (Windows) 或 my.cnf (UNIX) 文件中配置以下参数 参数 值 server_id 将该参数设置为 1 或更大的值 log-bin 设置二进制日志文件的路径 例如 log-bin=e:\mysql_logs\binlog 请 勿包含文件扩展名 binlog_format 将该参数设置为 ROW expire_logs_days 将该参数设置为 1 或更大的值 为防止过度使用磁盘空间 我们建议您不要使 用默认值 0 binlog_checksum 将该参数设置为 NONE binlog_row_image 将该参数设置为 FULL log_slave_updates 如果您使用 MySQL 或 MariaDB 只读副本作为源 请将此参数设置为 TRUE 如果您的源使用了 NDB (群集式) 数据库引擎 则必须配置以下参数以对使用该存储引擎的表启用 CDC 请 在 MySQL 的 my.ini (Windows) 或 my.cnf (UNIX) 文件中添加这些更改 参数 值 ndb_log_bin 将该参数设置为 ON 此值确保在群集表中进行的更改保存到二进制日志 ndb_log_update_as_write 将该参数设置为 OFF 此值可以防止将 UPDATE 语句作为 INSERT 语句写入 二进制日志 ndb_log_updated_only将该参数设置为 OFF 此值可确保二进制日志包含整个行而不仅仅是更改的 列 108

115 将 MySQL 作为源 将与 MySQL 兼容的 Amazon 托管数据库用作 AWS DMS 的源 您可以使用以下与 MySQL 兼容的 Amazon 托管数据库作为 AWS DMS 的源 MySQL Community Edition MariaDB Community Edition Amazon Aurora MySQL 将与 MySQL 兼容的 Amazon 托管数据库用作 AWS DMS 的源时 请确保满足以下先决条件 您必须启用自动备份 有关设置自动备份的更多信息 请参阅 Amazon RDS 用户指南 中的使用自动备 份 如果您计划使用更改数据捕获 (CDC) 则必须启用二进制日志记录 有关为 Amazon RDS MySQL 数据库 设置二进制日志记录的更多信息 请参阅 Amazon RDS 用户指南 中的使用自动备份 您必须确保二进制日志对 AWS DMS 可用 由于与 MySQL 兼容的 Amazon 托管数据库会尽快清除二进 制日志 您应延长这些日志保持可用的时间 例如 要将日志保留时间增加到 24 小时 您应运行以下命 令 call mysql.rds_set_configuration('binlog retention hours', 24); binlog_format 参数应设置为 ROW binlog_checksum 参数应设置为 NONE 有关设置 Amazon RDS MySQL 中的参数的更多信息 请参 阅 Amazon RDS 用户指南 中的使用自动备份 如果您使用 Amazon RDS MySQL 或 Amazon RDS MariaDB 只读副本作为源 则必须在只读副本上启用 备份 将 MySQL 数据库作为 AWS DMS 源的限制 将 MySQL 数据库作为源时 AWS DMS 不支持以下功能 Amazon RDS MySQL 5.5 或更低版本不支持更改数据捕获 (CDC) 对于 Amazon RDS MySQL 您必须 使用 5.6 版或更高版本才能启用 CDC 数据定义语言 (DDL) 语句 DROP TABLE 和 RENAME TABLE 不受支持 此外 分区表的所有 DDL 语句 不受支持 对于源上的分区表 当您将 Target table preparation mode (目标表准备模式) 设置为 Drop tables on target (删除目标中的表) 时 AWS DMS 会在 MySQL 目标上创建一个没有分区的简单表 要将分区表迁移到目 标上的分区表 请预先在目标 MySQL 数据库创建分区表 不支持使用 ALTER TABLE<table_name> ADD COLUMN <column_name> 语句将列添加到表的开头 (FIRST) 或中间 (AFTER) 列始终添加到表的末尾 当表名称包含大写和小写字符 并且源引擎托管于包含不区分大小写的文件名称的操作系统上时 CDC 不 受支持 一个示例是使用 HFS+ 的 Windows 或 OS X AR_H_USER 标头列不受支持 列上的 AUTO_INCREMENT 属性不会迁移到目标数据库列 二进制日志未存储在标准块存储上时不支持捕获更改 例如 当二进制日志存储在 Amazon S3 中 时 CDC 不起作用 默认情况下 AWS DMS 将使用 InnoDB 存储引擎创建目标表 如果您需要使用存储引擎不是 InnoDB 则 必须手动创建该表并使用 不执行任何操作 模式迁移到该表 您无法使用 Aurora MySQL 只读副本作为 AWS DMS 的源 如果与 MySQL 兼容的源在完整加载过程中停止 AWS DMS 任务不会停止 但会出现错误 该任务将成 功结束 但目标可能与源不同步 如果发生这种情况 请重新启动该任务或重新加载受影响的表 109

116 将 MySQL 作为源 在列值的一部分上创建的索引不会迁移 例如 索引 CREATE INDEX first_ten_chars ON customer (名称 (10)) 不在目标上创建 在某些情况下 任务会配置为不复制 LOB ( SupportLobs 在任务设置中为 false 或者在任务控制台中选中 不包括 LOB 列 ) 在这些情况下 AWS DMS 不会迁移将 MEDIUMBLOB LONGBLOB MEDIUMTEXT 和 LONGTEXT 列迁移到目标 BLOB TINYBLOB TEXT 和 TINYTEXT 列不受影响 将迁移到的目标 将 MySQL 作为 AWS DMS 源时的额外连接属性 您可以使用附加连接属性来配置 MySQL 源 在创建源终端节点时 您可以指定这些设置 对于多个额外连 接属性设置 应该用分号将它们彼此隔开 下表显示了将 Amazon RDS MySQL 用作 AWS DMS 源时可用的额外连接属性 名称 描述 eventspollinterval 指定在数据库处于空闲状态时在二进制日志中查看新更改/事件 的频率 默认值 5 有效值 1 60 示例 eventspollinterval=5 在示例中 AWS DMS 每 5 秒检查一次二进制日志中的更改 指定源 MySQL 数据库的时区 时间戳被转换到指定时区 initstmt=set time_zone 默认值 UTC 有效值 要使用的时区的任意三个字符的缩写形式 例如 UTC EST 或 GMT 有效值为承载源 MySQL 数据库的操作 系统的标准时区缩写形式 示例 initstmt=set time_zone=utc 指定脚本在 AWS DMS 连接到终端节点后立即运行 无论 SQL 语句是否成功 迁移任务都会继续运行 afterconnectscript 有效值 一个或多个有效的 SQL 语句 (用分号分隔) 示例 afterconnectscript=alter SESSION SET CURRENT_SCHEMA = system; CleanSrcMetadataOnMismatch 出现不匹配情况时在复制实例上清除并重新创建表元数据信 息 例如 对表运行更改 DDL 可能会产生有关在复制实例中缓 存的表的不同信息 布尔值 默认值 false 示例 CleanSrcMetadataOnMismatch=false MySQL 的源数据类型 下表显示了使用 AWS DMS 时支持的 MySQL 数据库源数据类型以及来自 AWS DMS 数据类型的默认映射 110

117 将 MySQL 作为源 Note UTF-8 4 字节字符集 (utf8mb4) 不受支持 并且可能导致源数据库中的意外行为 计划在迁移前使 用 UTF-8 4 字节字符集转换任何数据 有关如何查看目标中映射的数据类型的信息 请参阅有关所使用的目标终端节点的部分 有关 AWS DMS 数据类型的其他信息 请参阅AWS Database Migration Service 的数据类型 (p. 257) MySQL 数据类型 AWS DMS 数据类型 INT INT4 MEDIUMINT INT4 BIGINT INT8 TINYINT INT1 DECIMAL(10) NUMERIC (10,0) BINARY BYTES(1) BIT BOOLEAN BIT(64) BYTES(8) BLOB BYTES(66535) LONGBLOB BLOB MEDIUMBLOB BLOB TINYBLOB BYTES(255) DATE DATE DATETIME DATETIME TIME STRING TIMESTAMP DATETIME YEAR INT2 DOUBLE REAL8 FLOAT REAL(DOUBLE) 支持的 FLOAT 范围是 -1.79E+308 到 -2.23E 和 2.23E-308 到 1.79E+308 如果 FLOAT 值不在此范围内 则将 FLOAT 数据类 型映射到 STRING 数据类型 VARCHAR(45) WSTRING (45) VARCHAR(2000) WSTRING (2000) VARCHAR(4000) WSTRING (4000) VARBINARY (4000) BYTES (4000) 111

118 将 SAP ASE 作为源 MySQL 数据类型 AWS DMS 数据类型 VARBINARY (2000) BYTES (2000) CHAR WSTRING TEXT WSTRING (65535) LONGTEXT NCLOB MEDIUMTEXT NCLOB TINYTEXT WSTRING (255) GEOMETRY BLOB POINT BLOB LINESTRING BLOB POLYGON BLOB MULTIPOINT BLOB MULTILINESTRING BLOB MULTIPOLYGON BLOB GEOMETRYCOLLECTION BLOB Note 如果为 DATETIME 和 TIMESTAMP 数据类型指定 零 值 (即 ) 请确保复制任务中的目 标数据库支持 DATETIME 和 TIMESTAMP 数据类型使用 零 值 否则 这些值在目标上将被记录为 null 以下 MySQL 数据类型仅在完整加载中受支持 MySQL 数据类型 AWS DMS 数据类型 ENUM STRING SET STRING 将 SAP ASE 数据库作为 AWS DMS 源 您可以使用 AWS DMS 从 SAP Adaptive Server Enterprise (ASE) 数据库 (以前称为 Sybase) 中迁移数据 使用 SAP ASE 数据库作为源 您可以将数据迁移到其他受支持的任何 AWS DMS 目标数据库 AWS DMS 支持 SAP ASE 版本 或更高版本 及更高版本作为源 有关使用 SAP ASE 数据库和 AWS DMS 的其他详细信息 请参阅以下章节 主题 将 SAP ASE 数据库作为 AWS DMS 源的先决条件 (p. 113) 将 SAP ASE 作为 AWS DMS 源的限制 (p. 113) 将 SAP ASE 作为 AWS DMS 源所需的权限 (p. 113) 112

119 将 SAP ASE 作为源 删除截断点 (p. 114) SAP ASE 的源数据类型 (p. 114) 将 SAP ASE 数据库作为 AWS DMS 源的先决条件 要将 SAP ASE 数据库用作 AWS DMS 源 请执行以下操作 使用 sp_setreptable 命令为表启用 SAP ASE 复制 在 SAP ASE 数据库上禁用 RepAgent 要复制到为非拉丁字符 (例如 中文) 配置的 Microsoft Windows 上 Amazon EC2 实例中的 SAP ASE 版本 15.7 请在目标计算机上安装 SAP ASE 15.7 SP121 将 SAP ASE 作为 AWS DMS 源的限制 将 SAP ASE 数据用作 AWS DMS 的源时 以下限制将适用 每个 SAP ASE 数据库只能运行一个 AWS DMS 任务 您不能重命名表 例如 下面的命令将失败 sp_rename 'Sales.SalesRegion', 'SalesReg; 您不能重命名列 例如 下面的命令将失败 sp_rename 'Sales.Sales.Region', 'RegID', 'COLUMN'; 在复制到目标数据库时 将截断位于二进制数据类型字符串末尾的零值 例如 源 表中的 0x 在目标表中变为 0x 如果数据库默认设置为不允许 NULL 值 则 AWS DMS 使用不允许 NULL 值的列创建目标表 因此 如果 完整加载或更改数据捕获 (CDC) 复制任务包含空值 则 AWS DMS 将引发错误 您可以执行以下命令以 允许在源数据库中包含 NULL 值 从而防止出现这些错误 sp_dboption <database name>, 'allow nulls by default', 'true' go use <database name> CHECKPOINT go 不支持 reorg rebuild 索引命令 不支持集群 将 SAP ASE 作为 AWS DMS 源所需的权限 要将 SAP ASE 数据库用作 AWS DMS 任务中的源 请在 SAP ASE 数据库中为 AWS DMS 数据库定义中指 定的用户账户授予以下权限 sa_role replication_role sybase_ts_role 如果您在创建 SAP ASE 源终端节点时启用了 Automatically enable Sybase replication (自动启用 Sybase 复制) 选项 (在 Advanced (高级) 选项卡中) 则还必须向 AWS DMS 授予运行存储过程 sp_setreptable 的权限 113

120 将 SAP ASE 作为源 删除截断点 当任务开始后 AWS DMS 在 syslogshold 系统视图中建立 $replication_truncation_point 条 目 指示复制过程正在进行 在 AWS DMS 工作的同时 它会根据已经复制到目标的数据量 按固定间隔放 置复制截断点 建立 $replication_truncation_point 条目之后 AWS DMS 使任务保持运行状态 以防止数据库日 志变得过大 如果您要永久停止 AWS DMS 任务 请通过发布以下命令来删除复制截断点 dbcc settrunc('ltm','ignore') 删除截断点之后 您将无法继续 AWS DMS 任务 日志将继续在检查点自动截断 (在设置了自动截断时) SAP ASE 的源数据类型 有关使用 AWS DMS 时支持的 SAP ASE 源数据类型以及来自 AWS DMS 数据类型的默认映射的列表 请参 阅下表 AWS DMS 不支持具有用户定义的类型 (UDT) 数据类型的列的 SAP ASE 源表 具有此数据类型的 复制列将创建为 NULL 有关如何查看目标中映射的数据类型的信息 请参阅数据迁移的目标 (p. 127)有关您的目标终端节点的部 分 有关 AWS DMS 数据类型的其他信息 请参阅AWS Database Migration Service 的数据类型 (p. 257) SAP ASE 数据类型 AWS DMS 数据类型 BIGINT INT8 BINARY BYTES BIT BOOLEAN CHAR STRING DATE DATE DATETIME DATETIME DECIMAL NUMERIC DOUBLE REAL8 FLOAT REAL8 IMAGE BLOB INT INT4 MONEY NUMERIC NCHAR WSTRING NUMERIC NUMERIC NVARCHAR WSTRING REAL REAL4 SMALLDATETIME DATETIME 114

121 将 MongoDB 作为源 SAP ASE 数据类型 AWS DMS 数据类型 SMALLINT INT2 SMALLMONEY NUMERIC TEXT CLOB TIME TIME TINYINT UINT1 UNICHAR UNICODE CHARACTER UNITEXT NCLOB UNIVARCHAR UNICODE VARBINARY BYTES VARCHAR STRING 将 MongoDB 作为 AWS DMS 源 AWS DMS 支持将 MongoDB 版本 2.6.x 和 3.x 作为数据库源 如果您是初次使用 MongoDB 请注意以下关于 MongoDB 数据库的重要概念 MongoDB 中的记录是一个文档 它是由字段和值对构成的数据结构 字段的值可以包括其他文档 数组 和文档数组 文档大致相当于关系数据库表中的一行 MongoDB 中的集合 是一组文档 并且大致相当于关系数据库表 在内部 MongoDB 文档以压缩格式存储为二进制 JSON (BSON) 文件 包含文档中每个字段的类型 每 个文档都有唯一的 ID 将 MongoDB 用作源时 AWS DMS 支持两种迁移模式 您利用 AWS 管理控制台通过 Metadata mode (元 数据模式) 参数指定迁移模式 或在创建 MongoDB 终端节点时指定额外的连接属性 nestinglevel 所选 的迁移模式将影响目标数据的结果格式 如下所述 文档模式 在文档模式下 MongoDB 文档按 原样 迁移 这意味着文档数据将并入目标表中一个名为 _doc 的列 中 文档模式是您将 MongoDB 用作源终端节点时的默认设置 例如 请考虑名为 mycollection 的 MongoDB 集合中的以下文档 > db.mycollection.find() "_id" : ObjectId("5a94815f40bd44d1b02bdfe0"), "a" : 1, "b" : 2, "c" : 3 "_id" : ObjectId("5a94815f40bd44d1b02bdfe1"), "a" : 4, "b" : 5, "c" : 6 在使用文档模式将数据迁移到关系数据库表后 数据结构如下所示 MongoDB 文档中的数据字段将并 入 _doc 列 oid_id _doc 5a94815f40bd44d1b02bdfe0 "a" : 1, "b" : 2, "c" : 3 115

122 将 MongoDB 作为源 5a94815f40bd44d1b02bdfe1 "a" : 4, "b" : 5, "c" : 6 您可以选择将额外连接属性 extractdocid 设置为 true 以创建第二个名为 "_id" 的列以作为主键 如果要使用更改数据捕获 (CDC) 请将此参数设置为 true 在文档模式中 AWS DMS 按如下方式管理集合的创建和重命名 如果您将一个新集合添加到源数据库 则 AWS DMS 会为该集合创建一个新的目标表并复制所有文 档 如果您重命名源数据库上的现有集合 则 AWS DMS 不会重命名目标表 表模式 在表模式中 AWS DMS 将 MongoDB 文档中的每个顶级字段转换为目标表中的一个列 如果已嵌套字 段 则 AWS DMS 会将嵌套值平展到单个列中 随后 AWS DMS 将关键字段和数据类型添加到目标表 的列集 对于每个 MongoDB 文档 AWS DMS 将每个键和类型添加到目标表的列集中 例如 通过使用表模 式 AWS DMS 将上一个示例迁移到下表中 oid_id a b c 5a94815f40bd44d1b02bdfe a94815f40bd44d1b02bdfe 嵌套值平展到包含键名 (以句点分隔) 的列中 该列的名称是为由句点分隔的平展字段名的联接 例 如 AWS DMS 将具有嵌套值字段 (例如 "a" : "b" : "c": 1) 的 JSON 文档迁移到名为 a.b.c. 的列中 为了创建目标列 AWS DMS 扫描指定数量的 MongoDB 文档并创建所有字段及其类型的集合 AWS DMS 然后使用此集合来创建目标表的列 如果您使用 控制台创建或修改 MongoDB 源终端节点 则 可指定要扫描的文档的数量 默认值为 1000 个文档 如果您使用 AWS CLI 则可使用额外连接属性 docstoinvestigate 在表模式中 AWS DMS 按如下方式管理文档和集合 当您将一个文档添加到现有集合时 将复制该文档 如果某些字段在目标中不存在 则不会复制这些 字段 当您更新文档时 复制更新后的文档 如果某些字段在目标中不存在 则不会复制这些字段 完全支持文档删除 在 CDC 任务期间 添加新集合不会导致在目标上生成新的表 不支持重命名集合 将 MongoDB 用作 AWS DMS 的源时所需的权限 对于使用 MongoDB 源的 AWS DMS 迁移 您可以创建具有根权限的用户账户 也可以仅在要迁移的数据库 上创建具有权限的用户 以下代码创建将作为根账户的用户 use admin db.createuser( user: "root", 116

123 将 MongoDB 作为源 ) pwd: "<password>", roles: [ role: "root", db: "admin" ] 以下代码在要迁移的数据库上创建具有最低权限的用户 use <database_to_migrate> db.createuser( user: "<dms-user>", pwd: "<password>", roles: [ role: "read", db: "local", "read"] ) 为变更数据捕获 (CDC) 配置 MongoDB 副本集 要将持续复制或更改数据捕获 (CDC) 用于 MongoDB AWS DMS 需要具有对 MongoDB 操作日志 (oplog) 的访问权限 要创建 oplog 您需要部署一个副本集 (如果没有副本集) 有关更多信息 请参阅 MongoDB 文档 您可以将 CDC 用于作为源终端节点的 MongoDB 副本集的主要或次要节点 将独立实例转换为副本集 1. 使用命令行 连接到 mongo. mongo localhost 2. 停止 mongod 服务 service mongod stop 3. 使用以下命令重新启动 mongod mongod --replset "rs0" --auth -port <port_number> 4. 使用以下命令测试与副本集的连接 mongo -u root -p <password> --host rs0/localhost:<port_number> --authenticationdatabase "admin" 如果您打算执行文档模式迁移 请在创建 MongoDB 终端节点时选择选项 _id as a separate column 通过选择此选项 将创建另一个名为 _id 的列以作为主键 AWS DMS 需要第二列以支持数据操 作语言 (DML) 操作 将 MongoDB 作为 AWS DMS 源时的安全要求 AWS DMS 支持 MongoDB 的两种身份验证方法 这两种身份验证方法用于加密密码 因此它们仅在将 authtype 参数设置为 PASSWORD 时使用 MongoDB 身份验证方法如下 MONOGODB-CR 使用 MongoDB 2.x 身份验证时的默认值 SCRAM-SHA-1 使用 MongoDB 版本 3.x 身份验证时的默认值 117

124 将 MongoDB 作为源 如果未指定身份验证方法 AWS DMS 使用 MongoDB 源版本的默认方法 将 MongoDB 作为 AWS DMS 源时的限制 将 MongoDB 作为 AWS DMS 源时 存在以下限制 当 _id 选项设置为单独一列时 ID 字符串不能超过 200 个字符 在表模式下 对象 ID 和数组类型键将转换为具有 oid 和 array 前缀的列 将使用具有前缀的名称在内部引用这些列 如果您使用 AWS DMS 中的引用这些列的转换规则 则必须指 定具有前缀的列 例如 指定 $oid id 而不是 $_id 或者指定 $array addresses 而不是 $_addresses 集合名称不能包含美元符号 ($) 表模式和文档模式具有前面讨论的限制 将 MongoDB 用作 AWS DMS 源时的额外连接属性 当您设置 MongoDB 源终端节点时 您可以指定额外的连接属性 额外的连接属性是使用键值对指定的并以 分号分隔 下表介绍了将 MongoDB 数据库用作 AWS DMS 源时可用的额外连接属性 属性名称 有效值 默认值和描述 authtype 否 PASSWORD 选择 NO 时 不使用用户名和密码参数 可 以为空 PASSWORD authmechanism DEFAULT MONGODB_CR DEFAULT 对于 MongoDB 版本 2.x 使用 MONGODB_CR 对于 MongoDB 版本 3.x 使用 SCRAM_SHA_1 当 authtype=no 时 不使用该属性 SCRAM_SHA_1 nestinglevel NONE NONE 指定 NONE 可使用文档模式 指定 ONE 可使用表 模式 第一 extractdocid true false nestinglevel 设置为 NONE 时使用此属性 false docstoinvestigate 大于 0 的正整数 authsource 有效的 MongoDB 数据 库名称 1000 nestinglevel 设置为 ONE 时使用此属性 admin 当 authtype=no 时 不使用该属性 MongoDB 的源数据类型 将 MongoDB 作为 AWS DMS 源的数据迁移支持大多数 MongoDB 数据类型 在下表中 您可以找到使用 AWS DMS 时支持的 MongoDB 源数据类型以及来自 AWS DMS 数据类型的默认映射 有关 MongoDB 数据 类型的更多信息 请参阅 MongoDB 文档中的 BSON 类型 有关如何查看目标中映射的数据类型的信息 请参阅有关所使用的目标终端节点的部分 有关 AWS DMS 数据类型的其他信息 请参阅AWS Database Migration Service 的数据类型 (p. 257) 118

125 将 Amazon S3 作为源 MongoDB 数据类型 AWS DMS 数据类型 Boolean Bool 二进制 BLOB 日期 日期 时间戳 日期 Int INT4 Long INT8 Double REAL8 String (UTF-8) CLOB 数组 CLOB OID 字符串 REGEX CLOB CODE CLOB 将 Amazon S3 作为 AWS DMS 源 您可以使用 AWS DMS 从 Amazon S3 存储桶中迁移数据 为此 请提供对包含一个或多个数据文件的 S3 存储桶的访问 在该 S3 存储桶中 请包含一个 JSON 文件以描述该数据与这些文件中的数据的数据库表之 间的映射 在开始完全加载之前 必须在 S3 存储桶中包含源数据文件 您可以使用 bucketname 参数指定存储桶名 称 源数据文件必须采用逗号分隔值 (CSV) 格式 请使用该命名约定命名这些文件 如下所示 在该约定 中 schemaname 是源架构 tablename 是该架构中的表的名称 /schemaname/tablename/load001.csv /schemaname/tablename/load002.csv /schemaname/tablename/load003.csv... 例如 假定您的数据文件位于以下 S3 路径的 mybucket 中 s3://mybucket/hr/employee 在加载时 AWS DMS 假定源架构名称是 hr 源表名称是 employee 除了 bucketname (它是必需的) 以外 您还可以选择提供 bucketfolder 参数以指定 AWS DMS 查找 S3 存储桶中的数据文件的位置 对于前面的示例 如果将 bucketfolder 设置为 sourcedata 则 AWS DMS 读取以下路径中的数据文件 s3://mybucket/sourcedata/hr/employee 您可以使用额外连接属性指定列分隔符 行分隔符 null 值指示符以及其他参数 有关更多信息 请参阅 将 S3 作为 AWS DMS 源的额外连接属性 (p. 122) 119

126 将 Amazon S3 作为源 为作为 AWS DMS 源的 S3 定义外部表 除了数据文件以外 您还必须提供外部表定义 外部表定义 是一个 JSON 文档 它描述 AWS DMS 应如何 解释 S3 中的数据 该文档的最大大小为 2 MB 如果使用 AWS DMS 管理控制台创建源终端节点 您可以 直接在表映射框中输入 JSON 如果使用 AWS Command Line Interface (AWS CLI) 或 AWS DMS API 执行 迁移 您可以创建一个 JSON 文件以指定外部表定义 假定您具有包含以下内容的数据文件 101,Smith,Bob,4-Jun-14,New York 102,Smith,Bob,8-Oct-15,Los Angeles 103,Smith,Bob,13-Mar-17,Dallas 104,Smith,Bob,13-Mar-17,Dallas 以下是该数据的示例外部表定义 "TableCount": "1", "Tables": [ "TableName": "employee", "TablePath": "hr/employee/", "TableOwner": "hr", "TableColumns": [ "ColumnName": "Id", "ColumnType": "INT8", "ColumnNullable": "false", "ColumnIsPk": "true", "ColumnName": "LastName", "ColumnType": "STRING", "ColumnLength": "20", "ColumnName": "FirstName", "ColumnType": "STRING", "ColumnLength": "30", "ColumnName": "HireDate", "ColumnType": "DATETIME", "ColumnName": "OfficeLocation", "ColumnType": "STRING", "ColumnLength": "20" ], "TableColumnsTotal": "5" ] 该 JSON 文档中的元素如下所示 TableCount 源表数 在该示例中 只有一个表 Tables 一个数组 对于每个源表 它包含一个 JSON 映射 在该示例中 只有一个映射 每个映射包含 以下元素 120

127 将 Amazon S3 作为源 TableName 源表的名称 TablePath AWS DMS 可以在 S3 存储桶中找到完全数据加载文件的路径 如果指定了 bucketfolder 值 则在路径前面添加该值 TableOwner 该表的架构名称 TableColumns 包含一个或多个映射的数组 每个映射描述源表中的一个列 ColumnName 源表中的列的名称 ColumnType 列的数据类型 有关有效的数据类型 请参阅Amazon S3 的源数据类型 (p. 123) ColumnLength 该列中的字节数 ColumnNullable (可选) 一个布尔值 如果该列可以包含 NULL 值 则为 true ColumnIsPk (可选) 一个布尔值 如果该列是主键的一部分 则为 true TableColumnsTotal 总列数 该数字必须与 TableColumns 数组中的元素数相匹配 在前面的示例中 某些列具有 STRING 类型 在这种情况下 请使用 ColumnLength 元素指定最大字符 数 ColumnLength 适用于以下数据类型 BYTE STRING 如果未另行指定 AWS DMS 假定 ColumnLength 为零 对于 NUMERIC 类型的列 您需要指定精度和小数位数 精度 是数字中的总位数 而小数位数 是小数点右 边的位数 为此 您可以使用 ColumnPrecision 和 ColumnScale 元素 如下所示 "ColumnName": "HourlyRate", "ColumnType": "NUMERIC", "ColumnPrecision": "5" "ColumnScale": "2" 使用 CDC 并将 S3 作为 AWS DMS 源 在 AWS DMS 执行完全数据加载后 它可以选择将数据更改复制到目标终端节点中 为此 请将更改数据捕 获文件 (CDC 文件) 上传到 S3 存储桶中 在上传这些 CDC 文件时 AWS DMS 读取这些文件 然后在目标 终端节点中应用这些更改 CDC 文件是按如下方式命名的 CDC00001.csv CDC00002.csv CDC00003.csv... 要指示 AWS DMS 可以找到这些文件的位置 您必须指定 cdcpath 参数 对于前面的示例 如果将 cdcpath 设置为 changedata 则 AWS DMS 读取以下路径中的 CDC 文件 s3://mybucket/changedata CDC 文件中的记录格式如下所示 121

128 将 Amazon S3 作为源 操作 要执行的更改操作 INSERT UPDATE 或 DELETE 这些关键字不区分大小写 表名称 源表的名称 架构名称 源架构的名称 数据 表示要更改的数据的一个或多个列 以下是名为 employee 的表的示例 CDC 文件 INSERT,employee,hr,101,Smith,Bob,4-Jun-14,New York UPDATE,employee,hr,101,Smith,Bob,8-Oct-15,Los Angeles UPDATE,employee,hr,101,Smith,Bob,13-Mar-17,Dallas DELETE,employee,hr,101,Smith,Bob,13-Mar-17,Dallas 将 S3 作为 AWS DMS 源时的先决条件 将 S3 作为 AWS DMS 源时 使用的源 S3 存储桶必须位于与用于迁移数据的 AWS DMS 复制实例相同的 AWS 区域中 此外 用于迁移的 AWS 账户必须具有源存储桶的读取访问权限 为用于创建迁移任务的用户账户分配的 AWS Identity and Access Management (IAM) 角色必须具有以下一组 权限 "Version": " ", "Statement": [ "Effect": "Allow", "Action": [ "s3:getobject" ], "Resource": [ "arn:aws:s3:::mybucket*" ], "Effect": "Allow", "Action": [ "s3:listbucket" ], "Resource": [ "arn:aws:s3:::mybucket*" ] ] 将 S3 作为 AWS DMS 源的额外连接属性 您可以指定以下选项作为额外的连接属性 选项 描述 bucketfolder (可选) S3 存储桶中的文件夹名称 如果提供该属性 则从 bucketfolder/schemaname/tablename/ 路径中读取源数据文件和 CDC 文件 如果未指定该属性 则使用的路径为 schemaname/tablename/ 下 面是一个示例 bucketfolder=testfolder; 122

129 将 Amazon S3 作为源 选项 描述 bucketname S3 存储桶的名称 下面是一个示例 bucketname=buckettest; cdcpath 更改数据捕获 (CDC) 文件的位置 如果任务捕获更改数据 则该属性是必需 的 否则 该属性是可选的 如果 cdcpath 存在 则 AWS DMS 从该路径中 读取 CDC 文件 然后将数据更改复制到目标终端节点中 有关更多信息 请参 阅 使用 CDC 并将 S3 作为 AWS DMS 源 (p. 121) 下面是一个示例 cdcpath=datachanges; csvrowdelimiter 源文件中用于分隔行的分隔符 默认值为回车符 (\n) 下面是一个示例 csvrowdelimiter=\n; csvdelimiter 源文件中用于分隔列的分隔符 默认值为逗号 下面是一个示例 csvdelimiter=,; externaltabledefinition 一个 JSON 对象 它描述 AWS DMS 应如何在迁移期间解释 S3 存储桶 中的数据 有关更多信息 请参阅 为作为 AWS DMS 源的 S3 定义外部 表 (p. 120) 下面是一个示例 externaltabledefinition=<json_object> ignoreheaderrows 如果设置为 1 AWS DMS 会忽略 CSV 文件中的第一个行标题 值为 1 可启用 该功能 值为 0 将禁用该功能 默认值为 0 ignoreheaderrows=1 Amazon S3 的源数据类型 将 Amazon S3 用作 AWS DMS 的源的数据迁移需要将数据从 S3 映射到 AWS DMS 数据类型 有关更多信 息 请参阅 为作为 AWS DMS 源的 S3 定义外部表 (p. 120) 有关如何查看目标中映射的数据类型的信息 请参阅有关所使用的目标终端节点的部分 有关 AWS DMS 数据类型的其他信息 请参阅AWS Database Migration Service 的数据类型 (p. 257) AWS DMS 数据类型 将 Amazon S3 作为源 BYTE 需要使用 ColumnLength 有关更多信息 请参阅 为作为 AWS DMS 源的 S3 定义外部表 (p. 120) DATE TIME DATETIME TIMESTAMP INT1 INT2 123

130 将 IBM Db2 用作源 AWS DMS 数据类型 将 Amazon S3 作为源 INT4 INT8 NUMERIC 需要使用 ColumnPrecision 和 ColumnScale 有关更多信息 请参阅 为作为 AWS DMS 源的 S3 定 义外部表 (p. 120) REAL4 REAL8 STRING 需要使用 ColumnLength 有关更多信息 请参阅 为作为 AWS DMS 源的 S3 定义外部表 (p. 120) UINT1 UINT2 UINT4 UINT8 BLOB CLOB BOOLEAN 将适用于 Linux Unix 和 Windows 数据库的 IBM Db2 (Db2 LUW) 用作 AWS DMS 源 您可以使用 AWS DMS (AWS DMS) 将数据从适用于 Linux Unix 和 Windows 数据库的 IBM Db2 (Db2 LUW) 迁移到任何受支持的目标数据库 AWS DMS 支持以下 Db2 LUW 版本作为迁移源 9.7 版 所有修复包都受支持 10.1 版 所有修复包都受支持 10.5 版 除修复包 5 之外的所有修复包都受支持 可以使用 SSL 加密 Db2 LUW 终端节点与复制实例之间的连接 您必须使用 AWS DMS 引擎版本 或更 高版本以使用 SSL 有关将 SSL 用于 Db2 LUW 终端节点的更多信息 请参阅将 SSL 用于 AWS Database Migration Service (p. 41) 将 Db2 LUW 用作 AWS DMS 源时的先决条件 需要先满足以下先决条件 然后才能将 Db2 LUW 数据库用作源 要启用持续复制 (也称为变更数据捕获 (CDC)) 您必须执行以下操作 数据库必须设置为可恢复 要捕获更改 AWS DMS 需要将数据库配置为可恢复 如果数据库配置参数 LOGARCHMETH1 和/或 LOGARCHMETH2 设置为 ON 则数据库是可恢复的 必须向用户账户授予以下权限 124

131 将 IBM Db2 用作源 SYSADM 或 DBADM DATAACCESS 将 Db2 LUW 用作 AWS DMS 源时的限制 不支持集群化数据库 但请注意 您可以为集群的每个终端节点定义一个单独的 Db2 LUW 有关更多信息 请参阅 IBM Db2 LUW 文档 在使用持续复制 (CDC) 时 以下限制将适用 在截断具有多个分区的表时 AWS DMS 控制台中显示的 DDL 事件数将等于分区数 这是因为 Db2 LUW 为每个分区记录一个单独的 DDL 已分区表不支持以下 DDL 操作 ALTER TABLE ADD PARTITION ALTER TABLE DETACH PARTITION ALTER TABLE ATTACH PARTITION 不支持 DECFLOAT 数据类型 因此 在持续复制期间 将忽略对 DECFLOAT 列所做的更改 不支持 RENAME COLUMN 语句 在执行对 MDC (多维集群化) 表的更新时 每个更新将在 AWS DMS 控制台中显示为 INSERT + DELETE 在禁用任务设置 Include LOB columns in replication (在复制中包含LOB列) 后 任何具有 LOB 列的表将在 持续复制期间处于已暂停状态 在启用 Audit table (审核表) 选项后 审核表中的第一条时间戳记录将为 NULL 在启用 Change table (更改表) 选项后 表中的第一条时间戳记录将为零 (即 :00: ) 对于 Db2 LUW 版本 10.5 和更高版本 将忽略具有行外存储的数据的可变长度字符串列 请注意 此限制 仅适用于使用扩展行大小创建的表 将 Db2 LUW 用作 AWS DMS 源时的额外连接属性 您可以使用额外的连接属性配置 Db2 LUW 源 在创建源终端节点时 您可以指定这些设置 应将多个额外 连接属性设置用分号隔开 下表显示了将 Db2 LUW 用作源时可以使用的额外连接属性 名称 描述 MaxKBytesPerRead 每次读取的最大字节数 以 NUMBER 值表示 默认值为 64 KB SetDataCaptureChanges 启用持续复制 (变更数据捕获) 以 BOOLEAN 值表示 默认值 为 true IBM Db2 LUW 的源数据类型 将 Db2 LUW 用作 AWS DMS 源的数据迁移支持大多数 Db2 LUW 数据类型 下表显示了使用 AWS DMS 时 支持的 Db2 LUW 源数据类型以及来自 AWS DMS 数据类型的默认映射 有关 Db2 LUW 数据类型的更多信 息 请参阅 Db2 LUW 文档 125

132 将 IBM Db2 用作源 有关如何查看目标中映射的数据类型的信息 请参阅有关所使用的目标终端节点的部分 有关 AWS DMS 数据类型的其他信息 请参阅AWS Database Migration Service 的数据类型 (p. 257) Db2 LUW 数据类型 AWS DMS 数据类型 INTEGER INT4 SMALLINT INT2 BIGINT INT8 DECIMAL (p,s) NUMERIC (p,s) FLOAT REAL8 DOUBLE REAL8 REAL REAL4 DECFLOAT (p) 如果精度 = 16 则 REAL8 如果精度 = 34 则 STRING GRAPHIC WSTRING n<=127 VARGRAPHIC WSTRING n<=16k 双字节字符 LONG VARGRAPHIC CLOB CHAR (n) STRING n<=255 VARCHAR (n) STRING n<=32k LONG VARCHAR (n) CLOB n<=32k CHAR (n) FOR BIT DATA BYTES VARCHAR (n) FOR BIT DATA BYTES LONG VARCHAR FOR BIT DATA BYTES DATE DATE TIME TIME TIMESTAMP DATETIME BLOB BLOB 126

133 数据迁移的目标 Db2 LUW 数据类型 AWS DMS 数据类型 CLOB CLOB 最大大小 2 GB DBCLOB CLOB 最大大小 1 G 双字节字符 XML CLOB 数据迁移的目标 AWS Database Migration Service (AWS DMS) 可以将多种应用最广泛的数据库作为数据复制的目标 目 标可以位于 Amazon Elastic Compute Cloud (Amazon EC2) 实例 Amazon Relational Database Service (Amazon RDS) 实例或者本地数据库上 Note 不论使用什么源存储引擎 (MyISAM MEMORY 等) 默认情况下 AWS DMS 都会创建与 MySQL 兼容的目标表作为 InnoDB 表 如果您需要的表使用 InnoDB 之外的存储引擎 则可以在与 MySQL 兼容的目标上手动创建表 然后使用 不执行任何操作 模式来迁移表 有关 不执行任何操作 模式的 更多信息 请参阅完全加载任务设置 (p. 181) 数据库包括 本地和 EC2 实例数据库 Oracle 版本 10g 11g 12c (Enterprise Standard Standard One 和 Standard Two 版) Microsoft SQL Server 版本 R 和 2016 (Enterprise Standard Workgroup 和 Developer 版) 不支持 Web 和 Express 版 MySQL 版本 和 5.7 MariaDB (支持作为与 MySQL 兼容的数据目标) PostgreSQL 版本 9.4 和更高版本 SAP Adaptive Server Enterprise (ASE) 版本 和更高版本 Amazon RDS 实例数据库 Amazon Redshift Amazon S3 和 Amazon DynamoDB Amazon RDS Oracle 版本 11g (版本 v1 和更高版本) 和 12c (Enterprise Standard Standard One 和 Standard Two 版) Amazon RDS Microsoft SQL Server 版本 2008 R 和 2014 (Enterprise Standard Workgroup 和 Developer 版) 不支持 Web 和 Express 版 Amazon RDS MySQL 版本 和 5.7 Amazon RDS MariaDB (支持作为与 MySQL 兼容的数据目标) Amazon RDS PostgreSQL 版本 9.4 和更高版本 Amazon Aurora 与 MySQL 的兼容性 与 PostgreSQL 兼容的 Amazon Aurora Amazon Redshift Amazon S3 127

134 将 Oracle 作为目标 Amazon DynamoDB 主题 将 Oracle 数据库作为 AWS Database Migration Service 目标 (p. 128) 将 Microsoft SQL Server 数据库作为 AWS Database Migration Service 目标 (p. 132) 将 PostgreSQL 数据库作为 AWS Database Migration Service 目标 (p. 135) 使用兼容 MySQL 的数据库作为 AWS Database Migration Service 目标 (p. 138) 将 Amazon Redshift 数据库作为 AWS Database Migration Service 目标 (p. 142) 将 SAP ASE 数据库作为 AWS Database Migration Service 目标 (p. 147) 将 Amazon S3 作为 AWS Database Migration Service 目标 (p. 149) 将 Amazon DynamoDB 数据库用作 AWS Database Migration Service 的目标 (p. 152) 将 Oracle 数据库作为 AWS Database Migration Service 目标 您可以使用 AWS DMS 从另一个 Oracle 数据库或者从其他支持的数据库之一 将数据迁移到 Oracle 数据 库 可以使用安全套接字层 (SSL) 加密 Oracle 终端节点与复制实例之间的连接 有关将 SSL 用于 Oracle 终 端节点的更多信息 请参阅 将 SSL 用于 AWS Database Migration Service (p. 41) AWS DMS 支持将适用于本地实例及 EC2 实例的 Oracle 版本 10g 11g 和 12c (包括 Enterprise Standard Standard One 和 Standard Two 版) 作为目标 AWS DMS 支持适 用于 Amazon RDS 实例数据库的 Oracle 版本 11g (版本 v1 及更高版本) 和 12c (Enterprise Standard Standard One 和 Standard Two 版) 将 Oracle 用作目标时 我们假定数据应迁移到目标连接所使用的架构或用户 如果您要将数据迁移到其他架 构 则需要使用架构转换来完成此操作 例如 假设您的目标终端节点连接到用户 RDSMASTER 并且您希 望从用户 PERFDATA 迁移到 PERFDATA 在这种情况下 请创建一个转换 如下所示 "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "schema", "object-locator": "schema-name": "PERFDATA", "value": "PERFDATA" 有关转换的更多信息 请参阅 使用 JSON 的选择和转换表映射 (p. 199) 有关将 Oracle 数据库作为 AWS DMS 目标的其他详细信息 请参阅以下章节 主题 将 Oracle 作为 AWS Database Migration Service 目标时的限制 (p. 129) 将 Oracle 作为目标所需的用户账户权限 (p. 129) 将 Oracle 数据库配置为 AWS Database Migration Service 目标 (p. 130) 将 Oracle 作为 AWS DMS 目标时的额外连接属性 (p. 130) 128

135 将 Oracle 作为目标 Oracle 的目标数据类型 (p. 131) 将 Oracle 作为 AWS Database Migration Service 目标时的限制 使用 Oracle 作为数据迁移目标的限制如下所示 AWS DMS 不会在目标 Oracle 数据库上创建架构 您必须在目标 Oracle 数据库上创建任意所需的架 构 Oracle 目标中很可能已存在该架构名称 来自源架构的表导入到用户/架构 AWS DMS 使用此信息连 接到目标实例 如果要迁移多个架构 您必须创建多个复制任务 对于具有 INDEXTYPE CONTEXT 的表 AWS DMS 不支持 Use direct path full load 选项 作 为解决方法 您可以使用数组加载 在批量优化应用模式中 加载到净更改表中时使用直接路径 这不支持 XMLType 作为解决方法 您可以 使用事务应用模式 将 Oracle 作为目标所需的用户账户权限 要在 AWS Database Migration Service 任务中使用 Oracle 目标 对于在 AWS DMS Oracle 数据库定义中指 定的用户账户 您需要授予 Oracle 数据库中的以下权限 SELECT ANY TRANSACTION 针对 V$NLS_PARAMETERS 的 SELECT 针对 V$TIMEZONE_NAMES 的 SELECT 针对 ALL_INDEXES 的 SELECT 针对 ALL_OBJECTS 的 SELECT 针对 DBA_OBJECTS 的 SELECT 针对 ALL_TABLES 的 SELECT 针对 ALL_USERS 的 SELECT 针对 ALL_CATALOG 的 SELECT 针对 ALL_CONSTRAINTS 的 SELECT 针对 ALL_CONS_COLUMNS 的 SELECT 针对 ALL_TAB_COLS 的 SELECT 针对 ALL_IND_COLUMNS 的 SELECT DROP ANY TABLE SELECT ANY TABLE INSERT ANY TABLE UPDATE ANY TABLE CREATE ANY VIEW DROP ANY VIEW CREATE ANY PROCEDURE ALTER ANY PROCEDURE DROP ANY PROCEDURE CREATE ANY SEQUENCE ALTER ANY SEQUENCE DROP ANY SEQUENCE 对于以下指定的要求 授予指定的附加权限 要使用特定表列表 请对任意复制表授予 SELECT 权限以及 ALTER 权限 129

136 将 Oracle 作为目标 要允许用户在其默认表空间中创建表 请授予权限 GRANT UNLIMITED TABLESPACE 对于登录 请授予权限 CREATE SESSION 如果您使用的是直接路径 请授予权限 LOCK ANY TABLE 如果在完全加载设置中选择了 DROP and CREATE table 或 TRUNCATE before loading 选项 并且目标 表架构不同于 AWS DMS 用户的架构 则授予权限 DROP ANY TABLE 当目标表架构不同于 AWS DMS 用户的架构时 要在更改表或审核表中存储更改 请授予权限 CREATE ANY TABLE 和 CREATE ANY INDEX 目标数据库上 AWS Database Migration Service 需要的读取权限 必须向 AWS DMS 用户账户授予以下 DBA 表的读取权限 针对 DBA_USERS 的 SELECT 针对 DBA_TAB_PRIVS 的 SELECT 针对 DBA_OBJECTS 的 SELECT 针对 DBA_SYNONYMS 的 SELECT 针对 DBA_SEQUENCES 的 SELECT 针对 DBA_TYPES 的 SELECT 针对 DBA_INDEXES 的 SELECT 针对 DBA_TABLES 的 SELECT 针对 DBA_TRIGGERS 的 SELECT 如果无法将任意所需权限授予 V$xxx 则将其授予 V_$xxx 将 Oracle 数据库配置为 AWS Database Migration Service 目标 使用 Oracle 数据库作为数据迁移目标之前 您必须向 AWS DMS 提供 Oracle 用户账户 该用户账户必须具 有 Oracle 数据库的读/写权限 如将 Oracle 作为目标所需的用户账户权限 (p. 129)部分中所指定 将 Oracle 作为 AWS DMS 目标时的额外连接属性 您可以使用额外的连接属性配置 Oracle 目标 在创建目标终端节点时 您可以指定这些设置 应将多个额外 连接属性设置用分号隔开 下表显示了将 Oracle 用作目标时的可用额外连接属性 名称 描述 usedirectpathfullload 使用直接路径完全加载 指定此项以启用/禁用用于批量加载 Oracle 表的 OCI 直接路径协议 默认值 Y 有效值 Y/N 示例 usedirectpathfullload=n charlengthsemantics 列长度语义指定列的长度是以字节还是字符为单位 将此值设 置为 CHAR 示例 charlengthsemantics=char 130

137 将 Oracle 作为目标 Oracle 的目标数据类型 用于 AWS DMS 的目标 Oracle 数据库支持大多数 Oracle 数据类型 下表显示了使用 AWS DMS 时支持的 Oracle 目标数据类型以及来自 AWS DMS 数据类型的默认映射 有关如何查看从源映射的数据类型的更多信 息 请参阅有关所使用的源的部分 AWS DMS 数据类型 Oracle 数据类型 BOOLEAN NUMBER (1) BYTES RAW (length) DATE DATETIME TIME TIMESTAMP (0) DATETIME TIMESTAMP (scale) INT1 NUMBER (3) INT2 NUMBER (5) INT4 NUMBER (10) INT8 NUMBER (19) NUMERIC NUMBER (p,s) REAL4 FLOAT REAL8 FLOAT STRING 带日期指示 DATE 带时间指示 TIMESTAMP 带时间戳指示 TIMESTAMP 带 timestamp_with_timezone 指示 TIMESTAMP WITH TIMEZONE 带 timestamp_with_local_timezone 指示 TIMESTAMP WITH LOCAL TIMEZONE 带 interval_year_to_month 指示 INTERVAL YEAR TO MONTH 带 interval_day_to_second 指示 INTERVAL DAY TO SECOND 如果 length > 4000 CLOB 在所有其他情况下 VARCHAR2 (length) UINT1 NUMBER (3) UINT2 NUMBER (5) UINT4 NUMBER (10) UINT8 NUMBER (19) WSTRING 如果 length > 2000 NCLOB 在所有其他情况下 NVARCHAR2 (length) 131

138 将 SQL Server 作为目标 AWS DMS 数据类型 Oracle 数据类型 BLOB BLOB 要将此数据类型用于 AWS DMS 您必须允许对特定任务使用 BLOB 仅 包含主键的表中支持 BLOB 数据类型 CLOB CLOB 要将此数据类型用于 AWS DMS 您必须允许对特定任务使用 CLOB 在 CDC 期间 仅包含主键的表中支持 CLOB 数据类型 NCLOB NCLOB 要将此数据类型用于 AWS DMS 您必须允许对特定任务使用 NCLOB 在 CDC 期间 仅包含主键的表中支持 NCLOB 数据类型 XMLTYPE XMLTYPE 目标数据类型仅在 Oracle 到 Oracle 复制任务中相关 当源数据库是 Oracle 时 源数据类型将按 原样 复制到 Oracle 目标 例如 源上的 XMLTYPE 数据类型将创建为目标上的 XMLTYPE 数据类 型 将 Microsoft SQL Server 数据库作为 AWS Database Migration Service 目标 您可以使用 AWS DMS 将数据迁移到 Microsoft SQL Server 数据库 将 SQL Server 数据库作为目标时 您 可以从另一个 SQL Server 数据库或其他支持的数据库之一迁移数据 对于本地和 Amazon EC2 实例数据库 AWS DMS 支持将 SQL Server 版本 R 和 2016 (Enterprise Standard Workgroup 和 Developer 版) 作为目标 不支持 Web 和 Express 版 对于 Amazon RDS 实例数据库 AWS DMS 支持将 SQL Server 版本 2008 R 和 2016 (Enterprise Standard Workgroup 和 Developer 版) 作为目标 不支持 Web 和 Express 版 有关使用 AWS DMS 和 SQL Server 目标数据库的其他详细信息 请参阅以下内容 主题 将 SQL Server 作为 AWS Database Migration Service 目标时的限制 (p. 132) 将 SQL Server 作为 AWS Database Migration Service 目标时的安全要求 (p. 133) 将 SQL Server 作为 AWS DMS 目标时的额外连接属性 (p. 133) Microsoft SQL Server 的目标数据类型 (p. 134) 将 SQL Server 作为 AWS Database Migration Service 目标时的限 制 将 SQL Server 数据库作为 AWS DMS 目标时的限制如下 在您手动创建带有计算列的 SQL Server 目标表时 如果使用 BCP 批量复制实用程序 则不支持完全加载 复制 要使用完全加载复制 请在控制台的高级选项卡中禁用使用 BCP 加载表选项 有关使用 BCP 的更 多信息 请参阅 Microsoft SQL Server 文档 132

139 将 SQL Server 作为目标 复制带有 SQL Server 空间数据类型 (GEOMETRY 和 GEOGRAPHY) 的表时 AWS DMS 将使用默 认空间引用标识符 (SRID) 替换所有您可能插入的 SRID 对于 GEOMETRY 默认 SRID 为 0 对于 GEOGRAPHY 则为 4326 不支持临时表 在事务性应用模式下 如果在目标中手动创建这些表 则迁移临时表可能适用于仅复制任 务 将 SQL Server 作为 AWS Database Migration Service 目标时的安 全要求 下面介绍了使用 AWS DMS 和 Microsoft SQL Server 目标时的安全要求 AWS DMS 用户账户必须在要连接到的 Microsoft SQL Server 数据库上至少具有 db_owner 用户角色 Microsoft SQL Server 系统管理员必须向所有 AWS DMS 用户账户提供此权限 将 SQL Server 作为 AWS DMS 目标时的额外连接属性 您可以使用额外的连接属性配置 SQL Server 目标 在创建目标终端节点时 您可以指定这些设置 应将多 个额外连接属性设置用分号隔开 下表显示了在目标为 SQL Server 时可以使用的额外连接属性 名称 描述 usebcpfullload 使用该属性可通过 BCP 传输数据以进行完全加载操作 如果目 标表包含的身份列在源表中不存在 您必须禁用使用 BCP 加载 数据选项 默认值 Y 有效值 Y/N 示例 usebcpfullload=y BCPPacketSize 用于通过 BCP 传输数据的数据包的最大大小 (以字节为单位) 默认值 有效值 示例 BCPPacketSize=16384 controltablesfilegroup 为 AWS DMS 内部表指定文件组 当复制任务开始时 将 在指定文件组上创建所有内部 AWS DMS 控制表 (awsdms_ apply_exception awsdms_apply awsdms_changes) 默认值 无 有效值 字符串 示例 controltablesfilegroup=filegroup1 以下是用于创建文件组的命令的示例 ALTER DATABASE replicate ADD FILEGROUP Test1FG1; GO ALTER DATABASE replicate 133

140 将 SQL Server 作为目标 名称 描述 ADD FILE ( NAME = test1dat5, FILENAME = 'C:\temp\DATA\t1dat5.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB ) TO FILEGROUP Test1FG1; GO Microsoft SQL Server 的目标数据类型 下表显示了使用 AWS DMS 时支持的 Microsoft SQL Server 目标数据类型以及来自 AWS DMS 数据类型 的默认映射 有关 AWS DMS 数据类型的其他信息 请参阅AWS Database Migration Service 的数据类 型 (p. 257) AWS DMS 数据类型 SQL Server 数据类型 BOOLEAN TINYINT BYTES VARBINARY(length) DATE 对于 SQL Server 2008 和更高版本 请使用 DATE 对于早期版本 如果小数位数等于或小于 3 请使用 DATETIME 在所有 其他情况下 请使用 VARCHAR (37) TIME 对于 SQL Server 2008 和更高版本 请使用 DATETIME2 (%d) 对于早期版本 如果小数位数等于或小于 3 请使用 DATETIME 在所有 其他情况下 请使用 VARCHAR (37) DATETIME 对于 SQL Server 2008 和更高版本中 请使用 DATETIME2 (scale) 对于早期版本 如果小数位数等于或小于 3 请使用 DATETIME 在所有 其他情况下 请使用 VARCHAR (37) INT1 SMALLINT INT2 SMALLINT INT4 INT INT8 BIGINT NUMERIC NUMBER (p,s) REAL4 REAL REAL8 FLOAT STRING 如果列是日期或时间列 请执行以下操作 对于 SQL Server 2008 和更高版本 请使用 DATETIME2 对于早期版本 如果小数位数等于或小于 3 请使用 DATETIME 在所 有其他情况下 请使用 VARCHAR (37) 134

141 将 PostgreSQL 作为目标 AWS DMS 数据类型 SQL Server 数据类型 如果列不是日期或时间列 请使用 VARCHAR (length) UINT1 TINYINT UINT2 SMALLINT UINT4 INT UINT8 BIGINT WSTRING NVARCHAR (length) BLOB VARBINARY(max) IMAGE 要将此数据类型用于 AWS DMS 您必须允许对特定任务使用 BLOB AWS DMS 仅在包含主键的表中支持 BLOB 数据类型 CLOB VARCHAR(max) 要将此数据类型用于 AWS DMS 您必须允许对特定任务使用 CLOB 在 CDC 期间 AWS DMS 仅在包含主键的表中支持 CLOB 数据类型 NCLOB NVARCHAR(max) 要将此数据类型用于 AWS DMS 您必须允许对特定任务使用 NCLOB 在 CDC 期间 AWS DMS 仅在包含主键的表中支持 NCLOB 数据类型 将 PostgreSQL 数据库作为 AWS Database Migration Service 目标 您可以使用 AWS DMS 从另一个 PostgreSQL 数据库或者从其他支持的数据库之一将数据迁移到 PostgreSQL 数据库 本地 Amazon RDS 与 PostgreSQL 兼容的 Amazon Aurora 和 EC2 实例数据库支 持 PostgreSQL 9.4 和更高版本 在完全加载阶段将数据从源迁移到目标时 AWS DMS 将使用逐表加载方法 无法在完全加载阶段保证表顺 序 在完全加载阶段以及应用各个表的缓存事务时 表将不同步 因此 活动引用完整性约束可能会导致任 务在完全加载阶段失败 在 PostgreSQL 中 将使用触发器实施外键 (引用完整性约束) 在完全加载阶段 AWS DMS 每次加载一个 表 强烈建议您在完全加载期间使用以下方法之一禁用外键约束 从实例中临时禁用所有触发器并完成完全加载 在 PostgreSQL 中使用 session_replication_role 参数 在任何给定时间 触发器可能处于以下状态之一 origin replica always 或 disabled 在将 session_replication_role 参数设置为 replica 时 只有处于 replica 状态的触发器是活动触发 器 并且它们在被调用时触发 否则 触发器保持非活动状态 PostgreSQL 具有故障保护机制以防止截断表 即使设置了 session_replication_role 您可以 将该机制作为禁用触发器的替代方法 以帮助完成完全加载运行 为此 请将目标表准备模式设置为 DO_NOTHING 否则 在具有外键约束时 DROP 和 TRUNCATE 操作将失败 在 Amazon RDS 中 您可以使用参数组控制该参数的设置 对于在 Amazon EC2 上运行的 PostgreSQL 实 例 您可以直接设置该参数 135

142 将 PostgreSQL 作为目标 有关将 PostgreSQL 数据库作为 AWS DMS 目标的其他详细信息 请参阅以下章节 主题 将 PostgreSQL 作为 AWS Database Migration Service 目标时的限制 (p. 136) 将 PostgreSQL 数据库作为 AWS Database Migration Service 目标时的安全要求 (p. 136) 将 PostgreSQL 作为 AWS DMS 目标时的额外连接属性 (p. 136) PostgreSQL 的目标数据类型 (p. 137) 将 PostgreSQL 作为 AWS Database Migration Service 目标时的 限制 将 PostgreSQL 数据库作为 AWS DMS 目标时的限制如下 JSON 数据类型转换为本机 CLOB 数据类型 在 Oracle 向 PostgreSQL 迁移的过程中 如果 Oracle 中的一列包含 NULL 字符 (十六进制值 U +0000) AWS DMS 会将这些 NULL 字符转换为空格 (十六进制值 U+0020) 这是出于 PostgreSQL 限制 的原因 将 PostgreSQL 数据库作为 AWS Database Migration Service 目 标时的安全要求 出于安全目的 用于数据迁移的用户账户 必须是您作为目标的任意 PostgreSQL 数据库中的注册用户 将 PostgreSQL 作为 AWS DMS 目标时的额外连接属性 您可以使用额外的连接属性配置 PostgreSQL 目标 在创建目标终端节点时 您可以指定这些设置 应将多 个额外连接属性设置用分号隔开 下表显示了可用于将 PostgreSQL 配置为 AWS DMS 的目标的额外连接属性 名称 描述 maxfilesize 指定用于将数据传输到 PostgreSQL 的任何 CSV 文件的最大大 小 (KB) 默认值 KB (32 MB) 有效值 示例 maxfilesize=512 executetimeout 设置 PostgreSQL 实例的客户端语句超时 (以秒为单位) 默认 值为 60 秒 示例 executetimeout=100 afterconnectscript=set 添加此属性可让 AWS DMS 绕过所有外键和用户触发器 此操 session_replication_role='replica' 作会显著减少使用全负载模式时批量加载数据所需的时间 示例 afterconnectscript=set session_replication_role='replica' 136

143 将 PostgreSQL 作为目标 PostgreSQL 的目标数据类型 AWS DMS 的 PostgreSQL 数据库终端节点支持大多数 PostgreSQL 数据库数据类型 下表显示了使用 AWS DMS 时支持的 PostgreSQL 数据库目标数据类型以及来自 AWS DMS 数据类型的默认映射 该表的后面列 出了不受支持的数据类型 有关 AWS DMS 数据类型的其他信息 请参阅AWS Database Migration Service 的数据类型 (p. 257) AWS DMS 数据类型 PostgreSQL 数据类型 BOOL BOOL BYTES BYTEA DATE DATE TIME TIME TIMESTAMP 如果小数位数介于 0 和 6 之间 请使用 TIMESTAMP 如果小数位数介于 7 和 9 之间 请使用 VARCHAR (37) INT1 SMALLINT INT2 SMALLINT INT4 INTEGER INT8 BIGINT NUMERIC DECIMAL (P,S) REAL4 FLOAT4 REAL8 FLOAT8 STRING 如果长度介于 1 和 之间 请使用 VARCHAR (以字节为单位的长 度) 如果长度介于 和 之间 请使用 VARCHAR (65535) UINT1 SMALLINT UINT2 INTEGER UINT4 BIGINT UINT8 BIGINT WSTRING 如果长度介于 1 和 之间 请使用 VARCHAR (以字节为单位的长 度) 如果长度介于 和 之间 请使用 VARCHAR (65535) BCLOB BYTEA NCLOB TEXT CLOB TEXT 137

144 使用 MySQL 作为目标 Note 在从 PostgreSQL 源复制时 AWS DMS 将为所有列 (带用户定义的数据类型的列除外) 创建带相同 数据类型的目标表 在此类情况下 在目标中创建数据类型作为 可变字符 使用兼容 MySQL 的数据库作为 AWS Database Migration Service 目标 您可以使用 AWS DMS 将数据从 AWS DMS 支持的任一源数据引擎迁移到与 MySQL 兼容的任何数据库 如果您要迁移到与 MySQL 兼容的本地数据库 则 AWS DMS 要求您的源引擎位于 AWS 生态系统中 该引 擎可以位于 Amazon 托管服务 (如 Amazon RDS Amazon Aurora 或 Amazon S3) 上 或者 该引擎也可以 位于 Amazon EC2 上的自管理数据库中 您可以使用 SSL 来加密 MySQL 兼容终端节点与复制实例之间的连接 有关将 SSL 用于 MySQL 兼容终端 节点的更多信息 请参阅将 SSL 用于 AWS Database Migration Service (p. 41) 支持 MySQL 版本 和 5.7 以及 MariaDB 和 Aurora MySQL 您可以使用以下与 MySQL 兼容的数据库作为 AWS DMS 的目标 MySQL Community Edition MySQL Standard Edition MySQL Enterprise Edition MySQL Cluster Carrier Grade Edition MariaDB Community Edition MariaDB Enterprise Edition MariaDB Column Store Amazon Aurora MySQL 有关将与 MySQL 兼容的数据库用作 AWS DMS 的目标的更多详细信息 请参阅以下章节 主题 将与 MySQL 兼容的任何数据库用作 AWS Database Migration Service 的目标 (p. 138) 将与 MySQL 兼容的数据库用作 AWS Database Migration Service 的目标时的限制 (p. 139) 将与 MySQL 兼容的数据库用作 AWS DMS 的目标时的额外连接属性 (p. 139) MySQL 的目标数据类型 (p. 140) 将与 MySQL 兼容的任何数据库用作 AWS Database Migration Service 的目标 在使用与 MySQL 兼容的数据库作为 AWS DMS 的目标之前 请确保您满足以下先决条件 您必须为 AWS DMS 提供一个用户账户 该账户具有对兼容 MySQL 的数据库的读取/写入权限 要创建所 需的权限 请运行以下命令 CREATE USER '<user IDENTIFIED BY '<user password>'; GRANT ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE, SELECT ON <schema>.* TO '<user GRANT ALL PRIVILEGES ON awsdms_control.* TO '<user 138

145 使用 MySQL 作为目标 在完全加载迁移阶段 您必须禁用目标表上的外键 要在完全加载期间在与 MySQL 兼容的数据库上禁用 外键检查 您可以将以下命令添加到目标终端节点的高级部分的额外的连接属性 initstmt=set FOREIGN_KEY_CHECKS=0 将与 MySQL 兼容的数据库用作 AWS Database Migration Service 的目标时的限制 使用 MySQL 数据库作为目标时 AWS DMS 不支持以下内容 数据定义语言 (DDL) 语句 TRUNCATE PARTITION DROP TABLE 和 RENAME TABLE 使用 ALTER TABLE <table_name> ADD COLUMN <column_name> 语句将列添加到表的开头或中 间 当仅更新源表中的 LOB 列时 AWS DMS 不会更新对应的目标列 仅当在同一事物中至少更新了一个其他 列时 目标 LOB 才会更新 当在完全加载任务中将数据加载到与 MySQL 兼容的目标时 AWS DMS 不会报告任务日志中的重复键错 误 当您将列值更新为其现有值时 与 MySQL 兼容的数据库会返回 0 rows affected 警告 尽管此行为在 技术上没有错误 但它与其他数据库引擎应对这种情况的方式不同 例如 Oracle 执行一个行的更新 对 于与 MySQL 兼容的数据库 AWS DMS 在 awsdms_apply_exceptions 控制表中生成了一个条目 并记录 了以下警告 Some changes from the source database had no impact when applied to the target database. See awsdms_apply_exceptions table for details. 将与 MySQL 兼容的数据库用作 AWS DMS 的目标时的额外连接 属性 您可以使用额外的连接属性配置与 MySQL 兼容的目标 在创建目标终端节点时 您可以指定这些设置 对 于多个额外连接属性设置 应该用分号将它们彼此隔开 下表显示了在为 AWS DMS 创建与 MySQL 兼容的目标时可以使用的额外配置设置 名称 描述 targetdbtype 指定将目标上的源表迁移到的位置 (单个数据库或多个数据 库) 默认值 MULTIPLE_DATABASES 有效值 SPECIFIC_DATABASE MULTIPLE_DATABASES 示例 targetdbtype=multiple_databases parallelloadthreads 改进了将数据加载到与 MySQL 兼容的目标数据库时的性能 指定用于将数据加载到与 MySQL 兼容的目标数据库中的线程 的数目 设置大量线程可能会对数据库性能产生不利影响 因 为每个线程均需要一个单独的连接 139

146 使用 MySQL 作为目标 名称 描述 默认值 1 有效值 1 5 示例 parallelloadthreads=1 initstmt=set FOREIGN_KEY_CHECKS=0 禁用外键检查 initstmt=set time-zone 指定与 MySQL 兼容的目标数据库的时区 默认值 UTC 有效值 要使用的时区的三个或四个字符的缩写形式 有效值 是承载与 MySQL 兼容的目标数据库的操作系统的标准时区缩 写形式 示例 initstmt=set time_zone=utc afterconnectscript=set 指定与 MySQL 兼容的目标应将收到的语句转换为 latin1 字符 character_set_connection='latin1' 集 该字符集是数据库的默认编入字符集 此参数通常可在从 UTF8 客户端转换时提高性能 指定用于将数据传输到与 MySQL 兼容的数据库的任何 CSV 文 件的最大大小 (KB) maxfilesize 默认值 KB (32 MB) 有效值 示例 maxfilesize=512 CleanSrcMetadataOnMismatch 出现不匹配情况时在复制实例上清除并重新创建表元数据信 息 例如 对表运行更改 DDL 可能会产生有关在复制实例中缓 存的表的不同信息 布尔值 默认值 false 示例 CleanSrcMetadataOnMismatch=false MySQL 的目标数据类型 下表显示了使用 AWS DMS 时支持的 MySQL 数据库目标数据类型以及来自 AWS DMS 数据类型的默认映 射 有关 AWS DMS 数据类型的其他信息 请参阅AWS Database Migration Service 的数据类型 (p. 257) AWS DMS 数据类型 MySQL 数据类型 BOOLEAN BOOLEAN BYTES 如果长度介于 1 和 之间 请使用 VARBINARY (length) 如果长度介于 和 之间 请使用 LONGLOB 140

147 使用 MySQL 作为目标 AWS DMS 数据类型 MySQL 数据类型 DATE DATE TIME TIME TIMESTAMP 如果小数位数 => 0 且 =< 6 请使用 DATETIME (Scale) 如果小数位数 => 7 且 = < 9 请使用 VARCHAR (37) INT1 TINYINT INT2 SMALLINT INT4 INTEGER INT8 BIGINT NUMERIC DECIMAL (p,s) REAL4 FLOAT REAL8 DOUBLE PRECISION STRING 如果长度介于 1 和 之间 请使用 VARCHAR (length) 如果长度介于 和 之间 请使用 LONGTEXT UINT1 UNSIGNED TINYINT UINT2 UNSIGNED SMALLINT UINT4 UNSIGNED INTEGER UINT8 UNSIGNED BIGINT WSTRING 如果长度介于 1 和 之间 请使用 VARCHAR (length) 如果长度介于 和 之间 请使用 LONGTEXT BLOB 如果长度介于 1 和 之间 请使用 BLOB 如果长度介于 和 之间 请使用 LONGBLOB 如果长度为 0 请使用 LONGBLOB (完全 LOB 支 持) 141

148 使用 Amazon Redshift 作为目标 AWS DMS 数据类型 MySQL 数据类型 NCLOB 如果长度介于 1 和 之间 请使用 TEXT 如果长度介于 和 之间 请 将 LONGTEXT 与 ucs2 一起用于 CHARACTER SET 如果长度为 0 请将 LONGTEXT (完全 LOB 支持) 与 ucs2 一起用于 CHARACTER SET CLOB 如果长度介于 1 和 之间 请使用 TEXT 如果长度介于 65,536 和 之间 请使用 LONGTEXT 如果长度为 0 请使用 LONGTEXT (完全 LOB 支 持) 将 Amazon Redshift 数据库作为 AWS Database Migration Service 目标 您可以使用 AWS Database Migration Service 将数据迁移到 Amazon Redshift 数据库 Amazon Redshift 是 一种完全托管的 PB 级云中数据仓库服务 使用 Amazon Redshift 数据库作为目标 您可以从所有其他支持 的源数据库迁移数据 Amazon Redshift 群集必须与复制实例处于相同的 AWS 账户和相同的 AWS 区域中 在将数据库迁移到 Amazon Redshift 期间 AWS DMS 先将数据移动到 S3 存储桶 文件位于 S3 存储桶 中之后 AWS DMS 随之将其传输到 Amazon Redshift 数据仓库中正确的表 AWS DMS 在与 Amazon Redshift 数据库相同的 AWS 区域中创建 S3 存储桶 AWS DMS 复制实例必须位于同一个区域中 如果您使用 AWS Command Line Interface (AWS CLI) 或 AWS DMS API 将数据迁移到 Amazon Redshift 则必须设置 AWS Identity and Access Management (IAM) 角色以允许 S3 访问 有关创建此 IAM 角色的更 多信息 请参阅 创建 IAM 角色以用于 AWS CLI 和 AWS DMS API (p. 30) Amazon Redshift 终端节点为以下过程提供了完全的自动化 架构生成和数据类型映射 源数据库表的完全加载 增量加载对源表进行的更改 应用对源表的数据定义语言 (DDL) 的架构更改 完全加载和更改数据捕获 (CDC) 流程之间的同步 AWS Database Migration Service 支持完全加载和更改处理操作 AWS DMS 从源数据库读取数据并创建一 系列逗号分隔值 (CSV) 文件 对于完全加载操作 AWS DMS 为每个表创建文件 然后 AWS DMS 将各个 表的表文件复制到 Amazon S3 中的单独文件夹 当文件上传到 Amazon S3 之后 AWS DMS 会发送 copy 命令 文件中的数据将复制到 Amazon Redshift 对于更改处理操作 AWS DMS 将净更改复制到 CSV 文 件 接下来 AWS DMS 将净更改文件上传到 Amazon S3 并将数据复制到 Amazon Redshift 有关将 Amazon Redshift 作为 AWS DMS 目标的其他详细信息 请参阅以下章节 主题 将 Amazon Redshift 数据库作为 AWS Database Migration Service 目标的先决条件 (p. 143) 将 Amazon Redshift 用作 AWS Database Migration Service 的目标时的限制 (p. 143) 142

149 使用 Amazon Redshift 作为目标 将 Amazon Redshift 数据库配置为 AWS Database Migration Service 目标 (p. 143) 将 Amazon Redshift 作为 AWS Database Migration Service 目标时使用增强型 VPC 路由 (p. 144) 将 Amazon Redshift 用作 AWS DMS 的目标时的额外连接属性 (p. 144) Amazon Redshift 的目标数据类型 (p. 146) 将 Amazon Redshift 数据库作为 AWS Database Migration Service 目标的先决条件 以下列表描述了将 Amazon Redshift 用作数据迁移目标时所需的先决条件 使用 AWS 管理控制台启动 Amazon Redshift 群集 您应记录有关您 AWS 账户和 Amazon Redshift 群集 的基本信息 例如密码 用户名和数据库名称 在创建 Amazon Redshift 目标终端节点时 您需要这些 值 Amazon Redshift 群集必须与复制实例处于相同的 AWS 账户和相同的 AWS 区域中 AWS DMS 复制实例需要与您群集所使用的 Amazon Redshift 终端节点 (主机名和端口) 的网络连接 AWS DMS 使用 Amazon S3 存储桶将数据传输到 Amazon Redshift 数据库 对于 AWS DMS 创建存储 桶 DMS 控制台使用 Amazon IAM 角色 dms-access-for-endpoint 如果您使用 AWS CLI 或 DMS API 创建数据库迁移并将 Amazon Redshift 作为目标数据库 您必须创建此 IAM 角色 有关创建此角色的 更多信息 请参阅 创建 IAM 角色以用于 AWS CLI 和 AWS DMS API (p. 30) AWS DMS 将 BLOB CLOB 和 NCLOB 转换为目标 Amazon Redshift 实例上的 VARCHAR Amazon Redshift 不支持大于 64 KB 的 VARCHAR 数据类型 因此您无法在 Amazon Redshift 上存储传统 LOB 将 Amazon Redshift 用作 AWS Database Migration Service 的目 标时的限制 使用 Amazon Redshift 数据库作为目标时 AWS DMS 不支持以下内容 不支持以下 DDL ALTER TABLE <table name> MODIFY COLUMN <column name> <data type>; AWS DMS 无法迁移或复制对名称以下划线 (_) 开头的架构所做的更改 如果您具有名称以下划线开头的 架构 请使用映射转换重命名目标上的架构 Amazon Redshift 不支持大于 64 KB 的 VARCHAR 传统数据库中的 LOB 不能存储在 Amazon Redshift 中 将 Amazon Redshift 数据库配置为 AWS Database Migration Service 目标 AWS Database Migration Service 必须配置为使用 Amazon Redshift 实例 下表描述了可用于 Amazon Redshift 终端节点的配置属性 属性 说明 server 您所使用的 Amazon Redshift 群集的名称 port (远程调试端口) Amazon Redshift 的端口号 默认值是 5439 username 已注册用户的 Amazon Redshift 用户名 143

150 使用 Amazon Redshift 作为目标 属性 说明 密码 在 username 属性中指定的用户的密码 database 您所使用的 Amazon Redshift 数据仓库 (服务) 的名称 如果您要添加额外的连接字符串属性到 Amazon Redshift 终端节点 您可以指定 maxfilesize 和 filetransferuploadstreams 属性 有关这些属性的更多信息 请参阅将 Amazon Redshift 用作 AWS DMS 的目标时的额外连接属性 (p. 144) 将 Amazon Redshift 作为 AWS Database Migration Service 目标 时使用增强型 VPC 路由 如果您将增强型 VPC 路由 功能用于 Amazon Redshift 目标 该功能将强制 Amazon Redshift 群集与数据存 储库之间的所有 COPY 流量流经您的 Amazon VPC 由于增强型 VPC 路由 会影响 Amazon Redshift 访问 其他资源的方式 因此如果您未正确配置 VPC COPY 命令可能会失败 AWS DMS 使用 COPY 命令将 S3 中的数据移动到 Amazon Redshift 群集 因此可能会受此行为的影响 AWS DMS 将数据加载到 Amazon Redshift 目标时采用的步骤如下 1. AWS DMS 将数据从源复制到复制服务器上的 CSV 文件 2. AWS DMS 使用 AWS 开发工具包将 CSV 文件复制到您账户上的 S3 存储桶 3. 然后 AWS DMS 在 Amazon Redshift 中使用 COPY 命令将数据从 S3 中的 CSV 文件复制到 Amazon Redshift 中相应的表 如果未启用增强型 VPC 路由 则 Amazon Redshift 会通过 Internet 路由流量 包括至 AWS 网络中的其他服 务的流量 如果未启用该功能 您不必配置网络路径 如果启用此功能 您必须专门创建您群集的 VPC 与数 据源之间的网络路径 有关所需配置的更多信息 请参阅 Amazon Redshift 文档中的增强型 VPC 路由 将 Amazon Redshift 用作 AWS DMS 的目标时的额外连接属性 您可以使用额外的连接属性配置 Amazon Redshift 目标 在创建源终端节点时 您可以指定这些设置 应将 多个额外连接属性设置用分号隔开 下表显示了在目标为 Amazon Redshift 时的可用额外连接属性 名称 描述 maxfilesize 指定用于将数据传输到 Amazon Redshift 的任何 CSV 文件的 最大大小 (KB) 默认值 KB (32 MB) 有效值 示例 maxfilesize=512 filetransferuploadstreams 指定用于上传单个文件的线程的数目 调整渲染效果的缩放 有效值 1 64 示例 filetransferuploadstreams=20 144

151 使用 Amazon Redshift 作为目标 名称 描述 acceptanydate 指定是否接受任何日期格式 包括无效和日期格式 如 布尔值 默认值 false 有效值 true false 示例 acceptanydate=true dateformat 指定日期格式 默认情况下 这是一个字符串输入且为空 默认格式为 YYYY-MM-DD 但您可以将其更改为 DD-MMYYYY 如果您的日期或时间值使用不同的格式 请结合使 用 auto 参数与 dateformat 参数 auto 参数将识别使用 dateformat 字符串时不受支持的一些格式 auto 关键字区 分大小写 默认值 empty 有效值 'dateformat_string' 或 auto 示例 dateformat=auto timeformat 指定时间格式 默认情况下 这是一个字符串输入且为 空 auto 参数将识别使用 timeformat 字符串时不受支持的 一些格式 如果您的日期和时间值使用各不相同的格式 请结 合使用 auto 参数与 timeformat 参数 调整渲染效果的缩放 有效值 'timeformat_string' 'auto' 'epochsecs' 'epochmillisecs' 示例 timeformat=auto emptyasnull 指定 AWS DMS 是否应迁移作为 null 的空 CHAR 和 VARCHAR 字段 值 true 可将空的 CHAR 和 VARCHAR 字段 设置为 null 默认值 false 有效值 true false 示例 emptyasnull=true truncatecolumns 将列中的数据截断为合适的字符数以符合列规范 仅适用于具 有 VARCHAR 或 CHAR 数据类型的列以及大小为 4 MB 或以 下的行 默认值 false 有效值 true false 示例 truncatecolumns=true; 145

152 使用 Amazon Redshift 作为目标 名称 描述 removequotes 删除传入数据中的字符串周围的引号 将保留引号中的所有字 符 包括分隔符 有关删除 AWS Redshift 目标引号的更多 信息 请参阅 Redshift 文档 默认值 false 有效值 true false 示例 removequotes=true; trimblanks 删除 VARCHAR 字符串的尾部空格字符 此参数仅适用于具有 VARCHAR 数据类型的列 默认值 false 有效值 true false 示例 trimblanks=false; Amazon Redshift 的目标数据类型 AWS DMS 的 Amazon Redshift 终端节点支持大多数 Amazon Redshift 数据类型 下表显示了使用 AWS DMS 时支持的 Amazon Redshift 目标数据类型以及来自 AWS DMS 数据类型的默认映射 有关 AWS DMS 数据类型的其他信息 请参阅AWS Database Migration Service 的数据类型 (p. 257) AWS DMS 数据类型 Amazon Redshift 数据类型 BOOLEAN BOOL BYTES VARCHAR (Length) DATE DATE TIME VARCHAR(20) DATETIME 如果小数位数 => 0 且 = < 6 请使用 TIMESTAMP (s) 如果小数位数 => 7 且 =< 9 请使用 VARCHAR(37) INT1 INT2 INT2 INT2 INT4 INT4 INT8 INT8 NUMERIC 如果小数位数 => 0 且 =< 37 请使用 146

153 将 SAP ASE 作为目标 AWS DMS 数据类型 Amazon Redshift 数据类型 NUMERIC (p,s) 如果小数位数 => 38 且 =< 127 请使用 VARCHAR (Length) REAL4 FLOAT4 REAL8 FLOAT8 STRING 如果长度为 1 65,535 请使用 VARCHAR (以字节 为单位的长度) 如果长度为 65,536 2,147,483,647 请使用 VARCHAR (65535) UINT1 INT2 UINT2 INT2 UINT4 INT4 UINT8 NUMERIC (20,0) WSTRING 如果长度为 1 65,535 请使用 NVARCHAR (以字 节为单位的长度) 如果长度为 65,536 2,147,483,647 请使用 NVARCHAR (65535) BLOB VARCHAR (最大 LOB 大小 *2) 最大 LOB 大小不能超过 31 KB Amazon Redshift 不支持大于 64 KB 的 VARCHAR NCLOB NVARCHAR (最大 LOB 大小) 最大 LOB 大小不能超过 63 KB Amazon Redshift 不支持大于 64 KB 的 VARCHAR CLOB VARCHAR (最大 LOB 大小 最大 LOB 大小不能超过 63 KB Amazon Redshift 不支持大于 64 KB 的 VARCHAR 将 SAP ASE 数据库作为 AWS Database Migration Service 目标 您可以使用 AWS DMS 从任意支持的数据源将数据迁移到 SAP Adaptive Server Enterprise (ASE) (以前称 为 Sybase) 数据库 支持 SAP ASE 版本 和更高版本 147

154 将 SAP ASE 作为目标 将 SAP ASE 数据库作为 AWS Database Migration Service 目标 的先决条件 在您将 SAP ASE 数据库作为 AWS DMS 目标之前 请确保您满足以下先决条件 您必须向 AWS DMS 用户提供 SAP ASE 账户访问权限 此用户必须具有 SAP ASE 数据库中的读/写权 限 复制到配置了非拉丁语 (例如 中文) 的 Windows EC2 实例上的 SAP ASE 版本 15.7 时 AWS DMS 要求 在目标 SAP ASE 计算机上安装 SAP ASE 15.7 SP121 将 SAP ASE 作为 AWS DMS 目标时的额外连接属性 您可以使用额外的连接属性配置 SAP ASE 目标 在创建目标终端节点时 您可以指定这些设置 应将多个 额外连接属性设置用分号隔开 下表显示了将 SAP ASE 作为目标时的可用额外连接属性 名称 描述 enablereplication 设置为 Y 可自动启用 SAP ASE 复制 仅在尚未启用 SAP ASE 复制时需要这样做 additionalconnectionproperties 要指定的任何其他 ODBC 连接参数 Note 如果连接字符串中指定的用户名或密码包含非拉丁字符 (例如中文) 则需要以下属 性 charset=gb18030 SAP ASE 的目标数据类型 下表显示了使用 AWS DMS 时支持的 SAP ASE 数据库目标数据类型以及来自 AWS DMS 数据类型的默认映 射 有关 AWS DMS 数据类型的其他信息 请参阅AWS Database Migration Service 的数据类型 (p. 257) AWS DMS 数据类型 SAP ASE 数据类型 BOOLEAN BIT BYTES VARBINARY (Length) DATE DATE TIME TIME TIMESTAMP 如果小数位数 => 0 且 = < 6 请使用 BIGDATETIME 如果小数位数 => 7 且 = < 9 请使用 VARCHAR (37) INT1 TINYINT INT2 SMALLINT 148

155 将 Amazon S3 作为目标 AWS DMS 数据类型 SAP ASE 数据类型 INT4 INTEGER INT8 BIGINT NUMERIC NUMERIC (p,s) REAL4 REAL REAL8 DOUBLE PRECISION STRING VARCHAR (Length) UINT1 TINYINT UINT2 UNSIGNED SMALLINT UINT4 UNSIGNED INTEGER UINT8 UNSIGNED BIGINT WSTRING VARCHAR (Length) BLOB IMAGE CLOB UNITEXT NCLOB TEXT AWS DMS 不支持包含带以下数据类型的字段的表 具有这些数据类型的复制列显示为 null 用户定义的类型 (UDT) 将 Amazon S3 作为 AWS Database Migration Service 目标 您可以使用 AWS DMS 从任意支持的数据库源将数据迁移到 Amazon S3 使用 S3 作为 AWS DMS 任务 的目标时 完全加载和更改数据捕获 (CDC) 数据以逗号分隔值 (CSV) 格式写入 AWS DMS 使用增量计数 器命名完全加载期间创建的文件 例如 LOAD00001.csv LOAD00002 等等 AWS DMS 使用时间戳命名 CDC 文件 例如 csv 对于各个源表 AWS DMS 在指定的目标文件夹下创建文件 夹 AWS DMS 将所有完全加载和 CDC 文件写入到指定的 S3 存储桶 参数 bucketfolder 包含.csv 文件在上传到 S3 存储桶之前的存储位置 表数据使用以下格式存储在 S3 存储桶中 <schema_name>/<table_name>/load001.csv <schema_name>/<table_name>/load002.csv <schema_name>/<table_name>/<time-stamp>.csv 您可以使用额外连接属性指定列分隔符 行分隔符以及其他参数 有关额外连接属性的更多信息 请参阅此 部分结尾的将 Amazon S3 用作 AWS DMS 目标时的额外连接属性 (p. 151) 在使用 AWS DMS 复制数据更改时 CSV 输出文件的第一列指示如何更改数据 如下所示 I,101,Smith,Bob,4-Jun-14,New York 149

156 将 Amazon S3 作为目标 U,101,Smith,Bob,8-Oct-15,Los Angeles U,101,Smith,Bob,13-Mar-17,Dallas D,101,Smith,Bob,13-Mar-17,Dallas 对于该示例 假设在源数据库中具有一个 EMPLOYEE 表 AWS DMS 将数据写入到 CSV 文件以响应以下事 件 14 年 6 月 4 日 纽约办事处聘用了一名新员工 (Bob Smith 员工 ID 101) 在 CSV 文件中 第一列中的 I 指示在源数据库的 EMPLOYEE 表中插入 (INSERT) 了一个新行 15 年 10 月 8 日 Bob 调到了洛杉矶办事处 在 CSV 文件中 U 指示更新 (UPDATE) 了 EMPLOYEE 表 中的相应行以反映 Bob 的新办公地点 该行的其余部分反映更新 (UPDATE) 后如何显示该 EMPLOYEE 表 行 17 年 3 月 13 日 Bob 又调到了达拉斯办事处 在 CSV 文件中 U 指示再次更新 (UPDATE) 了该行 该行 的其余部分反映更新 (UPDATE) 后如何显示该 EMPLOYEE 表行 在达拉斯工作一段时间后 Bob 离开了公司 在 CSV 文件中 D 指示在源表中删除 (DELETE) 了该行 该 行的其余部分反映在删除之前如何显示该 EMPLOYEE 表行 将 Amazon S3 作为目标的先决条件 作为目标的 Amazon S3 存储桶必须位于与用于迁移数据的 DMS 复制实例相同的区域中 您在迁移中使用的 AWS 账户必须具有对用作目标的 Amazon S3 存储桶的写入和删除访问权限 向用于创建 迁移任务的用户账户分配的角色必须具有以下权限集合 "Version": " ", "Statement": [ "Effect": "Allow", "Action": [ "s3:putobject", "s3:deleteobject" ], "Resource": [ "arn:aws:s3:::buckettest2*" ], "Effect": "Allow", "Action": [ "s3:listbucket" ], "Resource": [ "arn:aws:s3:::buckettest2*" ] ] 将 Amazon S3 作为目标的限制 以下限制适用于您作为目标的 Amazon S3 中的文件 只支持以下数据定义语言 (DDL) 命令 TRUNCATE TABLE DROP TABLE 和 CREATE TABLE 不支持完整 LOB 模式 不支持在完全加载期间对源表结构进行更改 支持在完全加载期间更改数据 150

157 将 Amazon S3 作为目标 将多个任务从同一源表复制到同一目标 S3 终端节点存储桶将导致这些任务写入到同一文件 如果您的数 据源来自同一个表 我们建议您指定不同的目标终端节点 (存储桶) 安全性 要使用 Amazon S3 作为目标 在迁移中使用的账户必须具有对用作目标的 Amazon S3 存储桶的写入和 删除访问权限 对于具有访问 Amazon S3 所需权限的 IAM 角色 您必须指定该角色的 Amazon 资源名称 (ARN) 对于 Amazon S3 AWS DMS 支持一组预定义的授权 (称为标准 ACL) 每个标准 ACL 具有一组被授权者和 权限 可用于为 Amazon S3 存储桶设置权限 您可以将 cannedaclforobjects 用于 S3 目标终端节点的 连接字符串属性以指定标准 ACL 有关使用额外连接属性 cannedaclforobjects 的更多信息 请参阅将 Amazon S3 用作 AWS DMS 目标时的额外连接属性 (p. 151) 有关 Amazon S3 标准 ACL 的更多信息 请 参阅标准 ACL 用于迁移的 IAM 角色必须能够执行 s3:putobjectacl API 操作 将 Amazon S3 用作 AWS DMS 目标时的额外连接属性 您可以指定以下选项作为额外的连接属性 应将多个额外连接属性设置用分号隔开 选项 描述 addcolumnname 一个可选参数 可用于将列名称信息添加到.csv 输出文件中 默认为 false 示例 addcolumnname=true; bucketfolder 一个可选参数 用于在 S3 存储桶中设置文件夹的名称 如果提供 则将在路径 <bucketfolder>/<schema_name>/<table_name>/ 中创建表 如果未指定该参 数 则使用的路径为 <schema_name >/<table_name >/ 示例 bucketfolder=testfolder; bucketname S3 存储桶的名称 示例 bucketname=buckettest; cannedaclforobjects 允许 AWS DMS 为写入到 S3 存储桶的对象指定预定义 (标准) 访问控制列表 有关 Amazon S3 标准 ACL 的更多信息 请参阅 Amazon S3 开发人员指南中 的标准 ACL 示例 cannedaclforobjects=public_read; 该属性的有效值为 NONE PRIVATE PUBLIC_READ PUBLIC_READ_WRITE AUTHENTICATED_READ 如果未指定该属性 则默认为 NONE cdcinsertsonly 一个可选参数 用于仅将 INSERT 操作写入到.CSV 输出文件中 默认情况 下.CSV 记录中的第一个字段包含字母 I (插入) U (更新) 或 D (删除) 以指 151

158 使用 Amazon DynamoDB 用作目标 选项 描述 示是否在源数据库中插入 更新或删除了行 如果 cdcinsertsonly 设置为 true 则仅在 CSV 文件中记录 INSERT 而不添加任何 I 注释 示例 cdcinsertsonly=true; compressiontype 一个使用 GZIP 压缩目标文件的可选参数 设置为 NONE (默认值) 或不使用该 参数时 将不压缩文件 示例 compressiontype=gzip; csvrowdelimiter 源文件中用于分隔行的分隔符 默认值为回车符 (\n) 示例 csvrowdelimiter=\n; csvdelimiter 源文件中用于分隔列的分隔符 默认值为逗号 示例 csvdelimiter=,; maxfilesize 指定在完整加载期间 迁移到 S3 目标时所要创建的任意 CSV 文件的最大大小 以 KB 为单位 默认值 KB (1 GB) 有效值 示例 maxfilesize=512 rfc4180 用于控制有数据迁移到 Amazon S3 的 RFC 合规行为的可选参数 将 Amazon S3 用作目标时 如果数据中有引号或新行字符 AWS DMS 随后会使用一个额 外的 " 将整个列括起 数据中的每个引号将被重复两次 这符合 RFC 4180 的 要求 默认为 true 示例 rfc4180=false; 将 Amazon DynamoDB 数据库用作 AWS Database Migration Service 的目标 您可以使用 AWS DMS 将数据迁移到 Amazon DynamoDB 表 Amazon DynamoDB 是一种完全托管的 NoSQL 数据库服务 提供快速而可预测的性能 能够实现无缝扩展 AWS DMS 支持将关系数据库或 MongoDB 用作源 152

159 使用 Amazon DynamoDB 用作目标 在 DynamoDB 中 表 项目和属性是您使用的核心组件 表是项目的集合 而每个项目是属性的集 合 DynamoDB 使用称为分区键的主键来唯一标识表中的各个项目 您还可以使用键和辅助索引来提供更具 灵活性的查询 您将使用对象映射将数据从源数据库迁移到目标 DynamoDB 表 使用对象映射可以确定源数据是否位于目 标中 当 AWS DMS 在 Amazon DynamoDB 目标终端节点上创建表时 它将创建与源数据库终端节点中相同数 量的表 AWS DMS 还会设置几个 Amazon DynamoDB 参数值 创建表的成本取决于要迁移的数据量和表 数 当 AWS DMS 为迁移任务设置 Amazon DynamoDB 参数值时 默认读取容量单位 (RCU) 参数值设置为 200 还会设置写入容量单位 (WCU) 参数值 但该参数值取决于几个其他设置 WCU 参数的默认值为 200 如果 parallelloadthreads 参数设置为大于 1 (默认值为 0) 则 WCU 参数设置为 200 乘以 parallelloadthreads 值 在美国东部 (弗吉尼亚北部) 地区 (us-east-1) 可能的最大 WCU 参数值为 如果 AWS 区域为 useast-1 并且 WCU 参数值大于 则 WCU 参数值设置为 在 us-east-1 以外的 AWS 区域中 可能的最大 WCU 参数值为 对于 us-east-1 以外的任何 AWS 区域 如果 WCU 参数值设置为大于 则 WCU 参数值设置为 从关系数据库迁移到 DynamoDB 表 AWS DMS 支持将数据迁移到 DynamoDB 的标量数据类型 从 Oracle 或 MySQL 等关系数据库迁移到 DynamoDB 时 您可能希望重构存储此数据的方式 目前 AWS DMS 支持单个表到单个表重构到 DynamoDB 标量类型属性 如果您从关系数据库表迁移数据 到 DynamoDB 中 您将从表中获取数据并将其重新格式化为 DynamoDB 标量数据类型属性 这些属性可以 接受多个列中的数据 并且您可以直接将列映射到属性 AWS DMS 支持以下 DynamoDB 标量数据类型 字符串 数字 Boolean Note 源中的 NULL 数据在目标上会被忽略 将 DynamoDB 作为 AWS Database Migration Service 目标时的先 决条件 在您开始将 DynamoDB 数据库用作 AWS DMS 目标之前 请确保您创建了一个 IAM 角色 该角色允许 AWS DMS 代入并授予了对要迁移到的 DynamoDB 表的访问权限 以下示例角色策略中显示了所需的最低 访问权限集合 153

160 使用 Amazon DynamoDB 用作目标 "Version": " ", "Statement": [ "Effect": "Allow", "Principal": "Service": "dms.amazonaws.com", "Action": "sts:assumerole" ] 您在迁移到 DynamoDB 时使用的角色必须具有以下权限 "Version": " ", "Statement": [ "Effect": "Allow", "Action": [ "dynamodb:putitem", "dynamodb:createtable", "dynamodb:describetable", "dynamodb:deletetable", "dynamodb:deleteitem" ], "Resource": [ "arn:aws:dynamodb:us-west-2:account-id:table/name1", "arn:aws:dynamodb:us-west-2:account-id:table/othername*", ], ] "Effect": "Allow", "Action": [ "dynamodb:listtables" ], "Resource": "*" 将 DynamoDB 作为 AWS Database Migration Service 目标时的限 制 将 Amazon DynamoDB 作为目标时存在以下限制 DynamoDB 将数字数据类型的精度限制为 38 位 所有具有更高精度的数据类型应作为字符串存储 您需 要使用对象映射功能明确指定这一点 由于 Amazon DynamoDB 没有日期数据类型 使用日期数据类型的数据将转换为字符串 Amazon DynamoDB 不允许更新主键属性 在将持续复制与更改数据捕获 (CDC) 一起使用时 该限制是 非常重要的 因为这可能会导致在目标中包含不需要的数据 根据对象映射的方式 更新主键的 CDC 操 作可能会失败 或者插入的新项目包含更新的主键和不完整的数据 AWS DMS 仅支持复制具有非复合主键的表 除非您为具有自定义分区键和/或排序键的目标表指定对象映 射 AWS DMS 不支持 LOB 数据 除非这是 CLOB 迁移数据时 AWS DMS 将 CLOB 数据转换为 DynamoDB 字符串 154

161 使用 Amazon DynamoDB 用作目标 使用对象映射将数据迁移到 DynamoDB AWS DMS 使用表映射规则将数据从源映射到目标 DynamoDB 表 要将数据映射到 DynamoDB 目标 您必 须使用称为 object-mapping 的表映射规则类型 利用对象映射可以定义属性名称以及要迁移到其中的数据 您在使用对象映射时必须具有选择规则 除了具有分区键和可选的排序键以外 Amazon DynamoDB 没有预设结构 如果您有非复合主键 AWS DMS 将使用该主键 如果您有复合主键或者希望使用排序键 请在目标 DynamoDB 表中定义这些键以及其 他属性 要创建对象映射规则 您应将 rule-type 指定为 object-mapping 此规则指定您要使用的对象映射的类 型 规则的结构如下所示 "rules": [ "rule-type": "object-mapping", "rule-id": "<id>", "rule-name": "<name>", "rule-action": "<valid object-mapping rule action>", "object-locator": "schema-name": "<case-sensitive schema name>", "table-name": "", "target-table-name": "<table_name>", ] AWS DMS 当前只支持 map-record-to-record 和 map-record-to-document 作为 rule-action 参数的 有效值 map-record-to-record 和 map-record-to-document 指定 AWS DMS 的默认操作 用于记录未在 exclude-columns 属性列表中排除的内容 这些值不会以任何方式影响属性映射 map-record-to-record 可在从关系数据库迁移到 DynamoDB 时使用 它使用关系数据库的主键作 为 Amazon DynamoDB 中的分区键 并为源数据库中的每个列创建一个属性 使用 map-recordto-record 时 对于未在 exclude-columns 属性列表中列出的任意源表列 AWS DMS 在目标 DynamoDB 实例上创建对应的属性 不论源列是否在属性映射中使用 map-record-to-document 使用属性名 _doc 将源列放入目标上的单个扁平化 DynamoDB 映射中 在 使用 map-record-to-document 时 对于源表中未在 exclude-columns 属性列表中列出的任何 列 AWS DMS 将数据放入源上名为 _doc 的单个扁平化 DynamoDB 映射属性 了解 rule-action 参数 map-record-to-record 和 map-record-to-document 之间的不同之处的方法是 在 实际使用中查看两个参数 对于本示例 假定您使用关系数据库表行开始处理 该行具有以下结构和数据 要将此信息迁移到 DynamoDB 您将创建规则来将数据映射到 DynamoDB 表项目中 请注意为 excludecolumns 参数列出的列 这些列不直接映射到目标上 而是使用属性映射将数据组合到新项目中 例如 将 FirstName 和 LastName 分组到一起以成为 DynamoDB 目标上的 CustomerName 未排除 NickName 和 income "rules": [ 155

162 使用 Amazon DynamoDB 用作目标 "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "%", "rule-action": "include", "rule-type": "object-mapping", "rule-id": "1", "rule-name": "TransformToDDB", "rule-action": "map-record-to-record", "object-locator": "schema-name": "test", "table-name": "customer",, "target-table-name": "customer_t", "mapping-parameters": "partition-key-name": "CustomerName", "exclude-columns": [ "FirstName", "LastName", "HomeAddress", "HomePhone", "WorkAddress", "WorkPhone" ], "attribute-mappings": [ "target-attribute-name": "CustomerName", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "$FirstName,$LastName", "target-attribute-name": "ContactDetails", "attribute-type": "document", "attribute-sub-type": "dynamodb-map", "value": "M": "Home": "M": "Address": "S": "$HomeAddress", "Phone": "S": "$HomePhone", "Work": "M": "Address": "S": "$WorkAddress", "Phone": "S": "$WorkPhone" 156

163 使用 Amazon DynamoDB 用作目标 ] ] 通过使用 rule-action 参数 map-record-to-record NickName 和 income 的数据将映射到 DynamoDB 目 标中同名的项目 但是 假设您使用相同的规则 但将 rule-action 参数更改为 map-record-to-document 在这种情况 下 exclude-columns 参数中未列出的列 NickName 和 income 将映射到 _doc 项目 使用自定义条件表达式和对象映射 您可以使用 Amazon DynamoDB 中称为条件表达式的功能来操控写入到 DynamoDB 表的数据 有关 DynamoDB 中条件表达式的更多信息 请参阅条件表达式 157

164 使用 Amazon DynamoDB 用作目标 条件表达式成员包括 一个表达式 (必需) 表达式属性值 (可选) 指定属性值的 DynamoDB json 结构 表达式属性名 (可选) 确定何时使用条件表达式的选项 (可选) 默认值为 apply-during-cdc = false 和 apply-during-full-load = true 规则的结构如下所示 "target-table-name": "customer_t", "mapping-parameters": "partition-key-name": "CustomerName", "condition-expression": "expression":"<conditional expression>", "expression-attribute-values": [ "name":"<attribute name>", "value":<attribute value> ], "apply-during-cdc":<optional Boolean value>, "apply-during-full-load": <optional Boolean value> 下面的示例强调了用于条件表达式的部分 158

165 使用 Amazon DynamoDB 用作目标 使用属性映射和对象映射 利用属性映射可以使用源列名来指定模板字符串 以便重建目标上数据的结构 除了用户在模板中指定的内 容以外 不进行任何其他格式设置 以下示例显示了源数据库的结构和所需的 DynamoDB 目标结构 首先显示的是源结构 在本例中为 Oracle 数据库 然后显示 DynamoDB 中所需的数据结构 该示例在结尾处提供了用于创建所需目标结构的 JSON Oracle 数据的结构如下所示 FirstName LastName StoreId HomeAddress HomePhone WorkAddressWorkPhone DateOfBirth 主键 RandyMarsh5 不适用 221B Baker Street Spooner Street, Quahog /29/1988 DynamoDB 数据的结构如下所示 159

166 使用 Amazon DynamoDB 用作目标 CustomerName StoreId 分 区键 ContactDetails 排序键 Randy,Marsh 5 DateOfBirth 不适用 "Name": "Randy", "Home": "Address": "221B Baker Street", "Phone": , "Work": "Address": "31 Spooner Street, Quahog", "Phone": 下面的 JSON 显示用于实现 DynamoDB 结构的对象映射和列映射 "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "%", "rule-action": "include", "rule-type": "object-mapping", "rule-id": "2", "rule-name": "TransformToDDB", "rule-action": "map-record-to-record", "object-locator": "schema-name": "test", "table-name": "customer", "target-table-name": "customer_t", "mapping-parameters": "partition-key-name": "CustomerName", "sort-key-name": "StoreId", "exclude-columns": [ "FirstName", "LastName", "HomeAddress", "HomePhone", "WorkAddress", "WorkPhone" ], "attribute-mappings": [ "target-attribute-name": "CustomerName", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "$FirstName,$LastName", /29/1988

167 使用 Amazon DynamoDB 用作目标 "target-attribute-name": "StoreId", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "$StoreId", "target-attribute-name": "ContactDetails", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "\"Name\":\"$FirstName\",\"Home\":\"Address\":\"$HomeAddress\", \"Phone\":\"$HomePhone\", \"Work\":\"Address\":\"$WorkAddress\",\"Phone\": \"$WorkPhone\"" ] ] 使用列映射的另一种方法是使用 DynamoDB 格式作为您的文档类型 以下代码示例将 dynamodb-map 作为 属性映射的 attribute-sub-type "rules": [ "rule-type": "object-mapping", "rule-id": "1", "rule-name": "TransformToDDB", "rule-action": "map-record-to-record", "object-locator": "schema-name": "test", "table-name": "customer",, "target-table-name": "customer_t", "mapping-parameters": "partition-key-name": "CustomerName", "sort-key-name": "StoreId", "exclude-columns": [ "FirstName", "LastName", "HomeAddress", "HomePhone", "WorkAddress", "WorkPhone" ], "attribute-mappings": [ "target-attribute-name": "CustomerName", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "$FirstName,$LastName", "target-attribute-name": "StoreId", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "$StoreId", "target-attribute-name": "ContactDetails", 161

168 使用 Amazon DynamoDB 用作目标 ] ] "attribute-type": "document", "attribute-sub-type": "dynamodb-map", "value": "M": "Name": "S": "$FirstName" "Home": "M": "Address": "S": "$HomeAddress", "Phone": "S": "$HomePhone", "Work": "M": "Address": "S": "$WorkAddress", "Phone": "S": "$WorkPhone" 示例 1 使用属性映射和对象映射 以下示例从两个 MySQL 数据库表 nfl_data 和 sport_team 将数据迁移到名为 NFLTeams 和 SportTeams 的 两个 DynamoDB 表 表的结构以及用于将数据从 MySQL 数据库表映射到 DynamoDB 表的 JSON 如下所 示 MySQL 数据库表 nfl_data 的结构如下所示 mysql> desc nfl_data; Field Type Null Key Default Extra Position varchar(5) YES NULL player_number smallint(6) YES NULL Name varchar(40) YES NULL status varchar(10) YES NULL stat1 varchar(10) YES NULL stat1_val varchar(10) YES NULL stat2 varchar(10) YES NULL stat2_val varchar(10) YES NULL stat3 varchar(10) YES NULL stat3_val varchar(10) YES NULL stat4 varchar(10) YES NULL stat4_val varchar(10) YES NULL team varchar(10) YES NULL 162

169 使用 Amazon DynamoDB 用作目标 MySQL 数据库表 sport_team 的结构如下所示 mysql> desc sport_team; Field Type Null Key Default Extra id mediumint(9) NO PRI NULL auto_increment name varchar(30) NO NULL abbreviated_name varchar(10) YES NULL home_field_id smallint(6) YES MUL NULL sport_type_name varchar(15) NO MUL NULL sport_league_short_name varchar(10) NO NULL sport_division_short_name varchar(10) YES NULL 将这两个表映射到两个 DynamoDB 表时使用的表映射规则如下所示 "rules":[ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "dms_sample", "table-name": "nfl_data", "rule-action": "include", "rule-type": "selection", "rule-id": "2", "rule-name": "2", "object-locator": "schema-name": "dms_sample", "table-name": "sport_team", "rule-action": "include", "rule-type":"object-mapping", "rule-id":"3", "rule-name":"mapnfldata", "rule-action":"map-record-to-record", "object-locator": "schema-name":"dms_sample", "table-name":"nfl_data", "target-table-name":"nflteams", "mapping-parameters": "partition-key-name":"team", "sort-key-name":"playername", "exclude-columns": [ "player_number", "team", "Name" ], "attribute-mappings":[ "target-attribute-name":"team", 163

170 使用 Amazon DynamoDB 用作目标 "attribute-type":"scalar", "attribute-sub-type":"string", "value":"$team", "target-attribute-name":"playername", "attribute-type":"scalar", "attribute-sub-type":"string", "value":"$name", "target-attribute-name":"playerinfo", "attribute-type":"scalar", "attribute-sub-type":"string", "value":"\"number\": \"$player_number\",\"position\": \"$Position\", \"Status\": \"$status\",\"stats\": \"Stat1\": \"$stat1:$stat1_val\",\"stat2\": \"$stat2:$stat2_val\",\"stat3\": \"$stat3:$ stat3_val\",\"stat4\": \"$stat4:$stat4_val\"" ], "rule-type":"object-mapping", "rule-id":"4", "rule-name":"mapsportteam", "rule-action":"map-record-to-record", "object-locator": "schema-name":"dms_sample", "table-name":"sport_team", "target-table-name":"sportteams", "mapping-parameters": "partition-key-name":"teamname", "exclude-columns": [ "name", "id" ], "attribute-mappings":[ "target-attribute-name":"teamname", "attribute-type":"scalar", "attribute-sub-type":"string", "value":"$name", "target-attribute-name":"teaminfo", "attribute-type":"scalar", "attribute-sub-type":"string", "value":"\"league\": \"$sport_league_short_name\",\"division\": \"$sport_division_short_name\"" ] ] NFLTeams DynamoDB 表的示例输出如下所示 "PlayerInfo": "\"Number\": \"6\",\"Position\": \"P\",\"Status\": \"ACT\",\"Stats\": \"Stat1\": \"PUNTS:73\",\"Stat2\": \"AVG:46\",\"Stat3\": \"LNG:67\",\"Stat4\": \"IN 20:31\"", "PlayerName": "Allen, Ryan", 164

171 使用 Amazon DynamoDB 用作目标 "Position": "P", "stat1": "PUNTS", "stat1_val": "73", "stat2": "AVG", "stat2_val": "46", "stat3": "LNG", "stat3_val": "67", "stat4": "IN 20", "stat4_val": "31", "status": "ACT", "Team": "NE" SportsTeams DynamoDB 表的示例输出如下所示 "abbreviated_name": "IND", "home_field_id": 53, "sport_division_short_name": "AFC South", "sport_league_short_name": "NFL", "sport_type_name": "football", "TeamInfo": "\"League\": \"NFL\",\"Division\": \"AFC South\"", "TeamName": "Indianapolis Colts" Amazon DynamoDB 的目标数据类型 Amazon AWS DMS 的 Amazon DynamoDB 终端节点支持大多数 Amazon DynamoDB 数据类型 下表显示 了使用 AWS DMS 时支持的 Amazon AWS DMS 目标数据类型以及 AWS DMS 数据类型的默认映射 有关 AWS DMS 数据类型的其他信息 请参阅AWS Database Migration Service 的数据类型 (p. 257) 在 AWS DMS 从异构数据库中迁移数据时 我们将数据类型从源数据库映射到称为 AWS DMS 数据类型的 中间数据类型 然后 我们将中间数据类型映射到目标数据类型 下表显示了每种 AWS DMS 数据类型及其 在 DynamoDB 中映射到的数据类型 AWS DMS 数据类型 DynamoDB 数据类型 String String WString 字符串 Boolean Boolean 日期 字符串 DateTime 字符串 INT1 数字 INT2 数字 INT4 数字 INT8 数字 数值 数字 165

172 创建源和目标终端节点 AWS DMS 数据类型 DynamoDB 数据类型 Real4 数字 Real8 数字 UINT1 数字 UINT2 数字 UINT4 数字 UINT8 数字 CLOB 字符串 创建源和目标终端节点 您可以在创建复制实例时创建源和目标终端节点 也可以在创建复制实例后创建这些终端节点 源和目标 数据存储可能位于 Amazon Elastic Compute Cloud (Amazon EC2) 实例和 Amazon Relational Database Service (Amazon RDS) 数据库实例上 也可能是本地数据库 以下过程假定您已选择 AWS DMS 控制台向导 请注意 也可以从 AWS DMS 控制台的导航窗格中选择终 端节点 然后选择创建终端节点以执行该步骤 在使用控制台向导时 您将在同一页面上创建源和目标终端 节点 如果未使用控制台向导 您可以单独创建每个终端节点 使用 AWS 控制台指定源或目标数据库终端节点 1. 在连接源和目标数据库终端节点页中 指定源或目标数据库的连接信息 下表描述了设置 166

173 创建源和目标终端节点 对于此选项 请执行该操作 终端节点类型 选择此终端节点是源还是目标终端节点 Select RDS DB Instance (选择 RDS 数 据库实例) 如果终端节点是 Amazon RDS DB 实例 请选择此选项 终端节点标识符 键入要用于标识终端节点的名称 您可能需要在名称中包含 终端节点的类型 例如 oracle-source 或 PostgreSQLtarget 对于所有复制实例来说 名称必须是唯一的 源引擎和目标引擎 选择作为终端节点的数据库引擎的类型 服务器名称 键入服务器名称 对于本地数据库 这可以是 IP 地 址或公有主机名 对于 Amazon RDS 数据库实例 这可以是数据库实例的终端节点 (也称为 DNS 名 称) 例如 mysqlsrvinst.abcd uswest-2.rds.amazonaws.com 端口 键入数据库使用的端口 SSL 模式 如果您需要为此终端节点启用连接加密 请选择 SSL 模 式 根据您选择的模式 您可能需要提供证书和服务器证书 信息 167

174 创建源和目标终端节点 2. 对于此选项 请执行该操作 用户名称 使用允许数据迁移所需的权限键入用户名 有关所需权限的 信息 请参阅本用户指南中的源和目标数据库引擎的安全性 部分 密码 键入具有所需权限的账户的密码 如果您需要在密码中使用 特殊字符 (例如 + 或 & ) 请用大括号 将整个密码括起 来 数据库名称 要用作终端节点的数据库的名称 选择高级选项卡 (如下所示) 以设置连接字符串和加密密钥值 (如果需要) 您可以选择运行测试以测试终 端节点连接 对于此选项 请执行该操作 额外的连接属性 在此处键入任何其他连接参数 有关额外连接属性的更多信 息 请参阅有关数据存储的文档部分 168

175 创建源和目标终端节点 对于此选项 请执行该操作 KMS 主密钥 选择要用于加密复制存储和连接信息的加密密钥 如果选择 (默认值) aws/dms 则会使用与您的账户和区域关联的默认 AWS Key Management Service (AWS KMS) 密钥 有关使 用加密密钥的更多信息 请参阅设置加密密钥和指定 KMS 权限 (p. 40) 测试终端节点连接 可选 添加 VPC 和复制实例名称 要测试连接 请选择 Run test (运行测试) 169

176 使用 AWS DMS 任务 AWS Database Migration Service (AWS DMS) 任务是执行所有工作的地方 您可以使用任务将数据从源终 端节点迁移到目标终端节点 任务处理在复制实例上完成 您可以指定要用于迁移的表和架构以及任何特殊 处理 例如 日志记录要求 控制表数据以及错误处理 在创建任务时 您需要了解一些事项 您必须创建源终端节点 目标终端节点以及复制实例 然后才能创建迁移任务 您可以指定各种各样的任务设置来定制迁移任务 您可以在使用 AWS DMS 控制台 AWS CLI 或 DMS API 时设置这些项 这些设置包括指定如何处理迁移错误 错误日志记录和控制表信息 在创建任务后 您可以立即运行它 将自动创建和加载具有必要的元数据定义的目标表 并且您可以指定 持续复制 默认情况下 AWS DMS 在您创建任务时立即启动任务 但是 在一些情况下 您可能需要推迟任务的启 动 例如 使用 AWS Command Line Interface (AWS CLI) 时 您可能会有一个进程来创建任务 而另一 个进程根据一些触发事件来启动任务 根据需要 您可以推迟任务的开始 您可以使用 AWS DMS 控制台 AWS CLI 或 AWS DMS API 监控 停止或重新启动任务 以下是在使用 AWS DMS 任务时可以执行的操作 任务 相关文档 创建任务评估报告 创建任务评估报告 (p. 171) 您可以创建一个任务评估报告 以显示在 迁移期间可能出现问题的任何不支持的数 据类型 在运行任务之前 您可以针对任 务运行该报告以找出潜在的问题 创建任务 创建任务 (p. 173) 在创建任务时 您可以指定源 目标和复 制实例以及任何迁移设置 创建持续复制任务 使用 AWS DMS 为持续复制创建任务 (p. 190) 您可以设置任务 以便在源和目标之间提 供持续复制 应用任务设置 每个任务都具有可根据数据库迁移需求配 置的设置 您在 JSON 文件中创建这些 设置 对于某些设置 您可以使用 AWS DMS 控制台创建它们 数据验证 指定 AWS Database Migration Service 任务的任务设 置 (p. 178) 验证 AWS DMS 任务 (p. 218) 数据验证是一种任务设置 可用于让 AWS DMS 比较目标数据存储上的数据和 源数据存储中的数据 170

177 创建任务评估报告 任务 相关文档 修改任务 修改任务 (p. 192) 停止任务后 您可以修改任务的设置 在任务期间重新加载表 在任务期间重新加载表 (p. 193) 如果任务期间出错 您可以重新加载表 使用表映射 表映射使用多个类型的规则来指定数据 源 源架构 数据以及任务期间将发生的 任何转换 应用筛选器 选择规则 选择规则和操作 (p. 199) 转换规则 转换规则和操作 (p. 200) 使用源筛选器 (p. 205) 您可以使用源筛选器来限制从源传输到目 标的记录的数量和类型 例如 您可以指 定仅将总部员工移动到目标数据库 还可 以对数据列应用筛选器 监控任务 监控 AWS DMS 任务 (p. 209) 可通过多种方式获取有关任务性能以及任 务使用的表的信息 Managing Task Logs 管理任务日志 管理 AWS DMS 任务日志 (p. 215) 您可以使用 AWS DMS API 或 AWS CLI 查看和删除任务日志 创建任务评估报告 任务评估功能确定无法正确迁移的数据类型 在任务评估期间 AWS DMS 读取源数据库架构并创建一个数 据类型列表 然后 它将该列表与 AWS DMS 支持的数据类型的预定义列表进行比较 AWS DMS 创建一个 报告 您可以查看该报告以了解迁移任务是否具有不支持的数据类型 任务评估报告包含一个摘要 其中列出不支持的数据类型以及每种数据类型的列数 它包含每种不支持的数 据类型的数据结构列表 (采用 JSON 格式) 您可以使用该报告修改源数据类型并提高迁移成功率 共有两种级别的不支持的数据类型 无法在迁移报告上显示为 not supported 的数据类型 在报告上显示 为 partially supported 的数据类型可以转换为其他数据类型 但不会按预期方式进行迁移 例如 下面是一个示例任务评估报告 "summary": "task-name":"test15", "not-supported": "data-type": [ "sql-variant" ], "column-count":3, "partially-supported": "data-type":[ 171

178 创建任务评估报告 "float8", "jsonb" ], "column-count":2, "types":[ "data-type":"float8", "support-level":"partially-supported", "schemas":[ "schema-name":"schema1", "tables":[ "table-name":"table1", "columns":[ "column1", "column2" ], "table-name":"table2", "columns":[ "column3", "column4" ] ], "schema-name":"schema2", "tables":[ "table-name":"table3", "columns":[ "column5", "column6" ], "table-name":"table4", "columns":[ "column7", "column8" ] ] ], "datatype":"int8", "support-level":"partially-supported", "schemas":[ "schema-name":"schema1", "tables":[ "table-name":"table1", "columns":[ "column9", "column10" ], 172

179 创建任务 ] ] ] "table-name":"table2", "columns":[ "column11", "column12" ] 可以从 AWS 控制台的任务页上的评估选项卡中查看最新的任务评估报告 AWS DMS 将以前的任务评估报 告存储在 Amazon S3 存储桶中 Amazon S3 存储桶名称采用以下格式 dms-<customerid>-<customerdns> 该报告存储在存储桶上以任务名称命名的文件夹中 该报告的文件名是采用 yyyy-mm-dd-hh-mm 格式的评估 日期 您可以从 Amazon S3 控制台中查看和比较以前的任务评估报告 AWS DMS 还会创建一个 AWS Identity and Access Management (IAM) 角色以允许访问 S3 存储桶 角色名 称为 dms-access-for-tasks 该角色使用 AmazonDMSRedshiftS3Role 策略 您可以使用 AWS 控制台 AWS CLI 或 DMS API 启用任务评估功能 在控制台中 请在创建或修改任务时选择任务评估 要使用控制台查看任务评估报告 请在任务页中选择 任务 然后在详细信息部分中选择评估结果选项卡 CLI 命令 start-replication-task-assessment 用于启动任务评估 describe-replicationtask-assessment-results 用于接收 JSON 格式的任务评估报告 AWS DMS API 使用 StartReplicationTaskAssessment 操作启动任务评估 并使用 DescribeReplicationTaskAssessment 操作接收 JSON 格式的任务评估报告 创建任务 您必须执行一些操作以创建 AWS DMS 迁移任务 在创建迁移任务之前 创建源终端节点 目标终端节点以及复制实例 选择迁移方法 将数据迁移到目标数据库 该过程将在目标数据库中创建文件或表 自动定义目标所需的元数据并使用 源中的数据填充表 为提高效率 系统将并行加载表中的数据 该过程是 AWS 控制台中的迁移现有数 据选项 在 API 中称为 Full Load 迁移期间捕获更改 该过程捕获在将数据从源迁移到目标时对源数据库进行的更改 在完成最初请求的 数据的迁移后 更改数据捕获 (CDC) 过程会将捕获到的更改应用于目标数据库 捕获更改并以单个提交 事务为单位应用更改 并且可将多个不同的目标表作为单个源提交进行更新 此方法可保证目标数据库 中的事务完整性 该过程是 AWS 控制台中的迁移现有数据并复制持续更改选项 在 API 中称为 fullload-and-cdc 仅复制源数据库上的数据更改 该过程读取源数据库管理系统 (DBMS) 的恢复日志文件并将每个事务的 条目组合在一起 如果 AWS DMS 无法在合理的时间内对目标应用更改 (例如 如果目标不可访问) 则 AWS DMS 会在必要时对复制服务器上的更改进行缓冲 它不会重新读取源 DBMS 日志 这可能需要大 量时间 该过程是 AWS DMS 控制台中的仅复制数据更改选项 确定该任务如何处理源上的大型二进制对象 (LOB) 有关更多信息 请参阅 在 AWS DMS 任务中为源数据 库设置 LOB 支持 (p. 189) 173

180 创建任务 指定迁移任务设置 这些设置包括设置日志记录 指定写入到迁移控制表的数据 如何处理错误以及 其他设置 有关任务设置的更多信息 请参阅指定 AWS Database Migration Service 任务的任务设 置 (p. 178) 设置表映射以定义用于选择和筛选要迁移的数据的规则 有关表映射的更多信息 请参阅使用表映射指定 任务设置 (p. 194) 在指定映射之前 请确保查看有关源数据库和目标数据库之间的数据类型映射的文档 部分 您可以选择在创建任务页中指定完任务信息后立即启动任务 或者在指定完任务信息后从 控制面板 页中启 动任务 以下过程假定您已选择 AWS DMS 控制台向导并且已使用该向导指定复制实例信息和终端节点 请注意 也 可以从 AWS DMS 控制台的导航窗格中选择任务 然后选择创建任务以执行该步骤 创建迁移任务 1. 在创建任务页中 指定任务选项 下表描述了设置 对于此选项 请执行该操作 任务名称 为任务键入名称 任务描述 键入任务的说明 源终端节点 显示将使用的源终端节点 目标终端节点 显示将使用的目标终端节点 174

181 创建任务 2. 对于此选项 请执行该操作 复制实例 显示将使用的复制实例 迁移类型 选择要使用的迁移方法 您可以选择仅让现有数据迁移到目 标数据库 或将持续更改以及迁移的数据发送到目标数据 库 在创建时启动任务 在选定该选项时 任务将在创建后立即开始 选择任务设置选项卡 (如下所示) 指定目标表 LOB 支持以及启用日志记录值 显示的任务设置取决于 所选的迁移类型值 例如 在选择迁移现有数据时 将显示以下选项 对于此选项 请执行该操作 目标表准备模式 不执行任何操作 在不执行任何操作模式中 AWS DMS 假 定目标上已经预先创建了目标表 如果迁移是完全加载或者 完全加载加 CDC 则在开始迁移之前 您必须确保目标表 为空 在目标表已经从源预先回填 并且应用了持续复制来 确保源和目标同步时 不执行任何操作模式是仅 CDC 任务 下的合适选择 您可以使用 AWS Schema Conversion Tool (AWS SCT) 为自己预先创建目标表 删除目标中的表 在删除目标中的表模式下 AWS DMS 在开始迁移之前删除目标表 然后重新创建它们 这确保 了在迁移开始时目标表为空 AWS DMS 仅创建有效迁移 数据所需的对象 表 主键以及 在某些情况下 唯一索 引 AWS DMS 不会创建二级索引 非主键约束或列数据 默认值 如果您在执行完全加载加 CDC 的任务或者执行仅 CDC 任务 我们建议您暂停迁移 并创建支持 update 和 delete 语句筛选的二级索引 使用删除目标中的表模式时 您可能需要在目标数据库 上执行某些配置 例如 对于 Oracle 目标 由于安全原 因 AWS DMS 无法创建架构 数据库用户 在这种情况 下 您必须预先创建架构用户 使得 AWS DMS 可以在迁 移开始时创建表 对于大多数其他目标类型 AWS DMS 使 用合适的配置参数创建架构以及所有关联的表 175

182 创建任务 对于此选项 请执行该操作 截断 - 在截断模式中 AWS DMS 在迁移开始之前截断所有 目标表 截断模式适用于完全加载迁移或完全加载加 CDC 迁移 其中目标架构在迁移开始前已预先创建 您可以使用 AWS Schema Conversion Tool (AWS SCT) 为自己预先创 建目标表 在复制时包括 LOB 列 不包括 LOB 列 从迁移操作中排除 LOB 列 完整 LOB 模式 迁移整个 LOB 而不管大小如何 AWS DMS 以块的形式分段迁移 LOB 块的大小受最大 LOB 大 小参数的控制 此模式比受限 LOB 模式的速度要慢 受限 LOB 模式 将 LOB 截断为最大 LOB 大小参数的值 此模式比使用完整 LOB 模式的速度要快 最大 LOB 大小 (kb) 在受限 LOB 模式下 超出最大 LOB 大小设置的 LOB 列将 被截断到指定的最大 LOB 大小 启用验证 启用数据验证 以确认准确地将数据从源迁移到目标 有关 更多信息 请参阅 验证 AWS DMS 任务 (p. 218) 启用日志记录 由 Amazon CloudWatch 启用日志记录 如果为迁移类型选择迁移现有数据并复制 将显示以下选项 176

183 创建任务 对于此选项 请执行该操作 Target table preparation mode 不执行任何操作 不更改目标表的数据和元数据 Drop tables on target 删除表并在其位置创建新表 截断 截断表 而不会影响表元数据 在完全加载完成后停止任务 不停止 不停止任务 立即应用缓存的更改 然后继续 在应用缓存的更改前停止 在应用缓存的更改之前停止任 务 使用该选项时 可以添加辅助索引 从而加速更改的应 用 在应用缓存的更改之后停止 在应用缓存的更改后停止任 务 使用该选项时 可以在进行 事务应用 时添加外键 触 发器等 在复制时包括 LOB 列 不包括 LOB 列 将从迁移中排除 LOB 列 完整 LOB 模式 迁移整个 LOB 而不管大小如何 在受 LOB 块大小控制的组块中分段迁移 LOB 此方法比受限 LOB 模式速度慢 受限 LOB 模式 将 LOB 截断到最大 LOB 大小 这种方法 比使用完整 LOB 模式快 最大 LOB 大小 (kb) 在受限 LOB 模式下 超出最大 LOB 大小设置的 LOB 列将 被截断到指定的最大 LOB 大小 启用验证 启用数据验证 以确认准确地将数据从源迁移到目标 有关 更多信息 请参阅 验证 AWS DMS 任务 (p. 218) 启用日志记录 由 Amazon CloudWatch 启用日志记录 3. 选择表映射选项卡 (如下所示) 以设置架构映射和映射方法值 如果选择自定义 您可以指定目标架构和 表值 有关表映射的更多信息 请参阅使用表映射指定任务设置 (p. 194) 4. 在完成任务设置后 请选择创建任务 177

184 任务设置 指定 AWS Database Migration Service 任务的任务设 置 每个任务都具有可根据数据库迁移需求配置的设置 您在 JSON 文件中创建这些设置 对于某些设置 您可 以使用 AWS DMS 控制台创建它们 有几种主要类型的任务设置 主题 目标元数据任务设置 (p. 180) 完全加载任务设置 (p. 181) 日志记录任务设置 (p. 181) 控制表任务设置 (p. 182) 流缓冲区任务设置 (p. 184) 更改处理优化设置 (p. 185) 数据验证任务设置 (p. 185) 更改处理 DDL 处理策略任务设置 (p. 186) 错误处理任务设置 (p. 186) 保存任务设置 (p. 188) 任务设置 相关文档 创建任务评估报告 创建任务评估报告 (p. 171) 您可以创建一个任务评估报告 以显示在 迁移期间可能出现问题的任何不支持的数 据类型 在运行任务之前 您可以针对任 务运行该报告以找出潜在的问题 创建任务 创建任务 (p. 173) 在创建任务时 您可以指定源 目标和复 制实例以及任何迁移设置 创建持续复制任务 使用 AWS DMS 为持续复制创建任务 (p. 190) 您可以设置任务 以便在源和目标之间提 供持续复制 应用任务设置 每个任务都具有可根据数据库迁移需求配 置的设置 您在 JSON 文件中创建这些 设置 对于某些设置 您可以使用 AWS DMS 控制台创建它们 数据验证 指定 AWS Database Migration Service 任务的任务设 置 (p. 178) 验证 AWS DMS 任务 (p. 218) 数据验证是一种任务设置 可用于让 AWS DMS 比较目标数据存储上的数据和 源数据存储中的数据 修改任务 修改任务 (p. 192) 178

185 任务设置 任务设置 相关文档 停止任务后 您可以修改任务的设置 在任务期间重新加载表 在任务期间重新加载表 (p. 193) 如果任务期间出错 您可以重新加载表 使用表映射 表映射使用多个类型的规则来指定任务设 置 例如数据源 源架构 数据以及任务 期间将发生的任何转换 应用筛选器 选择规则 选择规则和操作 (p. 199) 转换规则 转换规则和操作 (p. 200) 使用源筛选器 (p. 205) 您可以使用源筛选器来限制从源传输到目 标的记录的数量和类型 例如 您可以指 定仅将总部员工移动到目标数据库 还可 以对数据列应用筛选器 监控任务 监控 AWS DMS 任务 (p. 209) 可通过多种方式获取有关任务性能以及任 务使用的表的信息 Managing Task Logs 管理任务日志 管理 AWS DMS 任务日志 (p. 215) 您可以使用 AWS DMS API 或 AWS CLI 查看和删除任务日志 任务设置 JSON 文件可能如下所示 "TargetMetadata": "TargetSchema": "", "SupportLobs": true, "FullLobMode": false, "LobChunkSize": 64, "LimitedSizeLobMode": true, "LobMaxSize": 32, "BatchApplyEnabled": true, "FullLoadSettings": "TargetTablePrepMode": "DO_NOTHING", "CreatePkAfterFullLoad": false, "StopTaskCachedChangesApplied": false, "StopTaskCachedChangesNotApplied": false, "MaxFullLoadSubTasks": 8, "TransactionConsistencyTimeout": 600, "CommitRate": 10000, "Logging": "EnableLogging": false, "ControlTablesSettings": "ControlSchema":"", "HistoryTimeslotInMinutes":5, "HistoryTableEnabled": false, "SuspendedTablesTableEnabled": false, "StatusTableEnabled": false 179

186 任务设置, "StreamBufferSettings": "StreamBufferCount": 3, "StreamBufferSizeInMB": 8, "ChangeProcessingTuning": "BatchApplyPreserveTransaction": true, "BatchApplyTimeoutMin": 1, "BatchApplyTimeoutMax": 30, "BatchApplyMemoryLimit": 500, "BatchSplitSize": 0, "MinTransactionSize": 1000, "CommitTimeout": 1, "MemoryLimitTotal": 1024, "MemoryKeepTime": 60, "StatementCacheSize": 50, "ChangeProcessingDdlHandlingPolicy": "HandleSourceTableDropped": true, "HandleSourceTableTruncated": true, "HandleSourceTableAltered": true, "ValidationSettings": "EnableValidation": false, "ThreadCount": 5, "ErrorBehavior": "DataErrorPolicy": "LOG_ERROR", "DataTruncationErrorPolicy":"LOG_ERROR", "DataErrorEscalationPolicy":"SUSPEND_TABLE", "DataErrorEscalationCount": 50, "TableErrorPolicy":"SUSPEND_TABLE", "TableErrorEscalationPolicy":"STOP_TASK", "TableErrorEscalationCount": 50, "RecoverableErrorCount": 0, "RecoverableErrorInterval": 5, "RecoverableErrorThrottling": true, "RecoverableErrorThrottlingMax": 1800, "ApplyErrorDeletePolicy":"IGNORE_RECORD", "ApplyErrorInsertPolicy":"LOG_ERROR", "ApplyErrorUpdatePolicy":"LOG_ERROR", "ApplyErrorEscalationPolicy":"LOG_ERROR", "ApplyErrorEscalationCount": 0, "FullLoadIgnoreConflicts": true 目标元数据任务设置 目标元数据设置包括 TargetSchema 目标表架构名称 如果此元数据选项为空 则使用源表中的架构 如果未定义任何源架 构 AWS DMS 自动将目标数据库的所有者前缀添加到所有表 对于 MySQL 类型的目标终端节点 该选 项应保留为空 LOB settings 用于确定大对象 (LOB) 的管理方式的设置 如果您设置 SupportLobs=true 则必须 将下列项之一设置为 true FullLobMode 如果您将该选项设置为 true 则必须为 LobChunkSize 选项输入值 输入在将数据 复制到目标时要使用的 LOB 数据块的大小 (以 KB 为单位) FullLobMode 选项最适合非常大的 LOB 大小 但往往会导致加载速度较慢 LimitedSizeLobMode 如果您将该选项设置为 true 则必须为 LobMaxSize 选项输入值 输入单 个 LOB 的最大大小 (以 KB 为单位) 180

187 任务设置 LoadMaxFileSize 一个适用于 PostgreSQL 和 MySQL 目标终端节点的选项 该选项定义磁盘上存储 的未加载数据 例如 CSV 文件 的最大大小 该选项会覆盖连接属性 您可以提供介于 0 (指示该选项不 会覆盖连接属性) 和 KB 之间的值 BatchApplyEnabled 确定是否单独应用了每个事务或是否批量提交了更改 默认值为 false BatchApplyEnabled 参数与 BatchApplyPreserveTransaction 参数结合使用 如果 BatchApplyEnabled 设置为 true 则 BatchApplyPreserveTransaction 参数确定事务完整性 如果 BatchApplyPreserveTransaction 设置为 true 则保留事务完整性 并确保批处理包含源中的 事务的所有更改 如果 BatchApplyPreserveTransaction 设置为 false 则会临时放弃事务完整性以提高性能 BatchApplyPreserveTransaction 参数仅适用于 Oracle 目标终端节点 并且仅在 BatchApplyEnabled 参数设置为 true 时相关 如果在复制中包含 LOB 列 则只能在受限 LOB 模式下使用 BatchApplyEnabled ParallelLoadThreads 指定 AWS DMS 用于将每个表加载到目标数据库的线程数 MySQL 目标的最 大值为 16 个 DynamoDB 目标的最大值为 32 个 可以在请求时提高最大限制 ParallelLoadBufferSize 指定在缓冲区中存储的最大记录数 以供并行加载线程将数据加载到目标 时使用 默认值是 50 最大值为 1000 目前 只有在目标为 DynamoDB 时 该字段才有效 该参数应与 ParallelLoadThreads 一起使用 并且仅在 ParallelLoadThreads > 1 时才有效 完全加载任务设置 完全加载设置包括 要指示如何在完全加载启动时加载目标 请为 TargetTablePrepMode 选项指定下列值之一 DO_NOTHING 现有目标表的数据和元数据不会受影响 DROP_AND_CREATE 删除现有表并在其位置创建一个新表 TRUNCATE_BEFORE_LOAD 数据被截断 但不会影响表元数据 要将主键或唯一索引的创建延迟到完全加载后 请设置 CreatePkAfterFullLoad 选项 在选择该选项 时 您无法恢复未完成的完全加载任务 对于完全加载和支持 CDC 的任务 您可以设置以下 Stop task after full load completes 选 项 StopTaskCachedChangesApplied 将该选项设置为 true 可在完全加载完成并且已应用缓存的更 改后停止任务 StopTaskCachedChangesNotApplied 将该选项设置为 true 可在应用缓存的更改前停止任务 MaxFullLoadSubTasks 设置该选项以指示要并行加载的最大表数 默认值为 8 个 最大值为 50 个 要设置在开始完全加载操作之前 AWS DMS 等待事务关闭的秒数 (如果事务在任务开始时打开) 请设置 TransactionConsistencyTimeout 选项 默认值为 600 (10 分钟) AWS DMS 在达到超时值时开始 完全加载 即使存在打开的事务也是如此 请注意 仅完全加载任务不会等待 10 分钟而是会立即启动 要指示可一起传输的事件的最大数目 请设置 CommitRate 选项 日志记录任务设置 日志记录任务设置将写入一个 JSON 文件中 可使用这些设置指定要记录的组件活动以及将写入日志的信息 量 在迁移过程中 日志记录功能使用 Amazon CloudWatch 记录信息 可通过多种方法启用 Amazon CloudWatch 日志记录 可以在 AWS 管理控制台中选择 EnableLogging 选 项 (在创建迁移任务时) 或将 EnableLogging 选项设置为 true (在使用 AWS DMS API 创建任务时) 也可 以任务设置的日志记录部分的 JSON 形式指定 "EnableLogging": true 181

188 任务设置 要删除任务日志 您可以任务设置的日志记录部分的 JSON 形式指定 "DeleteTaskLogs": true 可以指定以下组件活动的日志记录 SOURCE_UNLOAD 从源数据库卸载数据 SOURCE_CAPTURE 从源数据库捕获数据 TARGET_LOAD 将数据加载到目标数据库中 TARGET_APPLY 将数据和 DDL 应用于目标数据库 TASK_MANAGER 任务管理器触发事件 在指定组件活动后 可以指定记录的信息量 下面的列表采用从最低级别的信息到最高级别的信息的顺序 较高级别始终包含较低级别的信息 这些严重性值包括 LOGGER_SEVERITY_ERROR 将错误消息写入日志 LOGGER_SEVERITY_WARNING 将警告和错误消息写入日志 LOGGER_SEVERITY_INFO 将信息性消息 警告和错误消息写入日志 LOGGER_SEVERITY_DEFAULT 将信息性消息 警告和错误消息写入日志 LOGGER_SEVERITY_DEBUG 将调试消息 信息性消息 警告和错误消息写入日志 LOGGER_SEVERITY_DETAILED_DEBUG 将所有信息写入日志 例如 以下 JSON 部分提供针对所有组件活动的日志记录的任务设置 "Logging": "EnableLogging": true, "LogComponents": [ "Id": "SOURCE_UNLOAD", "Severity": "LOGGER_SEVERITY_DEFAULT", "Id": "SOURCE_CAPTURE", "Severity": "LOGGER_SEVERITY_DEFAULT", "Id": "TARGET_LOAD", "Severity": "LOGGER_SEVERITY_DEFAULT", "Id": "TARGET_APPLY", "Severity": "LOGGER_SEVERITY_INFO", "Id": "TASK_MANAGER", "Severity": "LOGGER_SEVERITY_DEBUG" ], 控制表任务设置 控制表提供有关 AWS DMS 任务的信息以及有用的统计数据 可用来计划和管理当前迁移任务和将来任务 您可以在 JSON 文件中应用这些任务设置 或者使用 AWS DMS 控制台的创建任务页上的高级设置链接应用 这些设置 除了应用例外 (dmslogs.awsdms_apply_exceptions) 表 (始终创建该表) 以外 您可以选择创建其 他表 包括 复制状态 (dmslogs.awsdms_status) 该表提供有关当前任务的详细信息 包括任务状态 任务使用的内 存量 尚未应用于目标的更改数以及 AWS DMS 当前从中读取的源数据库中的位置 它还指示任务是完全 加载还是更改数据捕获 (CDC) 暂停的表 (dmslogs.awsdms_suspended_tables) 该表提供一系列暂停的表及其暂停原因 182

189 任务设置 复制历史记录 (dmslogs.awsdms_history) 该表提供有关复制历史记录的信息 包括任务期间处理的记录 数和量 CDC 任务结束时的延迟和其他统计数据 应用例外 (dmslogs.awsdms_apply_exceptions) 表包含以下参数 列 类型 描述 TASK_NAME nvchar AWS DMS 任务的名称 TABLE_OWNER nvchar 表所有者 TABLE_NAME nvchar 表名称 ERROR_TIME timestamp 异常 (错误) 的出现时间 STATEMENT nvchar 出错时运行的语句 ERROR nvchar 错误名称和描述 复制历史记录 (dmslogs.awsdms_history) 表包含以下参数 列 类型 描述 SERVER_NAME nvchar 复制任务运行于的计算机的名称 TASK_NAME nvchar AWS DMS 任务的名称 TIMESLOT_TYPE varchar 下列值之一 FULL LOAD CHANGE PROCESSING (CDC) 如果任务正在运行完全加载和 CDC 两条历史记录将写入时段 TIMESLOT timestamp 时段的结束时间戳 TIMESLOT_DURATION int 时段的持续时间 TIMESLOT_LATENCY int 时段结束时的目标延迟 此值仅适用 于 CDC 时段 RECORDS int 时段内处理的记录数 TIMESLOT_VOLUME int 已处理的数据量 (以 MB 为单位) 复制状态 (dmslogs.awsdms_status) 表包含任务和目标数据库的当前状态 它具有以下设置 列 类型 描述 SERVER_NAME nvchar 复制任务运行于的计算机的名称 TASK_NAME nvchar AWS DMS 任务的名称 TASK_STATUS varchar 下列值之一 183

190 任务设置 列 类型 描述 FULL LOAD CHANGE PROCESSING (CDC) 只要至少一个表处于完全加载状态 任务状态就会设置为 FULL LOAD 加载所有表后 任务状态将变为 CHANGE PROCESSING (如果已启用 CDC) STATUS_TIME timestamp 任务状态的时间戳 PENDING_CHANGES int 未应用于目标的更改记录的数目 DISK_SWAP_SIZE int 旧的或卸载的事务所占用的磁盘空间 量 TASK_MEMORY int 当前使用的内存 (以 MB 为单位) SOURCE_CURRENT varchar AWS DMS 当前从中读取的源数据库 中的位置 timestamp AWS DMS 当前从中读取的源数据库 中的时间戳 varchar 未提交的最旧开始事务的位置 此值 是可在不丢失任何更改的情况下恢复 到的最新位置 timestamp 未提交的最旧开始事务的时间戳 此 值是可在不丢失任何更改的情况下恢 复到的最新时间戳 timestamp 最后一个事务提交的时间戳 在批量 应用过程中 此值是批处理中最后一 个事务的提交时间戳 _POSITION SOURCE_CURRENT _TIMESTAMP SOURCE_TAIL _POSITION SOURCE_TAIL _TIMESTAMP SOURCE_TIMESTAMP _APPLIED 其他控制表设置包括 ControlSchema 使用该选项指示 AWS DMS 目标控制表的数据库架构名称 如果您未在此字段中输入 任何信息 则表将复制到数据库中的默认位置 HistoryTimeslotInMinutes 使用该选项指示 复制历史记录 表中的每个时段的长度 默认为 5 分 钟 流缓冲区任务设置 可以使用 AWS CLI 设置流缓冲区设置 包括 StreamBufferCount 使用该选项指定迁移任务的数据流缓冲区数 默认流缓冲区数为 3 增大该设置 的值会加快数据提取速度 但是 此性能提高在很大程度上依赖于迁移环境 包括源系统和复制服务器的 实例类 对于大多数情况 默认值已足够 StreamBufferSizeInMB 使用该选项指示每个数据流缓冲区的最大大小 默认大小为 8 MB 如果您 使用非常大的 LOB 时或者在日志文件中收到一条消息指示流缓冲区大小不足时 您可能需要增大该选项的 184

191 任务设置 值 在计算该选项的大小时 可以使用以下等式 [最大 LOB 大小 (或 LOB 块大小)]*[LOB 列数]*[流缓冲区 数]*[每个任务并行加载的表数(MaxFullLoadSubTasks)]*3 CtrlStreamBufferSizeInMB 使用该选项设置控制流缓冲区的大小 值以 MB 为单位 范围介于 1 和 8 之间 默认值是 5 在处理巨大数量的表 (数万个表) 时 您可能需要增大此值 更改处理优化设置 以下设置确定 AWS DMS 如何在更改数据捕获 (CDC) 期间处理目标表的更改 这些设置中的多个设置取决 于目标元数据参数 BatchApplyEnabled 的值 有关 BatchApplyEnabled 参数的更多信息 请参阅目标 元数据任务设置 (p. 180) 更改处理优化设置包括 以下设置仅在目标元数据参数 BatchApplyEnabled 设置为 true 时应用 BatchApplyPreserveTransaction 如果设置为 true 则保留事务完整性 并确保批处理包含源中 的事务的所有更改 默认值为 true 该设置仅适用于 Oracle 目标终端节点 如果设置为 false 则会临时丢失事务完整性以提高性能 不保证将源中事务的所有更改应用于单个批处 理中的目标 BatchApplyTimeoutMin 设置 AWS DMS 在每次应用批量更改之间等待的时间 (以秒为单位) 默认值 是 1 BatchApplyTimeoutMax 设置 AWS DMS 在超时前每次应用批量更改之间等待的最长时间 (以秒为单 位) 默认值是 30 BatchApplyMemoryLimit 设置在批量优化应用模式 中用于预处理的最大内存量 (MB) 默认值是 500 BatchSplitSize 设置在单个批次中应用的最大更改数 默认值 0 意味着未应用任何限制 以下设置仅在目标元数据参数 BatchApplyEnabled 设置为 false 时应用 MinTransactionSize 设置要包含在每个事务中的更改的最小数目 默认值是 1000 CommitTimeout 设置 AWS DMS 在声明超时前批量收集事务的最长时间 (以秒为单位) 默认值是 1 HandleSourceTableAltered 将该选项设置为 true 可在更改源表时更改目标表 AWS DMS 尝试将事务数据保留在内存中 直到将事务完全提交给源和/或目标 但是 超过所分配内存的事 务或未在指定时限内提交的事务将写入到磁盘 以下设置适用于更改处理优化 无论更改处理模式如何 MemoryLimitTotal 设置所有事务在写入磁盘前可占用的内存的最大内存 (以 MB 为单位) 默认值是 1024 MemoryKeepTime 设置每个事务在写入磁盘之前可在内存中保留的最长时间 (以秒为单位) 从 AWS DMS 开始捕获事务之时起计算持续时间 默认值是 60 StatementCacheSize 设置在向目标应用更改时要存储在服务器上以便稍后执行的预编译语句的最大 数目 默认值是 50 最大值为 200 数据验证任务设置 您可以确保准确地将您的数据从源迁移到目标 如果为任务启用该功能 在为表执行完全加载后 AWS DMS 立即开始比较源和目标数据 有关数据验证的更多信息 请参阅验证 AWS DMS 任务 (p. 218) 数据验证设置包括以下内容 185

192 任务设置 要启用数据验证 请将 EnableValidation 设置设为 true 要调整 AWS DMS 在验证期间使用的执行线程数 请设置 ThreadCount 值 ThreadCount 的默认值为 5 如果将 ThreadCount 设置为较大的数字 AWS DMS 可以更快地完成验证 不过 它还会执行更多 同时查询 从而在源和目标上占用更多资源 例如 以下 JSON 启用数据验证 "ValidationSettings": "EnableValidation": true, "ThreadCount": 5 对于 Oracle 终端节点 AWS DMS 使用 DBMS_CRYPTO 验证 BLOB 如果 Oracle 终端节点使用 BLOB 则必须为用于访问 Oracle 终端节点的用户账户授予 dbms_crypto 执行权限 您可以运行以下语句以执行该 操作 grant execute on sys.dbms_crypto to <dms_endpoint_user>; 更改处理 DDL 处理策略任务设置 以下设置确定 AWS DMS 如何在更改数据捕获 (CDC) 期间处理目标表的 DDL 更改 更改处理 DDL 处理策 略设置包括 HandleSourceTableDropped 将该选项设置为 true 可在删除源表时删除目标表 HandleSourceTableTruncated 将该选项设置为 true 可在截断源表时截断目标表 HandleSourceTableAltered 将该选项设置为 true 可在更改源表时更改目标表 错误处理任务设置 您可以使用以下设置来设置更改数据捕获 (CDC) 期间的复制任务错误处理行为 DataErrorPolicy 决定在出现与记录级别的数据处理相关的错误时 AWS DMS 执行的操作 数据处 理错误的一些示例包括转换错误 变换中的错误和不正确的数据 默认为 LOG_ERROR IGNORE_RECORD 任务继续 并且将忽略该记录的数据 DataErrorEscalationCount 属性的错误 计数器递增 因此 如果您为表设置错误数限制 则此错误将计入限制 LOG_ERROR 任务继续 并且错误将写入任务日志 SUSPEND_TABLE 任务继续 但带错误记录的表中的数据将移至错误状态 并且不会复制数据 STOP_TASK 任务停止 并且需要手动干预 DataTruncationErrorPolicy 决定在数据被截断时 AWS DMS 执行的操作 默认为 LOG_ERROR IGNORE_RECORD 任务继续 并且将忽略该记录的数据 DataErrorEscalationCount 属性的错误 计数器递增 因此 如果您为表设置错误数限制 则此错误将计入限制 LOG_ERROR 任务继续 并且错误将写入任务日志 SUSPEND_TABLE 任务继续 但带错误记录的表中的数据将移至错误状态 并且不会复制数据 STOP_TASK 任务停止 并且需要手动干预 DataErrorEscalationPolicy 决定在达到最大错误数 (在 DataErrorsEscalationCount 参数中 设置) 时 AWS DMS 执行的操作 默认为 SUSPEND_TABLE SUSPEND_TABLE 任务继续 但带错误记录的表中的数据将移至错误状态 并且不会复制数据 STOP_TASK 任务停止 并且需要手动干预 186

193 任务设置 DataErrorEscalationCount 设置特定记录的数据可出现的错误的最大数目 当达到此数目时 将根 据 DataErrorEscalationCount 中设置的策略来处理包含错误记录的表的数据 默认值为 0 TableErrorPolicy 决定在处理特定表的数据或元数据时出错的情况下 AWS DMS 执行的操作 此 错误仅适用于常规表数据 而不是与特定记录相关的错误 默认为 SUSPEND_TABLE SUSPEND_TABLE 任务继续 但带错误记录的表中的数据将移至错误状态 并且不会复制数据 STOP_TASK 任务停止 并且需要手动干预 TableErrorEscalationPolicy 决定在达到最大错误数 (使用 TableErrorEscalationCount 参 数设置) 时 AWS DMS 执行的操作 默认用户设置为 STOP_TASK 其中任务将停止 并且需要手动干 预 TableErrorEscalationCount 特定表的常规数据或元数据可出现的错误的最大数目 当达到此数目 时 将根据 TableErrorEscalationPolicy 中设置的策略处理表的数据 默认值为 0 RecoverableErrorCount 在出现环境错误时 可尝试重新启动任务的最大次数 在系统尝试重新启 动任务指定次数时 任务将停止 并且需要手动干预 默认值为 -1 这指示 AWS DMS 无限期地尝试重新 启动该任务 将此值设置为 0 将从不尝试重新启动任务 如果出现致命错误 AWS DMS 会在 6 次尝试后 停止尝试重新启动任务 RecoverableErrorInterval 在每次重新启动任务的尝试之间 AWS DMS 等待的秒数 默认值为 5 RecoverableErrorThrottling 如果启用此项 则每次尝试重新启动时 重新启动任务的尝试之间 的间隔将增加 默认为 true RecoverableErrorThrottlingMax 在启用 RecoverableErrorThrottling 的情况下 AWS DMS 在重新启动任务的尝试之间等待的描述 默认值为 1800 ApplyErrorDeletePolicy 决定在与 DELETE 操作发生冲突时 AWS DMS 执行的操作 默认为 IGNORE_RECORD IGNORE_RECORD 任务继续 并且将忽略该记录的数据 ApplyErrorEscalationCount 属性的错 误计数器递增 因此 如果您为表设置错误数限制 则此错误将计入限制 LOG_ERROR 任务继续 并且错误将写入任务日志 SUSPEND_TABLE 任务继续 但带错误记录的表中的数据将移至错误状态 并且不会复制数据 STOP_TASK 任务停止 并且需要手动干预 ApplyErrorInsertPolicy 决定在与 INSERT 操作发生冲突时 AWS DMS 执行的操作 默认为 LOG_ERROR IGNORE_RECORD 任务继续 并且将忽略该记录的数据 ApplyErrorEscalationCount 属性的错 误计数器递增 因此 如果您为表设置错误数限制 则此错误将计入限制 LOG_ERROR 任务继续 并且错误将写入任务日志 SUSPEND_TABLE 任务继续 但带错误记录的表中的数据将移至错误状态 并且不会复制数据 STOP_TASK 任务停止 并且需要手动干预 INSERT_RECORD 如果存在带与插入的源记录相同的主键的现有目标记录 则更新该目标记录 ApplyErrorUpdatePolicy 决定在与 UPDATE 操作发生冲突时 AWS DMS 执行的操作 默认为 LOG_ERROR IGNORE_RECORD 任务继续 并且将忽略该记录的数据 ApplyErrorEscalationCount 属性的错 误计数器递增 因此 如果您为表设置错误数限制 则此错误将计入限制 LOG_ERROR 任务继续 并且错误将写入任务日志 SUSPEND_TABLE 任务继续 但带错误记录的表中的数据将移至错误状态 并且不会复制数据 STOP_TASK 任务停止 并且需要手动干预 UPDATE_RECORD 如果目标记录缺失 则缺失的目标记录将插入目标表 选择该选项要求在 Oracle 作 为源数据库时为所有源表列启用完整补充日志记录 ApplyErrorEscalationPolicy 决定在达到最大错误数 (使用 ApplyErrorsEscalationCount 参 数设置) 时 AWS DMS 执行的操作 LOG_ERROR 任务继续 并且错误将写入任务日志 SUSPEND_TABLE 任务继续 但带错误记录的表中的数据将移至错误状态 并且不会复制数据 187

194 任务设置 STOP_TASK 任务停止 并且需要手动干预 ApplyErrorEscalationCount 设置更改处理操作期间 特定表可出现的 APPLY 冲突的最大次数 当达到此数目时 将根据 ApplyErrorEscalationPolicy 参数中设置的策略处理表的数据 默认值为 0 ApplyErrorFailOnTruncationDdl 如果将该选项设置为 true 则会导致在 CDC 期间对任何跟踪 的表执行截断时任务失败 故障消息为 Truncation DDL detected 默认为 false 这不适用于 PostgreSQL 或不复制 DDL 表截断的任何其他源终端节点 FailOnNoTablesCaptured 如果将该选项设置为 true 则会导致在任务启动时为其定义的转换规则 找不到表时任务失败 默认为 false FailOnTransactionConsistencyBreached 该选项适用于将 Oracle 作为 CDC 源的任务 如果将 该选项设置为 true 则会导致在事务的打开时间超出指定的超时并且可能会删除时任务失败 在使用 Oracle 启动 CDC 任务时 AWS DMS 等待有限的时间以关闭最早打开的事务 然后再启动 CDC 如果在到达超时之前未关闭最早打开的事务 我们通常仍会启动 CDC 而忽略该事务 如果该设置 设为 true 任务将失败 FulloadIgnoreConflicts 如果将该选项设置为 false 则 AWS DMS 在应用缓存的事件时忽略 零 行受到影响 和 重复项 错误 如果设置为 true AWS DMS 将报告所有错误 而不忽略这些错误 默认 为 false 保存任务设置 可以将一个任务的设置另存为 JSON 文件 (如果您需要将这些设置重用于另一个任务) 例如 以下 JSON 文件包含为任务保存的设置 "TargetMetadata": "TargetSchema": "", "SupportLobs": true, "FullLobMode": false, "LobChunkSize": 64, "LimitedSizeLobMode": true, "LobMaxSize": 32, "BatchApplyEnabled": true, "FullLoadSettings": "TargetTablePrepMode": "DO_NOTHING", "CreatePkAfterFullLoad": false, "StopTaskCachedChangesApplied": false, "StopTaskCachedChangesNotApplied": false, "MaxFullLoadSubTasks": 8, "TransactionConsistencyTimeout": 600, "CommitRate": 10000, "Logging": "EnableLogging": false, "ControlTablesSettings": "ControlSchema":"", "HistoryTimeslotInMinutes":5, "HistoryTableEnabled": false, "SuspendedTablesTableEnabled": false, "StatusTableEnabled": false, "StreamBufferSettings": "StreamBufferCount": 3, "StreamBufferSizeInMB": 8 188

195 设置 LOB 支持, "ChangeProcessingTuning": "BatchApplyPreserveTransaction": true, "BatchApplyTimeoutMin": 1, "BatchApplyTimeoutMax": 30, "BatchApplyMemoryLimit": 500, "BatchSplitSize": 0, "MinTransactionSize": 1000, "CommitTimeout": 1, "MemoryLimitTotal": 1024, "MemoryKeepTime": 60, "StatementCacheSize": 50, "ChangeProcessingDdlHandlingPolicy": "HandleSourceTableDropped": true, "HandleSourceTableTruncated": true, "HandleSourceTableAltered": true, "ErrorBehavior": "DataErrorPolicy": "LOG_ERROR", "DataTruncationErrorPolicy":"LOG_ERROR", "DataErrorEscalationPolicy":"SUSPEND_TABLE", "DataErrorEscalationCount": 50, "TableErrorPolicy":"SUSPEND_TABLE", "TableErrorEscalationPolicy":"STOP_TASK", "TableErrorEscalationCount": 50, "RecoverableErrorCount": 0, "RecoverableErrorInterval": 5, "RecoverableErrorThrottling": true, "RecoverableErrorThrottlingMax": 1800, "ApplyErrorDeletePolicy":"IGNORE_RECORD", "ApplyErrorInsertPolicy":"LOG_ERROR", "ApplyErrorUpdatePolicy":"LOG_ERROR", "ApplyErrorEscalationPolicy":"LOG_ERROR", "ApplyErrorEscalationCount": 0, "FullLoadIgnoreConflicts": true 在 AWS DMS 任务中为源数据库设置 LOB 支持 有时 大对象 (LOB) 难以在系统之间迁移 AWS DMS 提供了大量选项来帮助优化 LOB 列 要查看 AWS DMS 将哪些数据类型视为 LOBS 以及执行此操作的时间 请参阅 AWS DMS 文档 在将数据从一个数据库迁移到另一个数据库时 您可能有机会重新考虑 LOB 的存储方式 特别是异构迁移 如果您需要这样做 则无需迁移 LOB 数据 如果决定包含 LOB 您可以确定其他 LOB 设置 LOB 模式确定 LOB 的处理方式 完整 LOB 模式 在完整 LOB 模式下 AWS DMS 将所有 LOB 从源迁移到目标 而不管大小如何 在 此配置中 AWS DMS 没有与预计的 LOB 的最大大小相关的信息 因此 逐个迁移 LOB 一次迁移一 个 完整 LOB 模式下的速度非常慢 受限 LOB 模式 在受限 LOB 模式下 您设置 AWS DMS 接受的最大大小 LOB 这样做将允许 AWS DMS 预分配内存并批量加载 LOB 数据 超出最大 LOB 大小的 LOB 将被截断 并且会将警告发布到日 志文件 在受限 LOB 模式下 您可以获得比完整 LOB 模式高得多的性能 如果可能 建议您使用受限 LOB 模式 189

196 创建多个任务 Note 对于 Oracle LOB 将被视为 VARCHAR 数据类型 (如果可能) 此方法意味着 AWS DMS 将批 量捕获数据库中的数据 速度大大快于其他方法 Oracle 中的 VARCHAR 的最大大小为 64K 因此 当 Oracle 为源数据库时 小于 64k 的有限 LOB 大小最佳 如果将任务配置为在受限 LOB 模式下运行 最大 LOB 大小 (K) 选项设置 AWS DMS 接受的最大大小 LOB 任何大于此值的 LOB 将被截断至此值 如果将任务配置为使用完整 LOB 模式 AWS DMS 将分段检索 LOB LOB 块大小 (K) 选项确定每个分段 的大小 在设置该选项时 请特别注意网络配置允许的最大包大小 如果 LOB 块大小超出允许的最大包大 小 则可能会看到连接断开错误 创建多个任务 在某些迁移方案中 您可能必须创建多个迁移任务 请注意 任务单独执行并且可并发运行 每个任务均有 其自己的初始加载 CDC 和日志读取过程 通过数据操作语言 (DML) 相关的表必须属于同一任务 为迁移创建多个任务的部分原因包括 任务的目标表位于不同的数据库中 例如 当您将一个系统分散到或分成多个系统时 您需要使用筛选功能将大型表的迁移分为多个任务 Note 由于每个任务有其自己的更改捕获和日志读取过程 因此不 会跨任务协调更改 因此 当使用多个 任务执行迁移时 请确保源事务完全包含在单个任务中 使用 AWS DMS 为持续复制创建任务 您可以创建 AWS DMS 任务来捕获对源数据存储的持续更改 这种捕获在您迁移数据时执行 您还可以创建 一个任务 以便在初始迁移到支持的目标数据存储完成后捕获持续更改 此过程称为连续复制或更改数据捕 获 (CDC) AWS DMS 在从源数据存储复制持续更改时使用此过程 此过程的工作方式是使用数据库引擎的 原生 API 来收集对数据库日志的更改 每个源引擎有特定的配置要求 用于将此更改流公开到指定用户账户 大部分引擎需要一些额外的配置才能 让捕获流程以有意义的方式使用更改数据 而不会丢失数据 例如 Oracle 需要增加补充日志记录 MySQL 需要行级二进制日志记录 (bin logging) 为了从源数据库读取持续更改 AWS DMS 使用引擎特定的 API 操作从源引擎的事务日志中读取更改 下面 是一些 AWS DMS 如何处理的示例 对于 Oracle AWS DMS 使用 Oracle LogMiner API 或 Binary Reader API (bfile API) 读取持续更 改 AWS DMS 根据系统更改号 (SCN) 从联机或归档重做日志中读取持续更改 对于 Microsoft SQL Server AWS DMS 使用 MS-Replication 或 MS-CDC 将信息写入 SQL Server 事务日 志 然后 它使用 SQL Server 中的 fn_dblog() 或 fn_dump_dblog() 函数 根据日志序列号 (LSN) 读取事务日志中的更改 对于 MySQL AWS DMS 从基于行的二进制日志 (binlog) 读取更改 并将这些更改迁移到目标 对于 PostgreSQL AWS DMS 设置逻辑复制槽并使用 test_decoding 插件从源读取更改 并将更改迁 移到目标 对于将 Amazon RDS 作为源的情况 我们建议确保启用了备份以设置 CDC 我们还建议确保源数据库已 配置为保留更改日志足够长的时间 通常 24 小时便已足够 有两种类型的持续复制任务 190

197 本机 CDC 开始点 完全加载加 CDC 该任务迁移现有数据 然后根据对源数据库的更改更新目标数据库 仅 CDC 当目标数据库上存在数据之后 该任务会迁移持续更改 从 CDC 开始点开始执行复制 您可以从多个点启动 AWS DMS 持续复制任务 仅更改数据捕获 包括 从自定义 CDC 开始时间 您可以使用 AWS 控制台或 AWS CLI 向 AWS DMS 提供时间戳 该时间戳为 您希望开始复制的时间 然后 AWS DMS 从这个自定义 CDC 开始时间启动持续复制任务 AWS DMS 将指定的时间戳 采用 UTC 格式 转换为本机开始点 例如 对于 SQL Server 为 LSN 对于 Oracle 为 SCN AWS DMS 使用引擎特定的方法确定根据源引擎的更改流 从哪个确切位置开始迁移任务 Note 当 PostgreSQL 作为源时 不支持自定义 CDC 开始时间 因为数据库引擎没有方法将时间戳映 射到 LSN 或 SCN 而 Oracle 或 SCN Server 可以 从 CDC 本机开始点 您可以不提供时间戳 这可能包括事务日志中的多个本机时间点 而是选择从源 引擎的事务日志中的本机时间点开始 AWS DMS 支持以下源终端节点上的此功能: SQL Server Oracle MySQL 确定 CDC 本机开始点 CDC 本机开始点是数据库引擎日志中的一个点 定义开始 CDC 的时间 如果已在目标上从某个时间点应用 了批量数据转储 您可以从进行转储之前的时间点开始 查找仅持续复制任务的本机开始点 以下示例演示如何从支持的源引擎查找 CDC 本机开始点 SQL Server SQL Server 的日志序列号 (LSN) 分为三个部分 虚拟日志文件 (VLF) 序列号 日志块的启动偏移量 槽编号 示例 LSN 如下所示 : :0001 要根据事务日志备份设置获取 SQL Server 迁移任务的开始点 请在 SQL Server 中使用 fn_dblog() 或 fn_dump_dblog() 函数 要将 CDC 本机开始点与 SQL Server 结合使用 您必须为参与持续复制中的所有表创建发布 有关创建 发布的更多信息 请参阅 为持续复制创建 SQL Server 发布 (p. 89) AWS DMS 在您使用没有本机开始 点的 CDC 时自动创建发布 Oracle 系统更改号 (SCN) 是由 Oracle 数据库使用的逻辑内部时间戳 SCN 对数据库中发生的事件排序 这是 满足事务的 ACID 属性所必需的 Oracle 数据库使用 SCN 标记所有更改写入到磁盘中的位置 这样恢 复操作就不会应用已经写入的更改 Oracle 还使用 SCN 标记数据集中不存在重做的点 这样可以停止 恢复 有关 Oracle SCNs 的更多信息 请参阅 Oracle 文档 要获取 Oracle 数据库中的当前 SCN 请运行以下命令 SELECT current_scn FROM V$DATABASE 191

198 修改任务 MySQL 在 MySQL 版本 发行之前 MySQL 的日志序列号 (LSN) 为 4 字节的无符号整数 在 MySQL 版本 中 重做日志文件大小限制从 4 GB 增加到 512 GB 因此 LSN 成了 8 字节的无符号整数 这种增 长体现了存储超大信息所需的额外字节 对于在 MySQL 或更高版本上生成的应用程序 如果使用 LSN 值 则应该使用 64 位而非 32 位变量来存储和比较 LSN 值 有关 MySQL LSN 的更多信息 请参 阅 MySQL 文档 要获取 MySQL 数据库中的当前 LSN 请运行以下命令 mysql> show master status; 该查询返回二进制日志文件名 位置以及多个其他值 CDC 本机开始点是二进制日志文件名和位置的组 合 例如 mysql-bin-changelog :373 在此示例中 mysql-bin-changelog 是二进制日志文件名 373 是 AWS DMS 需要开始捕获更改的位置 使用检查点作为 CDC 开始点 从检查点开始 持续复制任务会迁移更改 而 AWS DMS 还会不断缓存特定于 AWS DMS 的检查点信息 AWS DMS 创建 的检查点包含信息 使得复制引擎知道更改流的恢复点 您可以使用检查点返回到更改时间表中的某个点 以及恢复失败的迁移任务 您也可以使用检查点 在任意指定时间为其他目标启动另一个持续复制任务 您可以通过以下两种方法之一获取检查点信息 运行 API 命令 DescribeReplicationTasks 并查看结果 您可以按任务筛选信息以及搜索检查点 当 任务处于停止/失败状态时 您可以检索最新的检查点 查看目标实例上名为 awsdms_txn_state 的元数据表 您可以查询表来获取检查点信息 要创建元数据 表 请在创建任务时将 TaskRecoveryTableEnabled 参数设置为 Yes 此设置导致 AWS DMS 连续将 检查点信息写入目标元数据表 如果任务已删除 则此信息丢失 例如 以下是元数据表中的示例检查点 checkpoint:v1#34# /0f000e48#0#0#*#0#121 在提交时间点或服务器时间点停止任务 通过引入 CDC 本机开始点 AWS DMS 还可以在以下点停止任务 源上的提交时间 复制实例上的服务器时间 您可以修改某个任务 并根据需要使用 UTC 格式设置停止时间 该任务根据您设置的提交时间或服务器时间 自动停止 此外 如果您知道合适的停止迁移任务时间 您也可在创建任务时设置停止时间 修改任务 如果您需要更改任务设置 表映射或其他设置 可以修改任务 您可以在 DMS 控制台中选择任务 然后选 择修改以修改该任务 也可以使用 AWS CLI 或 AWS DMS API 命令 ModifyReplicationTask 对于修改任务 存在一些限制 包括 无法修改任务的源或目标终端节点 您无法更改任务的迁移类型 已运行的任务必须具有已停止或失败状态才能进行修改 192

199 在任务期间重新加载表 在任务期间重新加载表 当任务正在运行时 可以使用源中的数据重新加载目标数据库表 在任务期间 如果因分区操作 (例如 在 使用 Oracle 时) 导致出错或数据更改 则可能需要重新加载表 可以从一个任务重新加载最多 10 个表 要重新加载表 必须满足以下条件 任务必须正在运行 任务的迁移方法必须是 Full Load 或 Full Load with CDC 不允许重复表 AWS DMS 会保留之前读取的表定义并且在重新加载操作期间不会重新创建该定义 在重新加载表之前对 该表所执行的任何 DDL 语句 (如 ALTER TABLE ADD COLUMN DROP COLUMN) 都可能会导致重新加 载操作失败 AWS 管理控制台 使用 AWS DMS 控制台重新加载表 1. 登录到 AWS 管理控制台 然后选择 AWS DMS 如果您以 AWS Identity and Access Management (IAM) 用户身份登录 则必须具有 AWS DMS 的相应访问权限 有关所需权限的更多信息 请参阅使用 AWS DMS 所需的 IAM 权限 (p. 27) 从导航窗格中选择任务 选择具有要重新加载的表的正在运行的任务 4. 选择表统计数据选项卡 193

200 表映射 5. 选择要重新加载的表 如果任务不再运行 则您无法重新加载该表 6. 选择删除并重新加载表数据 在 AWS DMS 准备重新加载表时 控制台将表状态更改为正在重新加载表 使用表映射指定任务设置 表映射使用多个类型的规则来指定数据源 源架构 数据以及任务期间将发生的任何转换 可以使用表映 射指定数据库中要迁移的单个表和要用于迁移的架构 此外 还可以使用筛选器指定给定表列中要复制的数 据 并且可使用转换来修改写入目标数据库中的数据 使用 AWS 管理控制台选择和转换表映射 可以使用 AWS 管理控制台执行表映射 包括指定表选择和转换 在 AWS 控制台用户界面中 您可以使用 Where (位置) 部分指定架构 表和操作 (包括或排除) 您可以使用筛选器部分指定表中的列名称以及要应用 于复制任务的条件 这两个操作共同创建选择规则 在指定至少一个选择规则后 转换可包含在表映射中 转换可用于重命名架构或表 将前缀或后缀添加到架 构或表 或者删除表列 以下示例说明如何在名为 EntertainmentAgencySample 的架构中为名为 Customers 的表设置选择规则 请 注意 只有在源终端节点包含架构和表信息时 才会显示引导式选项卡 (可以在其中创建选择规则和转换) 194

201 使用 AWS 管理控制台选择和转换表映射 使用 AWS 控制台指定表选择 筛选条件和转换 1. 登录到 AWS 管理控制台 然后选择 AWS DMS 请注意 如果您以 AWS Identity and Access Management (IAM) 用户身份登录 则必须具有 AWS DMS 的相应访问权限 有关所需权限的更多信 息 请参阅使用 AWS DMS 所需的 IAM 权限 (p. 27) 2. 在控制面板页中 选择任务 3. 选择创建任务 4. 输入任务信息 包括任务名称 复制实例 源终端节点 目标终端节点和迁移类型 从表映射部分中选 择引导式 5. 在表映射部分中 选择架构名称和表名称 在指定表名称时 可以使用 % 作为通配符值 指定包括或排 除由筛选器定义的数据所需执行的操作 195

202 使用 AWS 管理控制台选择和转换表映射 6. 您可以使用添加列筛选器和添加条件链接指定筛选器信息 首先 选择添加列筛选器以指定列和条件 选择添加条件以添加其他条件 以下示例显示 Customers 表的筛选器 包含介于 01 和 85 之间的 AgencyIDs 196

203 使用 AWS 管理控制台选择和转换表映射 7. 在创建所需的选择规则后 选择添加选择规则 8. 创建至少一个选择规则后 可以向任务添加转换 选择添加转换规则 9. 选择要转换的目标并输入请求的其他信息 以下示例显示一个从 Customer 表中删除 AgencyStatus 列的转换 197

204 使用 AWS 管理控制台选择和转换表映射 10. 选择添加转换规则 11. 您可以选择添加选择规则或添加转换规则以添加其他选择规则或转换 完成后 选择创建任务 198

205 使用 JSON 的选择和转换表映射 使用 JSON 的选择和转换表映射 可以 JSON 格式创建表映射 如果您创建一个使用 AWS DMS 管理控制台的迁移任务 则可直接在表映射框 中输入 JSON 如果您使用 AWS Command Line Interface (AWS CLI) 或 AWS Database Migration Service API 执行迁移 则可创建一个 JSON 文件来指定要在迁移期间发生的表映射 可以指定要使用的表或架构 并且可以执行架构和表转换 可使用 selection 和 transformation 规则 类型创建表映射规则 选择规则和操作 通过使用表映射 可通过选择规则和操作来指定要使用的表或架构 对于使用选择规则类型的表映射规则 可应用以下值 参数 可能的值 描述 rule-type selection 在指定表映射时 您必须具有至少一个选 择规则 rule-id 一个数字值 一个用于标识规则的唯一数字值 rule-name 一个字母数字值 一个用于标识规则的唯一名称 rule-action include exclude 包括或排除规则所选定的对象 Example 迁移架构中的所有表 以下示例将所有表从源中名为 Test 的架构中迁移到目标终端节点 "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "Test", "table-name": "%", "rule-action": "include" ] Example 迁移架构中的一些表 以下示例将所有表 (以 DMS 开头的表除外) 从源中名为 Test 的架构中迁移到目标终端节点 "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "Test", "table-name": "%" 199

206 使用 JSON 的选择和转换表映射, ], "rule-action": "include" "rule-type": "selection", "rule-id": "2", "rule-name": "2", "object-locator": "schema-name": "Test", "table-name": "DMS%", "rule-action": "exclude" 转换规则和操作 可使用转换操作指定要应用于所选架构或表的任何转换 转换规则是可选的 对于使用转换规则类型的表映射规则 可应用以下值 参数 可能的值 描述 rule-type transformation 应用于选择规则所指定的对象 rule-id 一个数字值 一个用于标识规则的唯一数字值 rule-name 一个字母数字值 一个用于标识规则的唯一名称 object-locator schema-name 架构的名称 规则应用于的架构和表 table-name表的名称 可以使用 % 百 分号作为通配符 rule-action rename remove-column convert-lowercase convertuppercase add-prefix removeprefix replace-prefix add-suffix removesuffix replace-suffix 要应用于对象的转换 所有转换规则操作 是区分大小写的 rule-target schema table column 要转换的对象的类型 value 一个字母数字值 该值遵循目标类型的命 名规则 需要输入的操作的新值 例如 rename old-value 一个字母数字值 该值遵循目标类型的命 名规则 需要替换的操作的旧值 例如 replaceprefix Example 重命名架构 以下示例将架构从 Test (源中) 重命名为 Test1 (目标终端节点中) 200

207 使用 JSON 的选择和转换表映射 "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "Test", "table-name": "%", "rule-action": "include", "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "schema", "object-locator": "schema-name": "Test", "value": "Test1" ] Example 重命名表 以下示例将表从 Actor (源中) 重命名为 Actor1 (目标终端节点中) "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "Test", "table-name": "%", "rule-action": "include", "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table", "object-locator": "schema-name": "Test", "table-name": "Actor", "value": "Actor1" ] Example 重命名列 以下示例将表 Actor 中的列从 first_name (源中) 重命名为 fname (目标终端节点中) "rules": [ 201

208 使用 JSON 的选择和转换表映射, ] "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "%", "rule-action": "include" "rule-type": "transformation", "rule-id": "4", "rule-name": "4", "rule-action": "rename", "rule-target": "column", "object-locator": "schema-name": "test", "table-name": "Actor", "column-name" : "first_name", "value": "fname" Example 删除列 以下示例将转换源中名为 Actor 的表以从目标终端节点中删除以字符 col 开头的所有列 "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "%", "rule-action": "include", "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "remove-column", "rule-target": "column", "object-locator": "schema-name": "test", "table-name": "Actor", "column-name": "col%" ] Example 转换为小写形式 以下示例将表名从 ACTOR (源中) 转换为 actor (目标终端节点中) "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": 202

209 使用 JSON 的选择和转换表映射 "schema-name": "test", "table-name": "%", "rule-action": "include", "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "convert-lowercase", "rule-target": "table", "object-locator": "schema-name": "test", "table-name": "ACTOR" ] Example 转换为大写形式 以下示例将所有表和所有架构的所有列从小写形式 (源中) 转换为大写形式 (目标终端节点中) "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "%", "rule-action": "include", "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "convert-uppercase", "rule-target": "column", "object-locator": "schema-name": "%", "table-name": "%", "column-name": "%" ] Example 添加前缀 以下示例转换源中的所有表以便在目标终端节点中向这些表添加前缀 DMS_ "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "%", "rule-action": "include", 203

210 使用 JSON 的选择和转换表映射 "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-prefix", "rule-target": "table", "object-locator": "schema-name": "test", "table-name": "%", "value": "DMS_" ] Example 替换前缀 以下示例将转换源中包含前缀 Pre_ 的所有列以在目标终端节点中将前缀替换为 NewPre_ "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "%", "rule-action": "include", "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "replace-prefix", "rule-target": "column", "object-locator": "schema-name": "%", "table-name": "%", "column-name": "%", "value": "NewPre_", "old-value": "Pre_" ] Example 删除后缀 以下示例转换源中的所有表以在目标终端节点中删除这些表的后缀 _DMS "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "%", "rule-action": "include", "rule-type": "transformation", 204

211 使用源筛选器 "rule-id": "2", "rule-name": "2", "rule-action": "remove-suffix", "rule-target": "table", "object-locator": "schema-name": "test", "table-name": "%", "value": "_DMS" ] 使用源筛选器 您可以使用源筛选器来限制从源传输到目标的记录的数量和类型 例如 您可以指定仅将总部员工移动到目 标数据库 筛选器是选择规则的一部分 还可以对数据列应用筛选器 源筛选器必须遵循以下约束 选择规则可以不包含筛选器 也可以包含一个或多个筛选器 每个筛选器可具有一个或多个筛选条件 如果使用多个筛选器 则将合并一系列筛选器 就像在筛选器之间使用 AND 运算符一样 如果在单个筛选器中使用多个筛选条件 则将合并一系列筛选条件 就像在筛选条件之间使用 OR 运算符 一样 筛选器仅在 rule-action = 'include' 时应用 筛选器需要一个列名和一系列筛选条件 筛选条件必须具有一个筛选运算符和一个值 列名 表名和架构名区分大小写 按时间和日期筛选 在选择要导入的数据时 可以指定一个日期或时间作为筛选条件的一部分 AWS DMS 将日期格式 YYYYMM-DD 和时间格式 YYYY-MM-DD HH:MM:SS 用于筛选 AWS DMS 比较函数遵循 SQLite 惯例 有关 SQLite 数据类型和日期比较的更多信息 请参阅 SQLite 版本 3 中的数据类型 以下示例说明如何基于日期进行筛选 Example 单一日期筛选器 以下筛选器将 empstartdate >= January 1, 2002 的所有员工复制到目标数据库中 "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "employee", "rule-action": "include", "filters": [ "filter-type": "source", "column-name": "empstartdate", "filter-conditions": [ "filter-operator": "gte", "value": " " 205

212 使用源筛选器 ] ] ] 使用 JSON 格式创建源筛选器规则 可以通过指定列名 筛选条件 筛选运算符和筛选值来创建源筛选器 下表显示了用于源筛选的参数 参数 值 filter-type source column-name 要将筛选器应用于的源列的名称 该名称区分大小写 filter-conditions filter-operator 该参数可以是下列项之一 ste 小于或等于 gte 大于或等于 eq 等于 between 等于或两个值之间 值 filter-operator 参数的值 如果 filter-operator 为 between 则提供两个 值 一个用于 start-value 另一个用于 end-value 以下示例说明了几种常见的使用源筛选器的方法 Example 单一筛选器 以下筛选器将 empid >= 100 的所有员工复制到目标数据库中 "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "employee", "rule-action": "include", "filters": [ "filter-type": "source", "column-name": "empid", "filter-conditions": [ "filter-operator": "gte", "value": "100" ] ] ] 206

213 使用源筛选器 Example 多个筛选运算符 以下筛选器将多个筛选运算符应用于单个数据列 筛选器将 (empid <=10) OR (empid is between 50 and 75) OR (empid >= 100) 的所有员工复制到目标数据库中 "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "employee", "rule-action": "include", "filters": [ "filter-type": "source", "column-name": "empid", "filter-conditions": [ "filter-operator": "ste", "value": "10", "filter-operator": "between", "start-value": "50", "end-value": "75", "filter-operator": "gte", "value": "100" ] ] ] Example 多个筛选器 以下筛选器将多个筛选条件应用于表中的两个列 筛选器将 (empid <= 100) AND (dept= tech) 的所 有员工复制到目标数据库中 "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "employee", "rule-action": "include", "filters": [ "filter-type": "source", "column-name": "empid", "filter-conditions": [ "filter-operator": "ste", "value": "100" ], "filter-type": "source", "column-name": "dept", "filter-conditions": [ "filter-operator": "eq", 207

214 使用源筛选器 "value": "tech" ] ] ] 208

215 任务状态 监控 AWS DMS 任务 您可以查看任务状态和监控任务的控制表 以便监控任务的进度 有关控制表的更多信息 请参阅控制表任 务设置 (p. 182) 您还可以使用 Amazon CloudWatch 监控任务的进度 使用 AWS 管理控制台 AWS 命令行界面 (CLI) 或 AWS DMS API 您可以监控任务的进度以及所用的资源和网络连接 最后 您可以通过查看表状态来监控任务中源表的状态 请注意 对于 上次更新时间 列 DMS 控制台仅指示 AWS DMS 上次更新表的表统计数据记录的时间 它不 指示上次更新表的时间 有关更多信息 请参阅以下主题 主题 任务状态 (p. 209) 任务期间的表状态 (p. 210) 使用 Amazon CloudWatch 监控复制任务 (p. 210) 数据迁移服务指标 (p. 212) 管理 AWS DMS 任务日志 (p. 215) 使用 AWS CloudTrail 记录 AWS DMS API 调用 (p. 216) 任务状态 任务状态指示任务的情况 下表显示了任务可能具有的状态 任务状态 描述 创建 AWS DMS 正在创建任务 正在运行 任务正在执行指定的迁移工作 Stopped 任务已停止 正在停止 正在停止任务 这通常表明任务中有用户干预 删除 正在删除任务 通常源于用户的干预请求 已失败 任务已失败 有关更多信息 请参阅任务日志文件 正在启动 任务正在连接到复制实例以及源和目标终端节点 应用所有筛 选条件和转换 Ready 任务已准备好运行 此状态通常在 creating 状态之后 正在修改 正在修改任务 通常是由于修改了任务设置的用户操作造成 任务状态栏提供了任务进度的估计值 此估计值的质量取决于源数据库的表统计数据的质量 表统计数据的 质量越好 估计值就越准确 对于只有一个表而且该表没有估算行统计数据的任务 我们无法提供任何类 型的完成百分比估算值 在此情况下 可使用任务状态和加载行的指示来确认任务是否确实在运行且取得进 展 209

216 任务期间的表状态 任务期间的表状态 AWS DMS 控制台更新有关迁移期间表状态的信息 下表显示了可能的状态值 状态 描述 表不存在 AWS DMS 在源终端节点上找不到表 加载前 完全加载过程已启用 但尚未启动 完全加载 完全加载过程正在进行 表已完成 完全加载已完成 表已取消 已取消加载表 表错误 加载表时出错 使用 Amazon CloudWatch 监控复制任务 您可以使用 Amazon CloudWatch 警报或事件 以便更密切地跟踪您的迁移 有关 Amazon CloudWatch 的 更多信息 请参阅 Amazon CloudWatch 用户指南中的什么是 Amazon CloudWatch Amazon CloudWatch 事件和 Amazon CloudWatch Logs 请注意 在使用 Amazon CloudWatch 时 需要支付相应的费用 AWS DMS 控制台显示了每个任务的基本 CloudWatch 统计数据 例如 任务状态 完成百分比 已用时 间 表统计数据等 如下所示 选择复制任务 然后选择任务监控选项卡 210

217 使用 Amazon CloudWatch 监控复制任务 在选择表统计数据选项卡时 AWS DMS 控制台显示每个表的性能统计数据 包括插入 删除和更新数 此外 如果从复制实例页中选择一个复制实例 您可以选择监控选项卡以查看该实例的性能指标 211

218 数据迁移服务指标 数据迁移服务指标 AWS DMS 提供以下指标的统计数据 主机指标 复制主机的性能和利用率统计数据 由 Amazon CloudWatch 提供 有关可用指标的完整列 表 请参阅复制实例指标 (p. 213) 复制任务指标 复制任务的统计数据 包括传入和已提交更改 以及复制主机与源数据库和目标数据库之 间的延迟 有关可用指标的完整列表 请参阅复制任务指标 (p. 214) 表指标 迁移过程中的表的统计数据 包括插入数 更新数 删除数和完成的 DDL 语句 任务指标划分为复制主机与源终端节点之间的统计数据 以及复制主机与目标终端节点之间的统计 数据 您可以将两个相关的统计数据加在一起 确定某个任务的统计数据总计 例如 您可以合并 CDCLatencySource 和 CDCLatencyTarget 值以确定总延迟时间或副本滞后 任务指标值受您源数据库上当前活动的影响 例如 如果事务已开始但尚未提交 CDCLatencySource 指标 将继续增长 直至提交该事务 212

219 复制实例指标 对于复制实例 需要澄清一下 FreeableMemory 指标 FreeableMemory 并不指示实际的可用内存 它是当 前使用的可释放内存 (以用于其他用途) 它是复制实例上使用的缓冲区和缓存的组合 虽然 FreeableMemory 指标不反映实际的可用内存 但 FreeableMemory 和 SwapUsage 指标组合可以指示 复制实例是否过载 请监控这两个指标是否出现以下情况 FreeableMemory 指标接近于零 SwapUsage 指标增加或发生波动 如果出现上述任一情况 则表示应考虑移动到更大的复制实例 还应考虑减少在复制实例上运行的任务数量 和类型 完全加载任务所需的内存比仅复制更改的任务需要的内存多 复制实例指标 复制实例监控包括针对以下统计数据的 Amazon CloudWatch 指标 CPU 使用率 使用的 CPU 量 单位 字节 可用存储空间 可用存储空间的大小 单位 字节 FreeableMemory 随机存取内存的可用大小 单位 字节 写入 IOPS 每秒平均磁盘 I/O 操作数 单位 计数/秒 读取 IOPS 每秒平均磁盘 I/O 操作数 单位 计数/秒 写入吞吐量 每秒写入磁盘的平均字节数 单位 字节/秒 读取吞吐量 每秒从磁盘读取的平均字节数 单位 字节/秒 写入延迟 每个磁盘 I/O 操作所需的平均时间 213

220 复制任务指标 单位 秒 读取延迟 每个磁盘 I/O 操作所需的平均时间 单位 秒 交换区使用情况 复制实例上使用的交换空间的大小 单位 字节 NetworkTransmitThroughput 复制实例的传出 (传输) 网络流量 包括用于监控和复制的客户数据库流量和 AWS DMS 流量 单位 字节/秒 NetworkReceiveThroughput 复制实例的传入 (接收) 网络流量 包括用于监控和复制的客户数据库流量和 AWS DMS 流量 单位 字节/秒 复制任务指标 复制任务监控包括针对以下统计数据的指标 FullLoadThroughputBandwidthSource 源上的完全加载的传入网络带宽 以千字节 (KB)/秒为单位 FullLoadThroughputBandwidthTarget 目标上的完全加载的传出网络带宽 以 KB/秒为单位 FullLoadThroughputRowsSource 源上的完全加载的传入更改 以行/秒为单位 FullLoadThroughputRowsTarget 目标上的完全加载的传出更改 以行/秒为单位 CDCIncomingChanges 在某个时间点等待应用于目标的总更改事件数 请注意 这与源终端节点的事务更改速率指标不同 对 于该指标 较大的值通常表示 AWS DMS 无法及时应用捕获的更改 从而导致较高的目标延迟 CDCChangesMemorySource 内存中累积并等待从源提交的行数 CDCChangesMemoryTarget 内存中累积并等待提交到目标的行数 CDCChangesDiskSource 磁盘上累积并等待从源提交的行数 CDCChangesDiskTarget 磁盘上累积并等待提交到目标的行数 214

221 管理 AWS DMS 日志 CDCThroughputBandwidthSource 目标的网络带宽 以 KB/秒为单位 CDCThroughputBandwidth 记录采样点上的带宽 如果未找到网络 流量 则该值为零 由于 CDC 不发布长时间运行的事务 可能不会记录网络流量 CDCThroughputBandwidthTarget 目标的网络带宽 以 KB/秒为单位 CDCThroughputBandwidth 记录采样点上的带宽 如果未找到网络 流量 则该值为零 由于 CDC 不发布长时间运行的事务 可能不会记录网络流量 CDCThroughputRowsSource 源的传入任务更改 以行/秒为单位 CDCThroughputRowsTarget 目标的传出任务更改 以行/秒为单位 CDCLatencySource 从源终端节点中捕获的最后一个事件与 AWS DMS 实例的当前系统时间戳之间的间隔 (秒) 如果出于任 务范围的原因而未从源中捕获任何更改 AWS DMS 会将该值设置为零 CDCLatencyTarget 在目标上等待提交的第一个事件时间戳与 AWS DMS 实例的当前系统时间戳之间的间隔 秒 如果存 在未由目标处理的事务 则会发生此值 否则 如果应用了所有事务 目标延迟会与源延迟相同 目标 延迟永远不应小于源延迟 管理 AWS DMS 任务日志 在迁移过程中 AWS DMS 使用 Amazon CloudWatch 记录任务信息 您可以使用 AWS CLI 或 AWS DMS API 查看有关任务日志的信息 为此 请使用 describe-replication-instance-task-logs AWS CLI 命令或 AWS DMS API 操作 DescribeReplicationInstanceTaskLogs 例如 以下 AWS CLI 命令显示了采用 JSON 格式的任务日志元数据 $ aws dms describe-replication-instance-task-logs \ --replication-instance-arn arn:aws:dms:us-east-1: :rep:cdsfsfsfffssufcay 命令中的示例响应如下所示 "ReplicationInstanceTaskLogs": [ "ReplicationTaskArn": "arn:aws:dms:useast-1: :task:my34u6z4msy52grtix3o4ay", "ReplicationTaskName": "mysql-to-ddb", "ReplicationInstanceTaskLogSize": ], "ReplicationInstanceArn": "arn:aws:dms:us-east-1: :rep:cdsfsfsfffssufcay" 在此响应中 只有一个与复制实例关联的任务日志 (mysql-to-ddb) 此日志的大小为 3,726,124 字节 您可以使用由 describe-replication-instance-task-logs 返回的信息来诊断和排查任务日志的问 题 例如 如果您对任务启用详细的调试日志记录 则任务日志将快速增大 可能使用复制实例上的所有可 215

222 使用 AWS CloudTrail 记录 AWS DMS API 调用 用存储空间 并且导致实例状态更改为 storage-full 通过描述任务日志 您可以确定不再需要的日志 然后可以将其删除 从而释放存储空间 要删除任务的任务日志 请将任务设置 DeleteTaskLogs 设置为 true 例如 以下 JSON 使用 AWS CLI modify-replication-task 命令或 AWS DMS API ModifyReplicationTask 操作在修改任务时删除 任务日志 "Logging": "DeleteTaskLogs":true 使用 AWS CloudTrail 记录 AWS DMS API 调用 AWS CloudTrail 服务记录您的 AWS 账户或者代表该账户执行的所有 AWS Database Migration Service (AWS DMS) API 调用 AWS CloudTrail 将此日志记录信息存储在 S3 存储桶中 您可以使用 CloudTrail 收 集的信息来监控 AWS DMS 活动 如创建或删除复制实例或终端节点 例如 您可以确定请求是否已成功完 成以及由哪位用户发出 有关 CloudTrail 的更多信息 请参阅 AWS CloudTrail User Guide 如果使用 AWS DMS 控制台或 AWS DMS 命令行界面代表您的 AWS 账户执行操作 则 AWS CloudTrail 会将操作记录为对 AWS DMS API 进行的调用 例如 如果您使用 AWS DMS 控制台来执行 describe connections 操作 或者调用 AWS CLI describe-connections 命令 则 AWS CloudTrail 日志将显示对 AWS DMS API DescribeConnections 操作的调用 有关 AWS CloudTrail 记录的 AWS DMS API 操作的列表 请 参阅 AWS DMS API 参考 配置 CloudTrail 事件日志记录 CloudTrail 可分别在每个区域中创建审核跟踪并将其存储在 S3 存储桶中 您可以将 CloudTrail 配置为 使用 Amazon Simple Notification Service (Amazon SNS) 在创建了日志文件时发出通知 但这种配置是 可选的 CloudTrail 会频繁发出通知 因此 建议您将 Amazon SNS 与 Amazon Simple Queue Service (Amazon SQS) 队列一起使用 并以编程方式来处理通知 可以使用 AWS 管理控制台 CLI 或 API 来启用 CloudTrail 启用 CloudTrail 日志记录后 可以让 CloudTrail 服务创建一个 S3 存储桶 用于存储日志文件 有关详细信息 请参阅 AWS CloudTrail User Guide 中的创 建和更新跟踪 AWS CloudTrail User Guide 还包含有关如何将多个区域的 CloudTrail 日志聚合到单个 S3 存 储桶中的信息 使用 CloudTrail 服务不产生任何费用 但是 如果启用相应选项 则需要支付使用 S3 的标准费用以及使用 Amazon SNS 的费用 有关定价详细信息 请参阅 S3 和 Amazon SNS 定价页面 CloudTrail 日志文件中的 AWS Database Migration Service 事件条目 CloudTrail 日志文件包含使用 JSON 格式化的事件信息 一条事件记录表示一次 AWS API 调用 并包含有 关请求的操作 请求操作的用户 请求日期和时间等信息 CloudTrail 日志文件包含 AWS 账户的所有 AWS API 调用 (而不只是 AWS DMS API 调用) 的事件 但是 您可以使用 eventname 元素读取日志文件并扫描对 AWS DMS API 的调用 有关 CloudTrail 日志文件中不同元素和值的更多信息 请参阅 AWS CloudTrail User Guide 中的 CloudTrail 事件参考 216

223 CloudTrail 日志文件中的 AWS Database Migration Service 事件条目 您还可以利用与 CloudTrail 集成的 Amazon 合作伙伴解决方案来读取和分析 CloudTrail 日志文件 有关选 项 请参阅 AWS 合作伙伴页面 217

224 复制任务统计数据 验证 AWS DMS 任务 AWS DMS 提供数据验证支持 以确保准确地将您的数据从源迁移到目标 如果为任务启用该功能 在为表 执行完全加载后 AWS DMS 立即开始比较源和目标数据 数据验证是可选的 AWS DMS 比较源和目标记录并报告任何不匹配 此外 对于支持 CDC 的任务 AWS DMS 还会比较增量更改并报告任何不匹配 在数据验证期间 AWS DMS 将源中的每一行与目标中的相应行进行比较 并确认这些行包含相同的数据 要完成该操作 AWS DMS 发出相应的查询以检索数据 请注意 这些查询将占用源和目标中的额外资源以 及额外的网络资源 数据验证适用于以下数据库 Oracle PostgreSQL MySQL MariaDB Microsoft SQL Server Amazon Aurora (MySQL) Amazon Aurora (PostgreSQL) 除了迁移本身所需的时间以外 数据验证还需要占用额外的时间 所需的额外时间取决于迁移的数据量 数据验证设置包括以下内容 要启用数据验证 请将 EnableValidation 设置设为 true 要调整 AWS DMS 在验证期间使用的执行线程数 请设置 ThreadCount 值 ThreadCount 的默认值为 5 如果将 ThreadCount 设置为较大的数字 AWS DMS 可以更快地完成验证 不过 它还会执行更多 同时查询 从而在源和目标上占用更多资源 例如 以下 JSON 启用验证并将线程数从 5 个 (默认设置) 增加到 8 个 ValidationSettings": "EnableValidation":true, "ThreadCount":8 复制任务统计数据 如果启用了数据验证 AWS DMS 将在表级别提供以下统计数据 ValidationState 表的验证状态 该参数可能具有以下值 Not enabled 没有在迁移任务中为表启用验证 Pending records 表中的某些记录正在等待验证 Mismatched records 表中的某些记录在源和目标之间不匹配 可能会因多种原因而发生不匹配 有关 更多信息 请参阅目标终端节点上的 awsdms_validation_failures 表 Suspended records 无法验证表中的某些记录 218

225 复制任务统计数据 No primary key 无法验证表 因为该表没有主键 Table error 未验证表 因为该表处于错误状态并且未迁移某些数据 Validated 已验证表中的所有行 如果更新表 则可能会变为非 Validated 状态 Error 无法验证表 因为出现意外错误 ValidationPending 已迁移到目标但尚未验证的记录数 ValidationSuspended AWS DMS 无法比较的记录数 例如 如果持续更新源中的记录 AWS DMS 将无 法比较源和目标 有关更多信息 请参阅 错误处理任务设置 (p. 186) ValidationFailed 未通过数据验证阶段的记录数 有关更多信息 请参阅 错误处理任务设置 (p. 186) ValidationSucceededRecordCount AWS DMS 每分钟验证的行数 ValidationAttemptedRecordCount 每分钟尝试验证的行数 ValidationFailedOverallCount 验证失败的行数 ValidationSuspendedOverallCount 验证已暂停的行数 ValidationPendingOverallCount 验证待处理的行数 ValidationBulkQuerySourceLatency AWS DMS 可以批量验证数据 特别是在有许多更改时进行完全加 载和持续复制期间的特定场景中 此指标指示从源终端节点读取批量数据所需的延迟 ValidationBulkQueryTargetLatency AWS DMS 可以批量验证数据 特别是在有许多更改时进行完全加载 和持续复制期间的特定场景中 此指标指示从目标终端节点读取批量数据所需的延迟 ValidationItemQuerySourceLatency 在持续复制期间 数据验证可以标识持续更改并验证这些更改 此 指标指示从源中读取这些更改时的延迟 验证可根据更改数运行比所需数量更多的查询 前提是验证期间 出错 ValidationItemQueryTargetLatency 在持续复制期间 数据验证可以标识持续更改并逐行验证这些更改 此指标向我们提供从目标读取这些更改时的延迟 验证可根据更改数运行比所需数量更多的查询 前提是 验证期间出错 您可以使用 控制台 AWS CLI 或 AWS DMS API 查看数据验证信息 在控制台中 您可以选择在创建或修改任务时验证该任务 要使用控制台查看数据验证报告 请在任务页 中选择任务 然后在详细信息部分中选择表统计数据选项卡 在使用 CLI 时 请在创建或修改任务时将 EnableValidation 参数设置为 true 以开始数据验证 以下示 例创建一个任务并启用数据验证 create-replication-task --replication-task-settings '"ValidationSettings":"EnableValidation":true' --replication-instance-arn arn:aws:dms:us-east-1: : rep:36kwvmb7q --source-endpoint-arn arn:aws:dms:us-east-1: : endpoint:cszaefqurfymm --target-endpoint-arn arn:aws:dms:us-east-1: : endpoint:cgpp7mf6wt4jq --migration-type full-load-and-cdc --table-mappings '"rules": ["rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "data_types", "table-name": "%", "rule-action": "include"]' 可以使用 describe-table-statistics 命令接收 JSON 格式的数据验证报告 以下命令显示数据验 证报告 aws dms describe-table-statistics --replication-task-arn arn:aws:dms:us-east-1: : rep:36kwvmb7q 该报告类似于以下内容 219

226 故障排除 "ReplicationTaskArn": "arn:aws:dms:us-west-2: :task:vfpftykk2rysi", "TableStatistics": [ "ValidationPendingRecords": 2, "Inserts": 25, "ValidationState": "Pending records", "ValidationSuspendedRecords": 0, "LastUpdateTime": , "FullLoadErrorRows": 0, "FullLoadCondtnlChkFailedRows": 0, "Ddls": 0, "TableName": "t_binary", "ValidationFailedRecords": 0, "Updates": 0, "FullLoadRows": 10, "TableState": "Table completed", "SchemaName": "d_types_s_sqlserver", "Deletes": 0 在使用 AWS DMS API 时 请使用 CreateReplicationTask 操作创建一个任务 并将 EnableValidation 参数设置为 true 以验证该任务迁移的数据 可以使用 DescribeTableStatistics 操作 接收 JSON 格式的数据验证报告 故障排除 在验证期间 AWS DMS 在目标终端节点中创建一个新表 awsdms_validation_failures_v1 如果任何记录进入 ValidationSuspended 或 ValidationFailed 状态 则 AWS DMS 将诊断信息写入到 awsdms_validation_failures_v1 中 您可以查询该表以帮助纠正验证错误 以下是 awsdms_validation_failures_v1 表描述 列名称 数据类型 描述 TASK_NAME VARCHAR(128) NOT NULL AWS DMS 任务标识符 TABLE_OWNER VARCHAR(128) NOT NULL 表的架构 (所有者) TABLE_NAMEVARCHAR(128) NOT NULL 表名称 FAILURE_TIME DATETIME(3) NOT NULL 发生失败的时间 KEY 这是行记录类型的主键 TEXT NOT NULL FAILURE_TYPE VARCHAR(128) NOT NULL 验证错误的严重性 可以是 Failed 或 Suspended 通过查询 awsdms_validation_failures_v1 表 以下查询显示任务的所有失败 任务名称应 该是任务的外部资源 ID 任务的外部资源 ID 是任务 ARN 中的最后一个值 例如 对于 ARN 值为 arn:aws:dms:us-west-2:5599:task: VFPFKH4FJR3FTYKK2RYSI 的任务 任务的外部资源 ID 为 VFPFKH4FJR3FTYKK2RYSI 220

227 限制 select * from awsdms_validation_failures_v1 where TASK_NAME = VFPFKH4FJR3FTYKK2RYSI 在知道了失败记录的主键后 您可以查询源和目标终端节点以查看记录的哪个部分不匹配 限制 数据验证要求表具有主键或唯一索引 主键列不能是 CLOB BLOB 或 BYTE 类型 对于 VARCHAR 或 CHAR 类型的主键列 长度必须小于 1024 如果目标 PostgreSQL 实例中的主键列的排序规则未设置为 C 则与 Oracle 中的排序顺序相 比 PostgreSQL 的主键的排序顺序将不同 如果 PostgreSQL 和 Oracle 的排序顺序不同 数据验证将无 法验证记录 数据验证将针对源和目标数据库生成额外的查询 您必须确保两个数据库具有足够的资源以处理该额外负 载 如果迁移使用自定义筛选或将几个数据库合并为一个数据库 则不支持数据验证 对于源或目标 Oracle 终端节点 AWS DMS 使用 DBMS_CRYPTO 验证 BLOB 如果 Oracle 终端节点使 用 BLOB 则必须为用于访问 Oracle 终端节点的用户账户授予 dbms_crypto 执行权限 您可以运行以下 语句以执行该操作 grant execute on sys.dbms_crypto to <dms_endpoint_user>; 如果验证期间在 AWS DMS 外部修改了目标数据库 则可能不会准确报告差异 如果在 AWS DMS 对目 标表执行验证期间 某个应用程序将数据写入到该表中 则可能会发生这种情况 如果在验证期间持续修改一个或多个行 则 AWS DMS 无法验证这些行 不过 您可以在任务完成后手动 验证这些行 如果 AWS DMS 检测到超过 10,000 个失败或无法验证的记录 则会停止验证 在继续之前 先解决数据 的任何根本问题 221

228 标记 AWS Database Migration Service 中的资源 您可以在 AWS Database Migration Service (AWS DMS) 中使用标签将元数据添加到您的资源 此外 您可 以将这些标签与 AWS Identity and Access Management (IAM) 策略结合使用 以管理对 AWS DMS 资源的 访问并控制可将哪些操作应用于 AWS DMS 资源 最后 您可以将具有类似标签的资源的费用分组在一起 使用这些标签来跟踪成本 所有 AWS DMS 资源都可添加标签 复制实例 终端节点 复制任务 证书 AWS DMS 标签是由您定义的名称-值对 与某种 AWS DMS 资源关联 此名称也叫密钥 为键提供值为可 选操作 可使用标签向 AWS DMS 资源分配任意信息 标签密钥可用于定义 (例如) 一个类别 而标签值可以 是该类别中的一个项目 例如 您可以定义 project 标签键和 Salix 标签值 以指示将 AWS DMS 资源分配 给 Salix 项目 也可使用标签通过 environment=test 或 environment =production 等键指定 AWS DMS 资源 用于测试或生产 我们建议使用一组具有一致性的标签键 以使跟踪与 AWS DMS 资源关联的元数据变得更 轻松 使用标签组织 AWS 账单来反映您自身的成本结构 要执行此操作 请注册以获取包含标签密钥值的 AWS 账户账单 然后 如需查看组合资源的成本 请按有同样标签键值的资源组织您的账单信息 例如 您可以 将特定的应用程序名称用作几个资源的标签 然后组织账单信息 以查看在数个服务中的使用该应用程序的 总成本 有关更多信息 请参阅AWS 账单和成本管理 中的成本分配和标签设置 每个 AWS DMS 资源都有一组标签 其中包含分配给该 AWS DMS 资源的所有标签 一个标记集可以包含 多达十个标记 也可以为空 如果向 AWS DMS 资源添加一个标签 而该标签的键与资源上某个现有的标签 相同 则新值将覆盖旧值 AWS 不会对您的标记应用任何语义意义 所有标记都会严格地作为字符串进行解析 根据您在创建资源时使 用的设置 AWS DMS 可能会在 AWS DMS 资源上设置标签 下表介绍了 AWS DMS 标签的特征 标签键是标签的名称 属于必填内容 该字符串值的长度可以是 1 到 128 个 Unicode 字符 并且不能 以 aws: 或 dms: 为前缀 该字符串只能包含 Unicode 字母 数字 空格 _. / = + - 的集 合 (Java 正则表达式 "^([\\pl\\pz\\pn_.:/=+\\-]*)$") 标签值则是一个可选的标签字符串值 该字符串值的长度可以是 1 到 256 个 Unicode 字符 并且不能 以 aws: 或 dms: 为前缀 该字符串只能包含 Unicode 字母 数字 空格 _. / = + - 的集 合 (Java 正则表达式 "^([\\pl\\pz\\pn_.:/=+\\-]*)$") 在标签集中 值不必具有唯一性 且可为空值 例如 在 项目/Trinity 和 成本 - 中心/Trinity 的一个标签集 中 可以存在键值对 您可以使用 AWS CLI 或 AWS DMS API 添加 列出和删除 AWS DMS 资源上的标签 在使用 AWS CLI 或 AWS DMS API 时 必须提供您要使用的 AWS DMS 资源的 Amazon 资源名称 (ARN) 有关构造 ARN 的详 细信息 请参阅为 AWS DMS 构造 Amazon 资源名称 (ARN) (p. 9) 222

229 API 注意 对标签进行缓存以用于授权 因此 可能先用几分钟添加和更新 AWS DMS 资源上的标签 然后标签 才可用 API 您可使用 AWS DMS API 为 AWS DMS 资源实例添加 列出或删除标签 要向 AWS DMS 资源添加标签 请使用 AddTagsToResource 操作 要列出分配给 AWS DMS 资源的标签 请使用 ListTagsForResource 操作 要从 AWS DMS 资源删除标签 请使用 RemoveTagsFromResource 操作 要了解有关如何构建所需 ARN 的更多信息 请参阅为 AWS DMS 构造 Amazon 资源名称 (ARN) (p. 9) 在通过 AWS DMS API 使用 XML 时 标签会使用如下架构 <Tagging> <TagSet> <Tag> <Key>Project</Key> <Value>Trinity</Value> </Tag> <Tag> <Key>User</Key> <Value>Jones</Value> </Tag> </TagSet> </Tagging> 下表提供了允许使用的 XML 标签及其特征的列表 请注意 密钥和值的内容是区分大小写的 例 如 project=trinity 和 PROJECT=Trinity 是两个不同的标签 标签元素 说明 标签集 标签集是分配给 Amazon RDS 资源的所有标签的容器 每个资源只能有一个标 签集 您只可以通过 AWS DMS API 使用标签集 标签 标签是用户定义的密钥值对 一个标签集中可以有 1 到 10 个标签 密钥 密钥是标签必需的名称 该字符串值的长度可以是 1 到 128 个 Unicode 字符 并且不能以 dms: 或 aws: 为前缀 该字符串只能由下列内容组成 Unicode 字 母 数字 空格 _. / = + - (Java 正则表达式 "^([\\pl\\pz\ \pn_.:/=+\\-]*)$") 密钥在标签集中必须具有唯一性 例如 标签集中不能有键相同但值不同的键值对 如 project/trinity 和 project/xanadu 值 值是标签的可选内容 该字符串值的长度可以是 1 到 256 个 Unicode 字符 并且不能以 dms: 或 aws: 为前缀 该字符串只能由下列内容组成 Unicode 字 母 数字 空格 _. / = + - (Java 正则表达式 "^([\\pl\\pz\ \pn_.:/=+\\-]*)$") 在标签集中 值不必具有唯一性 且可为空值 例如 在 项目/Trinity 和 成本 中心/Trinity 的一个标签集中 可以存在键值对 223

230 AWS DMS 事件类别和事件消息 在 AWS Database Migration Service 中使用事件和通知 AWS Database Migration Service (AWS DMS) 使用 Amazon Simple Notification Service (Amazon SNS) 在 发生 AWS DMS 事件时提供通知 例如 创建或删除复制实例 您可以 AWS 区域的 Amazon SNS 支持的 任何形式使用这些通知 如电子邮件 短信或者调用 HTTP 终端节点 AWS DMS 将这些事件分组为您可以订阅的类型 以便您在出现该类事件时收到通知 例如 如果您订阅 了指定复制实例的 创建 类别 则只要发生了与创建相关的事件影响到您的复制实例 您就会收到通知 如 果您订阅了复制实例的 配置更改 类别 则您将在复制实例的配置更改时收到通知 您还将在事件通知订阅 更改时收到通知 有关 AWS DMS 提供的事件类别的列表 请参阅后文中的AWS DMS 事件类别和事件消 息 (p. 224) AWS DMS 将事件通知发送到您在创建事件订阅时提供的地址 您可能希望创建多个不同的订阅 如使用一 个订阅接收所有事件通知 并使用另一个订阅接收仅针对生产 DMS 资源的关键事件 您可以使用以下方法 轻松禁用通知而不删除订阅 在 AWS DMS 控制台中将已启用选项设置为否 或者使用 AWS DMS API 将 Enabled 参数设置为 false Note 目前 在支持 AWS DMS 的所有区域中 使用 SMS 文本消息的 AWS DMS 事件通知当前对 AWS DMS 资源可用 更多有关在 SNS 上使用短信的信息 请参阅使用 Amazon SNS 发送和接收 SMS 通知 AWS DMS 使用订阅标识符来标识各个订阅 您可以将多个 AWS DMS 事件订阅发布到同一个 Amazon SNS 主题 在您使用事件通知时 需要支付 Amazon SNS 费用 有关 Amazon SNS 计费的更多信息 请参 阅 Amazon SNS 定价 要订阅 AWS DMS 事件 您可以使用以下过程 1. 创建 Amazon SNS 主题 在主题中 指定您要接收的通知类型 以及要将通知发送到的地址或号码 2. 使用 AWS 管理控制台 AWS CLI 或 AWS DMS API 创建 AWS DMS 事件通知订阅 3. AWS DMS 将批准电子邮件或者 SMS 消息发送给您在订阅时提交的地址 要确认订阅 请单击批准电子 邮件或 SMS 消息中的链接 4. 在确认订阅后 将在 AWS DMS 控制台的事件订阅部分中更新您的订阅状态 5. 您将开始接收事件通知 有关您可以接收通知的类型和事件的列表 请参阅下面的章节 有关订阅和使用 AWS DMS 事件通知的更多 详情 请参阅订阅 AWS DMS 事件通知 (p. 226) AWS DMS 事件类别和事件消息 AWS DMS 会生成各种类型的大量事件 您可以使用 AWS DMS 控制台或 AWS DMS API 对它们进行订阅 每个类别应用于一种源类型 当前 AWS DMS 支持复制实例和复制任务源类型 下表显示了复制实例源类型可能的类别和事件 224

231 AWS DMS 事件类别和事件消息 类别 DMS 事件 ID 说明 配置更改 DMS-EVENT-0012 REP_INSTANCE_CLASS_CHANGING 正在更改此复 制实例的复制实例类 配置更改 DMS-EVENT-0014 REP_INSTANCE_CLASS_CHANGING 已更改此复制 实例的复制实例类 配置更改 DMS-EVENT-0018 BEGIN_SCALE_STORAGE 正在增加复制实例的存 储 配置更改 DMS-EVENT-0017 FINISH_SCALE_STORAGE 已增加复制实例的存储 配置更改 DMS-EVENT-0024 BEGIN_CONVERSION_TO_HIGH_AVAILABILITY 正 在将复制实例转换为多可用区配置 配置更改 DMS-EVENT-0025 FINISH_CONVERSION_TO_HIGH_AVAILABILITY 将 复制实例转换为多可用区配置已完成 配置更改 DMS-EVENT-0030 BEGIN_CONVERSION_TO_NON_HIGH_AVAILABILITY 正在将复制实例转换为单可用区配置 配置更改 DMS-EVENT-0029 FINISH_CONVERSION_TO_NON_HIGH_AVAILABILITY 将复制实例转换为单可用区配置已完成 创建 DMS-EVENT-0067 CREATING_REPLICATION_INSTANCE 正在创建复 制实例 创建 DMS-EVENT-0005 CREATED_REPLICATION_INSTANCE 复制实例已创 建 删除 DMS-EVENT-0066 DELETING_REPLICATION_INSTANCE 正在删除复 制实例 删除 DMS-EVENT-0003 DELETED_REPLICATION_INSTANCE 复制实例已删 除 维护 DMS-EVENT-0047 FINISH_PATCH_INSTANCE 复制实例上的管理软件 已更新 维护 DMS-EVENT-0026 BEGIN_PATCH_OFFLINE 正在对复制实例进行脱机 维护 复制实例当前不可用 维护 DMS-EVENT-0027 FINISH_PATCH_OFFLINE 复制实例的脱机维护已完 成 现在可以使用复制实例 LowStorage DMS-EVENT-0007 LOW_STORAGE 复制实例的免费存储不足 故障转移 DMS-EVENT-0013 FAILOVER_STARTED 为多可用区实例启用了故障转 移 故障转移 DMS-EVENT-0049 FAILOVER_COMPLETED 多可用区复制实例的故障 转移已完成 故障转移 DMS-EVENT-0050 MAZ_INSTANCE_ACTIVATION_STARTED 多可用区 激活已开始 故障转移 DMS-EVENT-0051 MAZ_INSTANCE_ACTIVATION_COMPLETED 多可 用区激活已完成 225

232 订阅 AWS DMS 事件通知 类别 DMS 事件 ID 说明 Failure DMS-EVENT-0031 REPLICATION_INSTANCE_FAILURE 复制实例遇到 了存储故障 Failure DMS-EVENT-0036 INCOMPATIBLE_NETWORK 由于不兼容的网络 复 制实例失败 下表显示了复制任务源类型可能的类别和事件 类别 DMS 事件 ID 描述 StateChange DMS-EVENT-0069 REPLICATION_TASK_STARTED 复制任务已开始 StateChange DMS-EVENT-0077 REPLICATION_TASK_STOPPED 复制任务已停止 Failure DMS-EVENT-0078 REPLICATION_TASK_FAILED 复制任务已失败 删除 DMS-EVENT-0073 REPLICATION_TASK_DELETED 复制任务已删除 创建 DMS-EVENT-0074 REPLICATION_TASK_CREATED 复制任务已创建 订阅 AWS DMS 事件通知 您可以创建 AWS DMS 事件通知订阅 这样就能在发生 AWS DMS 事件时收到通知 创建订阅最简单的方 式是使用 AWS DMS 控制台 如果您选择使用 AWS DMS API 创建事件通知订阅 就必须创建一个 Amazon SNS 主题 并使用 Amazon SNS 控制台或 API 订阅该主题 在这种情况下 您还需要记下主题的 Amazon 资源名称 (ARN) 因为在提交 CLI 命令或者 API 操作时会用到此 ARN 有关创建和订阅 Amazon SNS 主题 的信息 请参阅 Amazon SNS 入门 在通知订阅中 您可以指定希望收取其通知的源类型以及触发该事件的 AWS DMS 源 您可以使用 SourceType 值定义 AWS DMS 源类型 您可以使用 SourceIdentifier 值定义生成事件的源 如果同时 指定 SourceType 和 SourceIdentifier (如 SourceType = db-instance 和 SourceIdentifier = mydbinstance1) 则会收到指定源的所有 DB_Instance 事件 如果指定 SourceType 但未指定 SourceIdentifier 则会收到所有 AWS DMS 源的该源类型的事件通知 如果未指定 SourceType 或 SourceIdentifier 则会收到从属于您的客户账户的所有 AWS DMS 源中生成的事件通知 AWS 管理控制台 使用控制台订阅 AWS DMS 事件通知 登录到 AWS 管理控制台 然后选择 AWS DMS 请注意 如果您以 AWS Identity and Access Management (IAM) 用户身份登录 您必须具有适当的权限才能访问 AWS DMS 在导航窗格中 选择事件订阅 在事件订阅页中 选择创建事件订阅 在创建事件订阅页中 执行以下操作 a. b. 对于名称 键入事件通知订阅的名称 为发送通知到选择一个现有的 Amazon SNS 主题 或者选择创建主题 您必须具有一个可将通知发 送到的现有 Amazon SNS 主题 否则必须创建主题 如果选择创建主题 您可以输入将通知发送到 的电子邮件地址 c. d. 对于源类型 请选择一种源类型 唯一选项是复制实例 选择是以启用订阅 如果要创建订阅 但尚未发送通知 请选择否 226

233 AWS DMS API e. 根据选定源类型的情况 选择您希望接收其事件通知的事件类别和源 f. 选择 Create AWS DMS 控制台会指示正在创建订阅 AWS DMS API 使用 AWS DMS API 订阅 AWS DMS 事件通知 调用 CreateEventSubscription 227

234 过程概述 使用 AWS Database Migration Service 和 AWS Snowball 迁移大型数 据存储 大型数据迁移可能包含很多 TB 的信息 并且可能会由于网络性能以及需要移动非常大的数据量而减慢速 度 AWS DMS 可以将数据加载到 AWS Snowball 设备上 将该数据传输到 AWS 然后将数据加载到目标 AWS 数据存储中 在使用 AWS DMS 和 AWS Schema Conversion Tool (AWS SCT) 时 您可以分两个阶段迁移数据 首先 您使用 AWS SCT 在本地处理数据 并将该数据移动到 AWS Snowball Edge 设备中 然后 AWS Snowball 自动将数据加载到 Amazon S3 存储桶中 接下来 在数据位于 Amazon S3 上后 AWS DMS 提取这些文 件并将数据迁移到目标数据存储中 如果使用更改数据捕获 (CDC) 这些更新将写入到 Amazon S3 存储桶 中 并持续更新目标数据存储 AWS Snowball 是一种 AWS 服务 使用 AWS 拥有的设备 以比网络更快的速度将数据传输到云中 AWS Snowball Edge 设备最多可以容纳 100 TB 数据 它使用 256 位加密和行业标准的受信任平台模块 (TPM) 以确保您的数据安全并形成完整的监管链 Amazon S3 是一种存储和检索服务 要将数据元存储到 Amazon S3 中 请将要存储的文件上传到存储段 中 在上传文件时 您可以设置对象以及任何元数据的权限 AWS DMS 支持以下方案 从本地数据仓库迁移到 Amazon Redshift 这种方法涉及 AWS Schema Conversion Tool 的客户端软件安 装 该工具从仓库中读取信息 (提取器) 然后将数据移动到 S3 或 Snowball 然后 在 AWS 云中 从 S3 或 Snowball 中读取信息并将其注入 Amazon Redshift 中 从本地关系数据库迁移到 Amazon RDS 数据库 这种方法仍然涉及 AWS Schema Conversion Tool 的客户端软件安装 该工具从 AWS 支持的本地数据库中读取信息 然后 该工具将数据移动到 S3 或 Snowball 在数据位于 AWS 云中后 AWS DMS 将该数据写入到 Amazon EC2 或 Amazon RDS 上支持 的数据库中 过程概述 使用 AWS DMS 和 AWS Snowball 的过程包含几个步骤 它不仅使用 AWS DMS 和 AWS Snowball 而且 还使用 AWS Schema Conversion Tool (AWS SCT) 该概述后面的部分提供了每个任务的分步指南 Note 在使用 AWS Snowball 设备之前 建议您测试您的迁移 为此 您可以设置一个任务以将数据 (如 单个表) 发送到 Amazon S3 存储桶 而不是 AWS Snowball 设备 228

235 使用 AWS DMS 和 AWS Snowball 迁移数据的分步过程 该迁移包含一个本地任务 (AWS SCT 将数据移动到 AWS Snowball Edge 设备) 一个中间操作 (将数据从 AWS Snowball Edge 设备复制到 S3 存储桶) 以及一个远程任务 (AWS DMS 将数据从 Amazon S3 存储桶 加载到 AWS 上的目标数据存储中) 需要执行以下步骤以使用 AWS Snowball 将数据从本地数据存储迁移到 AWS 数据存储 1. 使用 AWS Snowball 控制台创建一个 AWS Snowball 任务 有关更多信息 请参阅 AWS Snowball 文档 中的创建导入任务 2. 在本地计算机上下载并安装 AWS SCT 应用程序 该计算机必须具有网络访问权限并能够访问用于迁移的 AWS 账户 有关可以在其中安装 AWS SCT 的操作系统的更多信息 请参阅安装和更新 AWS Schema Conversion Tool 3. 在本地专用 Linux 计算机上安装 AWS SCT DMS 代理 (DMS 代理) 建议您不要在安装 AWS SCT 应用程 序的同一计算机上安装 DMS 代理 4. 使用安装了 DMS 代理的本地专用 Linux 计算机解锁 AWS Snowball Edge 设备 5. 在 AWS SCT 中创建一个新项目 6. 配置 AWS SCT 以使用 DMS 代理 7. 在 AWS SCT 中注册 DMS 代理 8. 在安装了 DMS 代理的专用计算机上安装源数据库的数据库驱动程序 9. 创建要使用的 Amazon S3 存储桶并设置权限 10.在 AWS SCT 中编辑 AWS 服务配置文件 (AWS Service Profile) 11.在 SCT 中创建本地和 DMS 任务 (Local & DMS Task) 12.在 SCT 中运行并监控本地和 DMS 任务 (Local & DMS Task) 13.在 SCT 中运行 AWS SCT 任务并监控进度 使用 AWS DMS 和 AWS Snowball 迁移数据的分步 过程 以下部分提供了有关迁移步骤的详细信息 229

236 步骤 1 创建 AWS Snowball 任务 步骤 1 创建 AWS Snowball 任务 按照 AWS Snowball 文档的 AWS Snowball Edge 入门 您的第一个任务部分中概述的步骤创建 AWS Snowball 任务 步骤 2 下载并安装 AWS Schema Conversion Tool (AWS SCT) 按照 AWS SCT 文档的安装和更新 AWS Schema Conversion Tool 中的说明下载并安装 AWS Schema Conversion Tool 在可访问 AWS 的本地计算机上安装 AWS SCT 它应该是与打算安装 DMS 代理的计算 机不同的计算机 步骤 3 安装并配置 AWS SCT DMS 代理 在该步骤中 您在一个专用计算机上安装 DMS 代理 该计算机可以访问 AWS 以及安装了 AWS SCT 的计 算机 您可以在以下 Linux 平台上安装 DMS 代理 Red Hat Enterprise Linux 版本 6.2 至 和 7.1 (64 位) SUSE Linux 版本 11.1 (64 位) 安装 DMS 代理 1. 将名为 aws-schema-conversion-tool-dms-agent r2.x86_64.rpm 的 RPM 文件从 AWS SCT 安装目录复制到专用 Linux 计算机 2. 以根用户身份运行以下命令以安装 DMS 代理 如果在 SUSE Linux 上安装或升级 DMS 代理 您必须在 命令中添加 --nodeps 参数 sudo rpm -i aws-schema-conversion-tool-dms-agent r2.x86_64.rpm 默认安装位置是 /opt/amazon/aws-schema-conversion-tool-dms-agent 要在非默认目录中安装 DMS 代 理 请使用 --prefix <path to new product dir> 3. 要验证 Amazon RDS Migration Server 是否正在运行 请发出以下命令 ps -ef grep repctl 该命令的输出应显示正在运行两个进程 要配置 DMS 代理 您必须提供密码和端口号 将在 AWS SCT 中使用该密码 因此 请将其保存在方便的 位置 该端口是 DMS 代理应在其中侦听 AWS SCT 连接的端口 您可能需要将防火墙配置为允许连接 运行以下脚本以配置 DMS 代理 sudo /opt/amazon/aws-schema-conversion-tool-dms-agent/bin/configure.sh 230

237 步骤 4 解锁 AWS Snowball Edge 设备 步骤 4 解锁 AWS Snowball Edge 设备 您应该运行相应的命令 以从安装 DMS 代理的计算机中解锁 Snowball Edge 设备并为其提供凭证 这样 您就可以确保 DMS 代理调用连接到 AWS Snowball Edge 设备 有关解锁 AWS Snowball Edge 设备的更多 信息 请参阅解锁 Snowball Edge 例如 以下命令列出设备使用的 Amazon S3 存储桶 aws s3 ls s3://<bucket-name> --profile <Snowball Edge profile> --endpoint IP>: recursive 步骤 5 创建新的 AWS SCT 项目 接下来 您创建一个新 AWS SCT 项目 在 AWS SCT 中创建新项目 1. 启动 AWS SCT 然后为 File 选择 New Project 将显示 New Project 对话框 2. 添加以下项目信息 对于该参数 请执行该操作 Project Name 为您的项目键入一个名称 该项目本地存储在您的计算机 上 位置 键入您的本地项目文件的位置 OLTP 选择 Transactional Database (OLTP) Source DB Engine 选择源数据存储 Target DB Engine 选择目标数据存储 3. 选择 OK 以创建 AWS SCT 项目 4. (可选) 测试连接 步骤 6 配置 AWS SCT 配置文件以使用 DMS 代理 必须更新 AWS SCT 配置文件以使用 DMS 代理 配置 AWS SCT 配置文件以使用 DMS 代理 1. 启动 AWS SCT 2. 选择 Settings 然后选择 Global Settings 选择 AWS Service Profiles 3. 选择 Add New AWS Service Profile 231

238 步骤 6 配置 AWS SCT 配置文件 添加以下配置文件信息 对于该参数 请执行该操作 Profile Name 为您的配置文件键入一个名称 AWS Access Key 为打算用于迁移的 AWS 账户和 AWS 区域键入 AWS 访问 密钥 AWS Secret Key 为打算用于迁移的 AWS 账户和 AWS 区域键入 AWS 私有 密钥 区域 为使用的账户选择 AWS 区域 您的 DMS 复制实例 S3 存 储桶和目标数据存储必须位于该 AWS 区域中 S3 Bucket folder 为创建 AWS Snowball 任务时分配的 S3 存储桶键入一个名 称 在输入该信息后 选择 Test Connection 以确认 AWS SCT 可以连接到 Amazon S3 存储桶 弹出窗口中的 OLTP Local & DMS Data Migration 部分应显示所有具有 Pass 状态的条目 如果测试失 败 则可能是因为您使用的账户没有访问 Amazon S3 存储桶的相应权限 6. 如果测试通过 请选择 OK 然后再次选择 OK 以关闭窗口和对话框 232

239 步骤 7 注册 DMS 代理 步骤 7 在 AWS SCT 中注册 DMS 代理 接下来 您在 AWS SCT 中注册 DMS 代理 然后 SCT 尝试连接到该代理 从而显示状态 如果该代理可 用 将变为活动状态 注册 DMS 代理 1. 启动 AWS SCT 选择 View 然后选择 Database Migration View (DMS) 2. 选择 Agent 选项卡 然后选择 Register 将显示 New Agent Registration 对话框 3. 在 New Agent Registration 对话框中键入信息 4. 对于该参数 请执行该操作 描述 键入代理的名称 即 DMS Agent Host Name 键入安装了 DMS 代理的计算机的 IP 地址 端口 键入在配置 DMS 代理时使用的端口号 密码 键入在配置 DMS 代理时使用的密码 选择 Register 以在您的 AWS SCT 项目中注册该代理 步骤 8 在 Linux 计算机上安装 DMS 代理的源数据库 驱动程序 要成功进行迁移 DMS 代理必须能够连接到源数据库 要做到这一点 您需要安装源数据库的数据库驱动程 序 所需的驱动程序因数据库而异 233

240 步骤 8 安装源数据库驱动程序 要在安装数据库驱动程序后重新启动 DMS 代理 请将工作目录更改为 <product_dir>/bin 然后执行下 面为每个源数据库列出的步骤 cd <product_dir>/bin./arep.ctl stop./arep.ctl start 在 Oracle 上安装 安装 Oracle Instant Client for Linux (x86-64) 或更高版本 此外 如果您的系统中尚未包含符号链接 您需要在 $ORACLE_HOME\lib 目录中创建一个 该链接的 名称应该为 libclntsh.so 并且应指向该文件的特定版本 例如 在 Oracle 12c 客户端上 lrwxrwxrwx 1 oracle oracle 63 Oct 2 14:16 libclntsh.so -> /u01/app/oracle/home/lib/libclntsh.so.12.1 此外 LD_LIBRARY_PATH 环境变量应附加 Oracle lib 目录 并且应将其添加到安装的 lib 文件夹下面 的 site_arep_login.sh 脚本中 如果尚无该脚本 请进行添加 vi cat <product dir>/bin/site_arep_login.sh export ORACLE_HOME=/usr/lib/oracle/12.2/client64; export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib 在 Microsoft SQL Server 上安装 安装 Microsoft ODBC 驱动程序 使用以下代码更新 site_arep_login.sh export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/microsoft/msodbcsql/lib64/ Simba ODBC 驱动程序 安装 Microsoft ODBC 驱动程序 按如下方式编辑 simba.sqlserverodbc.ini 文件 DriverManagerEncoding=UTF-16 ODBCInstLib=libodbcinst.so 在 SAP Sybase 上安装 应安装 SAP Sybase ASE ODBC 64 位客户端 如果安装目录是 /opt/sap 请将 site_arep_login.sh 更新为 export SYBASE_HOME=/opt/sap export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SYBASE_HOME/ 234

241 步骤 9 配置 AWS SCT 以访问 Amazon S3 存储桶 DataAccess64/ODBC/lib:$SYBASE_HOME/DataAccess/ODBC/ lib:$sybase_home/ocs-16_0/lib:$sybase_home/ocs-16_0/ lib3p64:$sybase_home/ocs-16_0/lib3p /etc/odbcinst.ini 应包含以下条目 [Sybase] Driver=/opt/sap/DataAccess64/ODBC/lib/libsybdrvodb.so Description=Sybase ODBC driver 在 MySQL 上安装 安装 MySQL Connector/ODBC for Linux 或更高版本 确保 /etc/odbcinst.ini 文件包含 MySQL 条目 如以下示例中所示 [MySQL ODBC Unicode Driver] Driver = /usr/lib64/libmyodbc5w.so UsageCount = 1 在 PostgreSQL 上安装 安装 postgresql pgdg.<os Version>.x86_64.rpm 这是包含 psql 可执行文件的软件包 例如 postgresql pgdg.rhel7.x86_64.rpm 是 Red Hat 7 所需的软件包 为 Linux 安装 ODBC 驱动程序 postgresql94-odbc pgdg.<os version>.x86_64 或更高版 本 其中 <OS version> 是代理计算机的操作系统 例如 postgresql94-odbc pgdg.rhel7.x86_64 是 Red Hat 7 所需的客户端 确保 /etc/odbcinst.ini 文件包含 PostgreSQL 条目 如以下示例中所示 [PostgreSQL] Description = PostgreSQL ODBC driver Driver = /usr/pgsql-9.4/lib/psqlodbc.so Setup = /usr/pgsql-9.4/lib/psqlodbcw.so Debug = 0 CommLog = 1 UsageCount = 2 步骤 9 配置 AWS SCT 以访问 Amazon S3 存储桶 有关配置 Amazon S3 存储桶的信息 请参阅 Amazon S3 文档中的使用 Amazon S3 存储桶 Note 要在迁移中使用配置的 Amazon S3 存储桶 您必须在与 S3 存储桶相同的 AWS 区域中创建一个 AWS DMS 复制实例 如果尚未创建该实例 请使用 AWS DMS 管理控制台执行该操作 如步骤 2 创建复制实例 (p. 15)中所述 235

242 步骤 10 创建本地和 DMS 任务 步骤 10 创建本地和 DMS 任务 接下来 您创建一个端到端迁移任务 该任务包含两个子任务 一个子任务将数据从源数据库迁移到 AWS Snowball 设备 另一个子任务提取该设备加载到 Amazon S3 存储桶的数据 并将其迁移到目标数据库 创建端到端迁移任务 1. 启动 AWS SCT 选择 View 然后选择 Database Migration View (Local & DMS) 2. 在显示源数据库架构的左侧面板中 选择一个要迁移的架构对象 打开该对象的上下文 (右键单击) 菜 单 然后选择 Create Local & DMS Task 3. 添加您的任务信息 对于该参数 请执行该操作 Task Name 为任务键入名称 代理 选择 DMS Agent Replication Instance 选择要使用的 AWS DMS 复制实例 迁移类型 选择所需的迁移类型 选择 Migrate existing data 以迁移所选的架构内容 该过程 在 AWS DMS 中称为完全加载 选择 Migrate existing data and replicate ongoing changes 以迁移所选的架构内容 并捕获对数据库的所有持续更改 该过程在 AWS DMS 中称为完全加载和 CDC Target table preparation mode 选择要使用的准备模式 236

243 步骤 11 运行和监控本地和 DMS 任务 对于该参数 请执行该操作 Truncate 截断表 而不会影响表元数据 Drop tables on target 删除表并在其位置创建新表 Do nothing 不更改目标表的数据和元数据 4. IAM 角色 选择有权访问 Amazon S3 存储桶和目标数据库的预定义 IAM 角色 有关访问 Amazon S3 存储桶所需的权限的 更多信息 请参阅将 S3 作为 AWS DMS 源时的先决条 件 (p. 122) 日志系统 选择 Enable 以让 AWS CloudWatch 创建迁移日志 该服务 将向您收取费用 有关 AWS CloudWatch 的更多信息 请 参阅 Amazon CloudWatch 的工作方式 描述 键入任务的说明 Use Snowball 选中该复选框以使用 Snowball Job Name 选择您创建的 AWS Snowball 任务名称 Snowball IP 键入 AWS Snowball 设备的 IP 地址 端口 键入 AWS Snowball 设备的端口值 Local AWS S3 Access key 键入用于迁移的账户的 AWS 访问密钥 Local AWS S3 Secret key 键入用于迁移的账户的 AWS 私有密钥 选择 Create 创建任务 步骤 11 在 SCT 中运行和监控本地和 DMS 任务 在成功建立到终端节点的所有连接后 您可以启动本地和 DMS 任务 这意味着成功建立了本地任务的所有 连接 (包括从 DMS 代理到源数据库 暂存 Amazon S3 存储桶和 AWS Snowball 设备的连接) 以及 DMS 任 务的连接 (包括从暂存 Amazon S3 存储桶到 AWS 上的目标数据库的连接) 您可以选择 Show Log 以监控 DMS 代理日志 日志详细信息包含代理服务器 (Agent Log) 和本地运行任务 (Task Log) 日志 由于终端节点连接是由服务器建立的 (因为本地任务未运行并且没有任务日志) 因此 将 在 Agent Log 选项卡下面列出连接问题 步骤 12 管理 AWS Snowball 设备 在完全加载 Snowball 设备后 AWS SCT 将更新任务状态以显示已完成 50% 请记住 任务的另一部分涉 及 AWS DMS 将数据从 Amazon S3 加载到目标数据存储 237

244 Snowball 到 Amazon S3 为此 请断开 AWS Snowball 设备的连接并将其运回 AWS 有关将 AWS Snowball 设备送回 AWS 的更多 信息 请参阅 AWS Snowball 文档的 AWS Snowball Edge 入门 您的第一个任务中概述的步骤 您可以使 用 AWS Snowball 控制台或 AWS SCT (显示 DMS 任务详细信息) 检查设备状态 并确定 AWS DMS 何时开 始将数据加载到 Amazon S3 存储桶中 在 AWS Snowball 设备到达 AWS 并将数据卸载到 S3 存储桶后 您可以看到远程 (DMS) 任务开始运行 如 果为任务选择的迁移类型是 Migrate existing data 在将数据从 Amazon S3 传输到目标数据存储后 DMS 任务状态将显示为 100% 完成 如果设置的任务模式包括持续复制 在完全加载完成后 任务状态将显示任 务继续运行 同时 AWS DMS 应用持续更改 在使用 AWS Snowball 和 AWS Database Migration Service (AWS DMS) 时的限制 在使用 AWS Snowball 时 应注意一些限制 LOB 模式将 LOB 文件大小限制为 32K 在数据迁移期间 如果从本地数据库加载到 AWS Snowball Edge 设备或 AWS DMS 将数据从 Amazon S3 加载到目标数据库时出现错误 并且该错误是可恢复的 则会重新启动任务 如果 AWS DMS 无法从错误 中恢复 将停止迁移 每个 AWS SCT 任务在 AWS DMS 上创建两个终端节点连接 如果创建多个任务 您可能会达到可创建的 终端节点数资源限制 238

PowerPoint Presentation

PowerPoint Presentation 迁移数据上云的利器 AWS Database Migration Service 吕琳,AWS 解决方案架构师 日程 数据库迁移上云前的思考 AWS Schema Conversion Tool (SCT) 与 AWS Database Migration Service 服务介绍 使用 AWS Database Migration Service 迁移数据库主要流程 数据库迁移上云前的思考 我们在迁移数据库上云前是否充分了解

More information

A API Application Programming Interface 见 应 用 程 序 编 程 接 口 ARP Address Resolution Protocol 地 址 解 析 协 议 为 IP 地 址 到 对 应 的 硬 件 地 址 之 间 提 供 动 态 映 射 阿 里 云 内

A API Application Programming Interface 见 应 用 程 序 编 程 接 口 ARP Address Resolution Protocol 地 址 解 析 协 议 为 IP 地 址 到 对 应 的 硬 件 地 址 之 间 提 供 动 态 映 射 阿 里 云 内 A API Application Programming Interface 见 应 用 程 序 编 程 接 口 ARP Address Resolution Protocol 地 址 解 析 协 议 为 IP 地 址 到 对 应 的 硬 件 地 址 之 间 提 供 动 态 映 射 阿 里 云 内 容 分 发 网 络 Alibaba Cloud Content Delivery Network 一

More information

Microsoft Word - 03.doc

Microsoft Word - 03.doc 目的 第 3 章 : 配置网络环境 本章帮助您配置和管理网络环境, 以便用户能够访问数据库 主题 本章讨论了以下内容 : 使用 Enterprise Manager Net Services Administration 页面 利用 Enterprise Manager 启动监听器 利用监听器控制实用工具启动监听器 配置本地命名, 以便与其它数据库连接 使用 Enterprise Manager Net

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

AWS Database Migration Service - 分步迁移指南

AWS Database Migration Service - 分步迁移指南 AWS Database Migration Service 分步迁移指南 AWS Database Migration Service: 分步迁移指南 Table of Contents AWS Database Migration Service 分步演练... 1 将数据库迁移到 Amazon Web Services (AWS)... 2 AWS 迁移工具... 2 本指南中的演练... 2

More information

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes 包管理理 工具 Helm 蔺礼强 Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes

More information

MASQUERADE # iptables -t nat -A POSTROUTING -s / o eth0 -j # sysctl net.ipv4.ip_forward=1 # iptables -P FORWARD DROP #

MASQUERADE # iptables -t nat -A POSTROUTING -s / o eth0 -j # sysctl net.ipv4.ip_forward=1 # iptables -P FORWARD DROP # iptables 默认安全规则脚本 一 #nat 路由器 ( 一 ) 允许路由 # iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT ( 二 ) DNAT 与端口转发 1 启用 DNAT 转发 # iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 dprot 422 -j DNAT to-destination

More information

水晶分析师

水晶分析师 大数据时代的挑战 产品定位 体系架构 功能特点 大数据处理平台 行业大数据应用 IT 基础设施 数据源 Hadoop Yarn 终端 统一管理和监控中心(Deploy,Configure,monitor,Manage) Master Servers TRS CRYSTAL MPP Flat Files Applications&DBs ETL&DI Products 技术指标 1 TRS

More information

Basic System Administration

Basic System Administration 基 本 系 统 管 理 ESX Server 3.5 ESX Server 3i 版 本 3.5 Virtual Center 2.5 基 本 管 理 指 南 基 本 管 理 指 南 修 订 时 间 :20080410 项 目 :VI-CHS-Q208-490 我 们 的 网 站 提 供 最 新 的 技 术 文 档, 网 址 为 : http://www.vmware.com/cn/support/

More information

1 SQL Server 2005 SQL Server Microsoft Windows Server 2003NTFS NTFS SQL Server 2000 Randy Dyess DBA SQL Server SQL Server DBA SQL Server SQL Se

1 SQL Server 2005 SQL Server Microsoft Windows Server 2003NTFS NTFS SQL Server 2000 Randy Dyess DBA SQL Server SQL Server DBA SQL Server SQL Se 1 SQL Server 2005 DBA Microsoft SQL Server SQL ServerSQL Server SQL Server SQL Server SQL Server SQL Server 2005 SQL Server 2005 SQL Server 2005 o o o SQL Server 2005 1 SQL Server 2005... 3 2 SQL Server

More information

目錄

目錄 資 訊 素 養 線 上 教 材 單 元 五 資 料 庫 概 論 及 Access 5.1 資 料 庫 概 論 5.1.1 為 什 麼 需 要 資 料 庫? 日 常 生 活 裡 我 們 常 常 需 要 記 錄 一 些 事 物, 以 便 有 朝 一 日 所 記 錄 的 事 物 能 夠 派 得 上 用 場 我 們 能 藉 由 記 錄 每 天 的 生 活 開 銷, 就 可 以 在 每 個 月 的 月 底 知

More information

PowerPoint Presentation

PowerPoint Presentation AWS 云上数据库迁移 Henry Huang,AWS 专业服务咨询顾问 2016 年 4 月 18 日 分享摘要 : AWS : 分享云上数据库迁移的最佳实践和注意事项, 以及 AWS 数据库迁移工具 (DMT) 的使用方法 听众 : 了解 AWS 关系型数据库服务 (RDS), 学习如何在 AWS RDS 上执行数据库迁移以及数据库迁移工具 (DMT) 的使用示例 目标 : 了解数据库迁移上云,

More information

软件概述

软件概述 Cobra DocGuard BEIJING E-SAFENET SCIENCE & TECHNOLOGY CO.,LTD. 2003 3 20 35 1002 010-82332490 http://www.esafenet.com Cobra DocGuard White Book 1 1....4 1.1...4 1.2 CDG...4 1.3 CDG...4 1.4 CDG...5 1.5

More information

ChinaBI企业会员服务- BI企业

ChinaBI企业会员服务- BI企业 商业智能 (BI) 开源工具 Pentaho BisDemo 介绍及操作说明 联系人 : 杜号权苏州百咨信息技术有限公司电话 : 0512-62861389 手机 :18616571230 QQ:37971343 E-mail:du.haoquan@bizintelsolutions.com 权限控制管理 : 权限控制管理包括 : 浏览权限和数据权限 ( 权限部分两个角色 :ceo,usa; 两个用户

More information

sql> startup mount 改变数据库的归档模式 sql> alter database archivelog # 打开数据库 sql> alter database open 禁止归档模式 sql> shutdown immediate sql>startup mount sql> al

sql> startup mount 改变数据库的归档模式 sql> alter database archivelog # 打开数据库 sql> alter database open 禁止归档模式 sql> shutdown immediate sql>startup mount sql> al RMAN sql> sqlplus / as sysdba 查看数据库版本 sql> select * from v$version; 查看数据库名称 sql> show parameter db_name; 一 使用 RMAN 时, 需要将数据库设置成归档模式 sql> conn / as sysdba; sql> show user 查看数据库是否为归档模式 sql> archive log list

More information

Azure_s

Azure_s Azure ? Azure Azure Windows Server Database Server Azure Azure Azure Azure Azure Azure Azure Azure OpenSource Azure IaaS Azure VM Windows Server Linux PaaS Azure ASP.NET PHP Node.js Python MS SQL MySQL

More information

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile.. WebSphere Studio Application Developer IBM Portal Toolkit... 1/21 WebSphere Studio Application Developer IBM Portal Toolkit Portlet Doug Phillips (dougep@us.ibm.com),, IBM Developer Technical Support Center

More information

目 录(目录名)

目  录(目录名) 目录 目录...1-1 1.1 域名解析配置命令... 1-1 1.1.1 display dns domain... 1-1 1.1.2 display dns dynamic-host... 1-1 1.1.3 display dns server... 1-2 1.1.4 display ip host... 1-3 1.1.5 dns domain... 1-4 1.1.6 dns resolve...

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

RunPC2_.doc

RunPC2_.doc PowerBuilder 8 (5) PowerBuilder Client/Server Jaguar Server Jaguar Server Connection Cache Thin Client Internet Connection Pooling EAServer Connection Cache Connection Cache Connection Cache Connection

More information

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM CHAPTER 6 SQL SQL SQL 6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM 3. 1986 10 ANSI SQL ANSI X3. 135-1986

More information

Chapter 2

Chapter 2 2 (Setup) ETAP PowerStation ETAP ETAP PowerStation PowerStation PowerPlot ODBC SQL Server Oracle SQL Server Oracle Windows SQL Server Oracle PowerStation PowerStation PowerStation PowerStation ETAP PowerStation

More information

0 配置 Host MIB 设备 V ( 简体版 ) 0 Update: 2016/1/30

0 配置 Host MIB 设备 V ( 简体版 ) 0 Update: 2016/1/30 0 配置 Host MIB 设备 V 1.1.2 ( 简体版 ) 0 Update: 2016/1/30 前言 N-Reporter 支持 Host Resource MIB 监控主机 (Host) 状态, 本文件描述 N-Reporter 用户如何配置 Host MIB 设备 文件章节如下 : 1. 配置 Windows Server 2003... 2 1-1.Windows Server 2003

More information

CA Nimsoft Monitor Snap 快速入门指南

CA Nimsoft Monitor Snap 快速入门指南 CA Nimsoft Monitor Snap 快 速 入 门 指 南 7.0 法 律 声 明 版 权 所 有 2013,CA 保 留 所 有 权 利 保 证 本 文 档 中 包 含 的 资 料 按 照 现 状 提 供, 将 来 版 本 中 如 有 更 改, 恕 不 另 行 通 知 另 外, 在 适 用 法 律 允 许 的 最 大 范 围 内,Nimsoft LLC 不 承 担 关 于 本 手 册

More information

IP505SM_manual_cn.doc

IP505SM_manual_cn.doc IP505SM 1 Introduction 1...4...4...4...5 LAN...5...5...6...6...7 LED...7...7 2...9...9...9 3...11...11...12...12...12...14...18 LAN...19 DHCP...20...21 4 PC...22...22 Windows...22 TCP/IP -...22 TCP/IP

More information

第6章  数据库技术基础

第6章  数据库技术基础 第 六 章 数 据 库 技 术 基 础 本 章 要 点 数 据 库 系 统 概 述 关 系 数 据 库 数 据 库 设 计 数 据 库 系 统 概 述 数 据 管 理 技 术 的 发 展 数 据 管 理 技 术 的 发 展 分 三 个 阶 段 : 人 工 管 理 阶 段 文 件 系 统 管 理 阶 段 数 据 库 系 统 管 理 阶 段 数 据 库 系 统 概 述 数 据 库 数 据 库 管 理 系

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

手册 doc

手册 doc 1. 2. 3. 3.1 3.2 3.3 SD 3.4 3.5 SD 3.6 3.7 4. 4.1 4.2 4.3 SD 4.4 5. 5.1 5.2 5.3 SD 6. 1. 1~3 ( ) 320x240~704x288 66 (2G SD 320x2401FPS ) 32M~2G SD SD SD SD 24V DC 3W( ) -10~70 10~90% 154x44x144mm 2. DVR106

More information

RUN_PC連載_12_.doc

RUN_PC連載_12_.doc PowerBuilder 8 (12) PowerBuilder 8.0 PowerBuilder PowerBuilder 8 PowerBuilder 8 / IDE PowerBuilder PowerBuilder 8.0 PowerBuilder PowerBuilder PowerBuilder PowerBuilder 8.0 PowerBuilder 6 PowerBuilder 7

More information

静态分析 投放文件 行为分析 互斥量 (Mutexes) 执行的命令 创建的服务 启动的服务 进程 cmd.exe PID: 2520, 上一级进程 PID: 2556 cmd.exe PID: 2604, 上一级进程 PID: 2520 访问的文件 C:\Users\test\AppData\Lo

静态分析 投放文件 行为分析 互斥量 (Mutexes) 执行的命令 创建的服务 启动的服务 进程 cmd.exe PID: 2520, 上一级进程 PID: 2556 cmd.exe PID: 2604, 上一级进程 PID: 2520 访问的文件 C:\Users\test\AppData\Lo 魔盾安全分析报告 分析类型 开始时间 结束时间 持续时间 分析引擎版本 FILE 2016-11-25 00:20:03 2016-11-25 00:22:18 135 秒 1.4-Maldun 虚拟机机器名 标签 虚拟机管理 开机时间 关机时间 win7-sp1-x64 win7-sp1-x64 KVM 2016-11-25 00:20:03 2016-11-25 00:22:18 魔盾分数 0.0

More information

ebook140-8

ebook140-8 8 Microsoft VPN Windows NT 4 V P N Windows 98 Client 7 Vintage Air V P N 7 Wi n d o w s NT V P N 7 VPN ( ) 7 Novell NetWare VPN 8.1 PPTP NT4 VPN Q 154091 M i c r o s o f t Windows NT RAS [ ] Windows NT4

More information

目 录 简 介.3 ` 体 系 结 构...4 数 据 层...5 数 据 连 接 器...6 Tableau Server 组 件...7 网 关 / 负 载 平 衡 器...8 客 户 端 :Web 浏 览 器 和 移 动 应 用 程 序...8 客 户 端 :Tableau Desktop..

目 录 简 介.3 ` 体 系 结 构...4 数 据 层...5 数 据 连 接 器...6 Tableau Server 组 件...7 网 关 / 负 载 平 衡 器...8 客 户 端 :Web 浏 览 器 和 移 动 应 用 程 序...8 客 户 端 :Tableau Desktop.. Neelesh Kamkolkar, 产 品 经 理 Ellie Fields, 产 品 营 销 副 总 裁 Marc Rueter, 战 略 解 决 方 案 高 级 总 监 适 用 于 企 业 的 Tableau: IT 概 述 目 录 简 介.3 ` 体 系 结 构...4 数 据 层...5 数 据 连 接 器...6 Tableau Server 组 件...7 网 关 / 负 载 平 衡

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

Partition Key: 字 符 串 类 型, 表 示 当 前 Entity 的 分 区 信 息 这 个 Property 对 于 Table Service 自 动 纵 向 和 横 向 扩 展 至 关 重 要 Row Key: 字 符 串 类 型, 在 给 定 Partition Key 的

Partition Key: 字 符 串 类 型, 表 示 当 前 Entity 的 分 区 信 息 这 个 Property 对 于 Table Service 自 动 纵 向 和 横 向 扩 展 至 关 重 要 Row Key: 字 符 串 类 型, 在 给 定 Partition Key 的 4.2 使 用 Table Service Table Service 相 对 来 说 是 三 个 Storage Service 中 最 好 理 解 和 最 易 于 接 受 的, 它 主 要 用 来 存 储 结 构 化 数 据 但 是 Table Service 却 并 不 是 一 个 关 系 型 数 据 库 Table Service 由 两 个 部 分 组 成 :Table 和 Entity

More information

长 安 大 学 硕 士 学 位 论 文 基 于 数 据 仓 库 和 数 据 挖 掘 的 行 为 分 析 研 究 姓 名 : 杨 雅 薇 申 请 学 位 级 别 : 硕 士 专 业 : 计 算 机 软 件 与 理 论 指 导 教 师 : 张 卫 钢 20100530 长安大学硕士学位论文 3 1 3系统架构设计 行为分析数据仓库的应用模型由四部分组成 如图3 3所示

More information

untitled

untitled SAP SAP Business One ... 4 SAP Business One... 5... 5 SAP Business One... 7 SAP Business One... 8... 8... 8... 9... 10... 11 mysap Business Suite... 12... 13... 14 Copyright 2004 SAP AG. All rights reserved.

More information

IQ

IQ TRITON APX IQ TRITON APX TRITON APX TRITON TRITON APX TRITON AP-WEB Websense ACE Web DLP TRITON APX IT TRITON APX Web TRITON APX DLP TRITON APX DLP Web (DLP) TRITON AP-WEB TRITON AP-EMAIL DLP (OCR) TRITON

More information

untitled

untitled http://idc.hust.edu.cn/~rxli/ 1.1 1.2 1.3 1.4 1.5 1.6 2 1.1 1.1.1 1.1.2 1.1.3 3 1.1.1 Data (0005794, 601,, 1, 1948.03.26, 01) (,,,,,) 4 1.1.1 Database DB 5 1.1.1 (DBMS) DDL ( Create, Drop, Alter) DML(

More information

DocHdl2OnPPMtmpTarget

DocHdl2OnPPMtmpTarget 雲端運算及應用之淺談 ( 上 ) 曾婉菁 印刷科技 Google Google Grid computing Utility computing 1. 2. IBM 3. Microsoft 4. Google 5. NIST 6. Gartner IT as a service 1 1. Private Cloud 2. Public Cloud 3. Hybrid Cloud 4. Community

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

ebook140-9

ebook140-9 9 VPN VPN Novell BorderManager Windows NT PPTP V P N L A V P N V N P I n t e r n e t V P N 9.1 V P N Windows 98 Windows PPTP VPN Novell BorderManager T M I P s e c Wi n d o w s I n t e r n e t I S P I

More information

Microsoft Word - template.doc

Microsoft Word - template.doc HGC efax Service User Guide I. Getting Started Page 1 II. Fax Forward Page 2 4 III. Web Viewing Page 5 7 IV. General Management Page 8 12 V. Help Desk Page 13 VI. Logout Page 13 Page 0 I. Getting Started

More information

Oracle 4

Oracle 4 Oracle 4 01 04 Oracle 07 Oracle Oracle Instance Oracle Instance Oracle Instance Oracle Database Oracle Database Instance Parameter File Pfile Instance Instance Instance Instance Oracle Instance System

More information

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南 Symantec Sygate Enterprise Protection 防 护 代 理 安 装 使 用 指 南 5.1 版 版 权 信 息 Copyright 2005 Symantec Corporation. 2005 年 Symantec Corporation 版 权 所 有 All rights reserved. 保 留 所 有 权 利 Symantec Symantec 徽 标 Sygate

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 AWS 数据库服务综述 Ryan Huang 黄皓 haohuang@amazon.com AWS 技术销售部 2014.12 2014 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the

More information

1-1 database columnrow record field 不 DBMS Access Paradox SQL Server Linux MySQL Oracle IBM Informix IBM DB2 Sybase 1-2

1-1 database columnrow record field 不 DBMS Access Paradox SQL Server Linux MySQL Oracle IBM Informix IBM DB2 Sybase 1-2 CHAPTER 1 Understanding Core Database Concepts 1-1 database columnrow record field 不 DBMS Access Paradox SQL Server Linux MySQL Oracle IBM Informix IBM DB2 Sybase 1-2 1 Understanding Core Database Concepts

More information

基于UML建模的管理管理信息系统项目案例导航——VB篇

基于UML建模的管理管理信息系统项目案例导航——VB篇 PowerBuilder 8.0 PowerBuilder 8.0 12 PowerBuilder 8.0 PowerScript PowerBuilder CIP PowerBuilder 8.0 /. 2004 21 ISBN 7-03-014600-X.P.. -,PowerBuilder 8.0 - -.TP311.56 CIP 2004 117494 / / 16 100717 http://www.sciencep.com

More information

一.NETGEAR VPN防火墙产品介绍

一.NETGEAR VPN防火墙产品介绍 NETGEAR VPN NETGEAR 6 http://www.netgear.com.cn - 1 - NETGEAR VPN... 4 1.1 VPN...4 1.2 Dynamic Domain Name Service...4 1.3 Netgear VPN...4 Netgear VPN... 6 2.1 FVS318 to FVS318 IKE Main...7 2.1.1 A VPN

More information

ebook 96-16

ebook 96-16 16 13 / ( ) 16-1 SQL*Net/Net8 SQL*Net/Net8 SQL*Net/Net8 16-1 / S Q L SQL*Net V2 N e t 8 S Q L * N e t N e t ( ) 16.1 S Q L O r a c l e S Q L 16 401 ) ( H R _ L I N K create database link p u b l i c (

More information

FAQ -PowerDesigner9.5.DOC

FAQ -PowerDesigner9.5.DOC PowerDesigner 9.5 FAQ 1. PowerDesigner PowerDesigner PowerDesigner (CASE Tool,Computer Aided Software Engineering) PowerDesigner 1989 9.5 2. PowerDesigner PowerDesigner Internet ( Java) PowerDesigner 7.0

More information

PowerPoint Presentation

PowerPoint Presentation 巧妙利用 AWS 进行物联网解决方案开发 牛付强, AWS 解决方案架构师 议程 AWS IoT 组成单元 利用 AWS IoT Device SDK 进行 AWS IoT 的开发 演示 AWS IoT 的作用 如果你知道每一个事物的状态 并能在数据上面推理 你会解决什么问题 AWS IoT 架构 ( 设备到云端 ) IoT 设备类型 IoT 设备类型 Amazon FreeRTOS Amazon

More information

ebook 185-6

ebook 185-6 6 Red Hat Linux DB2 Universal Database 6.1 D B 2 Red Hat D B 2 Control Center D B 2 D B 2 D B 2 6.1 DB2 Universal Database [DB2]6.1 D B 2 O LT P O L A P D B 2 I B M P C We e k D B 2 D B 2 L i n u x Windows

More information

oracle-Ess-05.pdf

oracle-Ess-05.pdf 5 135 1 3 6 O r a c l e 1 3 7 1 3 8 O r a c l e 1 3 9 C O N N E C T R E S O U R C E D B A S Y S O P E R S Y S D B A E X P _ F U L L _ D A T A B A S E 1 4 0 I M P _ F U L L _ D A T A B A S E D E L E T E

More information

untitled

untitled Chapter 01 1.0... 1-2 1.1... 1-2 1.1.1...1-2 1.1.2...1-4 1.1.2.1... 1-6 1.1.2.2... 1-7 1.1.2.3... 1-7 1.1.2.4... 1-7 1.1.2.5... 1-8 1.1.2.6... 1-8 1.1.3??...1-8 1.1.4...1-9 1.2...1-12 1.3...1-14 1.4...1-17

More information

背 景 概 述 企 业 需 要 一 种 灵 活 的 平 台 来 快 速 构 建 测 试 和 扩 展 新 的 应 用 程 序 服 务 并 对 市 场 中 发 生 的 数 字 化 变 革 作 出 反 应 数 字 化 变 革 正 在 加 快 步 伐, 因 为 流 程 和 信 息 的 日 益 融 合 带 来

背 景 概 述 企 业 需 要 一 种 灵 活 的 平 台 来 快 速 构 建 测 试 和 扩 展 新 的 应 用 程 序 服 务 并 对 市 场 中 发 生 的 数 字 化 变 革 作 出 反 应 数 字 化 变 革 正 在 加 快 步 伐, 因 为 流 程 和 信 息 的 日 益 融 合 带 来 白 皮 书 平 台 即 服 务 : 助 力 实 现 数 字 化 转 型 赞 助 商 :Oracle Robert P. Mahowald 2015 年 1 月 Larry Carvalho 执 行 概 要 传 统 业 务 模 式 正 在 受 到 为 客 户 提 供 多 渠 道 数 字 体 验 的 新 业 务 模 式 的 越 来 越 强 烈 的 冲 击 IDC 预 测, 到 2015 年, 在 营 销

More information

PowerPoint Presentation

PowerPoint Presentation AWS 云安全最佳实践 李思源 AWS 解决方案架构师 日程 AWS 安全服务概览 网络安全 数据安全 访问控制 监控与审计 AWS 安全技术资源 AWS 安全服务概览 AWS 安全服务概览 网络 & 安全 合规 & 治理 Amazon GuardDuty Amazon VPC AWS Direct Connect VPN connection Security Groups AWS AWS Trusted

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 070-647 Title : Windows Server 2008,Enterprise Administrator Version : Demo 1 / 13 1. Active directory Windows Server 2008 (WAN) WAN WAN A.

More information

册子0906

册子0906 IBM SelectStack ( PMC v2.0 ) 模块化私有云管理平台 是跨主流虚拟化技术的统一资源云管理平台 01 亮点 : 快速可靠地实现集成化 私有云管理平台 02/03 丰富的功能支持企业数据中心云计算 扩展性强 : 简单易用 : 04/05 功能丰富 : 06/07 为什么选择 IBM SelectStack (PMC v2.0)? 快速实现价值 提高创新能力 降低 IT 成本 降低复杂度和风险

More information

IT Data-intensive application,iscsi Middl

IT Data-intensive application,iscsi Middl 112-861 2-1-1 163 8677 1 24 2 E-mail: shiori@ogl.is.ocha.ac.jp, sane@cc.kogakuin.ac.jp, oguchi@computer.org IT Data-intensive application,iscsi iddleware for Load Distribution among Cloud Computing Resource

More information

PPBSalesDB.doc

PPBSalesDB.doc Pocket PowerBuilder SalesDB Pocket PowerBuilder PDA Pocket PowerBuilder Mobile Solution Pocket PowerBuilder Pocket PowerBuilder C:\Program Files\Sybase\Pocket PowerBuilder 1.0 %PPB% ASA 8.0.2 ASA 9 ASA

More information

温州市政府分散采购

温州市政府分散采购 温 州 市 政 府 分 散 采 购 招 标 文 件 招 标 编 号 :F - G B 2 0 1 6 0 3 1 4 0 0 4 7 招 标 项 目 : 温 州 市 人 民 政 府 办 公 室 政 务 云 平 台 ( 重 ) 招 标 方 式 : 公 开 招 标 招 标 人 : 温 州 市 人 民 政 府 办 公 室 招 标 代 理 : 二 〇 一 六 年 三 月 目 录 投 标 保 证 金 办 理

More information

支持的趋势科技服务器深度安全防护系统功能(按平台划分)

支持的趋势科技服务器深度安全防护系统功能(按平台划分) 趋势科技服务器深度安全防护系统 9.6 平台支持的功能 趋势科技 ( 中国 ) 有限公司保留对本文档以及此处所述产品进行更改而不通知的权利 在安装及使用本软件之前, 请阅读自述文件 发布说明和最新版本的适用用户文档, 这些文档可以通过趋势科技的以下 Web 站点获得 :http://www.trendmicro.com/download/zh-cn/ Trend Micro Trend Micro

More information

Chapter #

Chapter # 第三章 TCP/IP 协议栈 本章目标 通过本章的学习, 您应该掌握以下内容 : 掌握 TCP/IP 分层模型 掌握 IP 协议原理 理解 OSI 和 TCP/IP 模型的区别和联系 TCP/IP 介绍 主机 主机 Internet TCP/IP 早期的协议族 全球范围 TCP/IP 协议栈 7 6 5 4 3 应用层表示层会话层传输层网络层 应用层 主机到主机层 Internet 层 2 1 数据链路层

More information

Oracle Database 10g: SQL (OCE) 的第一堂課

Oracle Database 10g: SQL (OCE) 的第一堂課 商 用 資 料 庫 的 第 一 堂 課 中 華 大 學 資 訊 管 理 系 助 理 教 授 李 之 中 http://www.chu.edu.tw/~leecc 甲 骨 文 俱 樂 部 @Taiwan Facebook 社 團 https://www.facebook.com/groups/365923576787041/ 2014/09/15 問 題 一 大 三 了, 你 為 什 麼 還 在 這

More information

epub 61-2

epub 61-2 2 Web Dreamweaver UltraDev Dreamweaver 3 We b We b We Dreamweaver UltraDev We b Dreamweaver UltraDev We b We b 2.1 Web We b We b D r e a m w e a v e r J a v a S c r i p t We b We b 2.1.1 Web We b C C +

More information

Microsoft Word - 20150105 2014資訊專業證照研析報告

Microsoft Word - 20150105 2014資訊專業證照研析報告 資 訊 專 業 證 照 研 析 報 告 2014 年 度 報 告 專 業 證 照 推 廣 主 持 人 台 灣 科 技 大 學 李 育 杰 教 授 教 育 部 資 訊 軟 體 人 才 培 育 中 程 計 畫 2014 年 12 月 摘 要 資 訊 產 業 不 斷 的 進 步 發 達, 社 會 型 態 趨 勢 也 逐 漸 走 上 高 學 歷 時 代, 但 是 學 歷 與 能 力 已 不 能 劃 上 等

More information

ebook46-23

ebook46-23 23 Access 2000 S Q L A c c e s s S Q L S Q L S Q L S E L E C T S Q L S Q L A c c e s s S Q L S Q L I N A N S I Jet SQL S Q L S Q L 23.1 Access 2000 SQL S Q L A c c e s s Jet SQL S Q L U N I O N V B A S

More information

ext-web-auth-wlc.pdf

ext-web-auth-wlc.pdf 使 用 无 线 局 域 网 控 制 器 的 外 部 Web 身 份 验 证 配 置 示 例 目 录 简 介 先 决 条 件 要 求 使 用 的 组 件 规 则 背 景 信 息 外 部 Web 身 份 验 证 过 程 网 络 设 置 配 置 为 来 宾 用 户 创 建 动 态 接 口 创 建 预 先 身 份 验 证 ACL 在 WLC 上 为 来 宾 用 户 创 建 本 地 数 据 库 配 置 外 部

More information

PL600 IPPBX 用户手册_V2.0_.doc

PL600 IPPBX 用户手册_V2.0_.doc VoIP 网 络 交 换 机 PL-600 IPPBX 用 户 手 册 深 圳 普 联 讯 电 子 科 技 有 限 公 司 版 权 所 有 2009 深 圳 市 普 联 讯 电 子 科 技 有 限 公 司 第 1 共 1 目 录 1. 前 言...3 2. 安 装 前 准 备...3 3. 硬 件 安 装...4 4. 登 陆 及 一 般 操 作 介 绍...4 5. 基 本 配 置...6 6.

More information

次世代のITインフラ“Compute”を先取り!HPが統合型アプライアンス「HP ConvergedSystem」を推進する理由

次世代のITインフラ“Compute”を先取り!HPが統合型アプライアンス「HP ConvergedSystem」を推進する理由 ITCompute HP HP ConvergedSystem 2015 2 18 HP Devices (1) 300 40 GB 40 Zettabytes 1000 (3) Mobile Apps 2020 (2) DATA Mobile Apps Cloud Security 2 Mobility New Style of IT Big Data (1) IDC Directions 2013:

More information

User Group SMTP

User Group SMTP SOP v1.00 2003 02 28 TrendMicro Control Manager V2.5 1 1... 3 2... 4 2.1... 4 2.2... 14 3... 24 3.1... 24 3.2... 29 3.3... 34 3.3.1... 34 3.3.2 User Group... 37 3.3.3... 40 3.4... 41 3.4.1... 41 3.4.2

More information

幻灯片 1

幻灯片 1 沈 阳 工 业 大 学 2014 年 6 月 第 7 章 数 据 库 技 术 基 础 主 要 内 容 : 7.1 数 据 库 概 述 数 据 库 基 本 概 念 数 据 模 型 逻 辑 数 据 模 型 数 据 库 系 统 的 产 生 和 发 展 常 用 的 数 据 库 管 理 系 统 7.2 Access 2010 数 据 库 创 建 及 维 护 创 建 Access 2010 数 据 库 创 建

More information

声 明 本 公 司 及 全 体 董 事 监 事 高 级 管 理 人 员 承 诺 不 存 在 虚 假 记 载 误 导 性 陈 述 或 重 大 遗 漏, 并 对 其 真 实 性 准 确 性 完 整 性 承 担 个 别 和 连 带 的 法 律 责 任 本 公 司 负 责 人 和 主 管 会 计 工 作 的

声 明 本 公 司 及 全 体 董 事 监 事 高 级 管 理 人 员 承 诺 不 存 在 虚 假 记 载 误 导 性 陈 述 或 重 大 遗 漏, 并 对 其 真 实 性 准 确 性 完 整 性 承 担 个 别 和 连 带 的 法 律 责 任 本 公 司 负 责 人 和 主 管 会 计 工 作 的 声 明 本 公 司 及 全 体 董 事 监 事 高 级 管 理 人 员 承 诺 不 存 在 虚 假 记 载 误 导 性 陈 述 或 重 大 遗 漏, 并 对 其 真 实 性 准 确 性 完 整 性 承 担 个 别 和 连 带 的 法 律 责 任 本 公 司 负 责 人 和 主 管 会 计 工 作 的 负 责 人 会 计 机 构 负 责 人 保 证 公 开 转 让 说 明 书 中 财 务 会 计 资

More information

f2.eps

f2.eps 前 言, 目 录 产 品 概 况 1 SICAM PAS SICAM 电 力 自 动 化 系 统 配 置 和 使 用 说 明 配 置 2 操 作 3 实 时 数 据 4 人 机 界 面 5 SINAUT LSA 转 换 器 6 状 态 与 控 制 信 息 A 版 本 号 : 08.03.05 附 录, 索 引 安 全 标 识 由 于 对 设 备 的 特 殊 操 作 往 往 需 要 一 些 特 殊 的

More information

计算机网络实验说明

计算机网络实验说明 计算机网络实验说明 龚旭东 电三楼 420 lzgxd@mailustceducn 2011 年 11 月 1 日 龚旭东 (TA) 计算机网络实验说明 2011 年 11 月 1 日 1 / 20 Outline 1 实验系统介绍 实验环境实验流程 2 实验内容编程实验交互实验观察实验 3 一些控制台命令 4 实验报告说明 龚旭东 (TA) 计算机网络实验说明 2011 年 11 月 1 日 2

More information

1500XA Daniel Danalyzer 1500XA Rosemount Analytical 1500XA P/N 3-9000-757 A 2010 5 ii 1500XA 1500XA iii iv 1500XA : 1-2 1500XA - 1500XA 1-3 1-4 1500XA 1500XA 1-5 1-6 1500XA 1500XA 1-7 1-8 1500XA

More information

Bluemix 从概念到应用CN改

Bluemix 从概念到应用CN改 IBM Bluemix 从概念到应用 平台即服务 1. 2. 3. 3.1. 3.2. 4. 4.1. 4.1.1. 4.1.2. 4.2. 5. 6. 7. 7.1. 7.2. 7.3. 8. 引言 开发者面临的挑战和障碍 Bluemix 在云格局中的定位 3.1. 云计算的各种模式 3.2. 以开发者为中心的 PaaS IBM Bluemix 简介 4.1. IBM Bluemix 架构 4.1.1.

More information

Office Office Office Microsoft Word Office Office Azure Office One Drive 2 app 3 : [5] 3, :, [6]; [5], ; [8], [1], ICTCLAS(Institute of Computing Tech

Office Office Office Microsoft Word Office Office Azure Office One Drive 2 app 3 : [5] 3, :, [6]; [5], ; [8], [1], ICTCLAS(Institute of Computing Tech - OfficeCoder 1 2 3 4 1,2,3,4 xingjiarong@mail.sdu.edu.cn 1 xuchongyang@mail.sdu.edu.cn 2 sun.mc@outlook.com 3 luoyuanhang@mail.sdu.edu.cn 4 Abstract. Microsoft Word 2013 Word 2013 Office Keywords:,, HTML5,

More information

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 -> 目录 1 大概思路... 1 2 创建 WebAPI... 1 3 创建 CrossMainController 并编写... 1 4 Nuget 安装 microsoft.aspnet.webapi.cors... 4 5 跨域设置路由... 4 6 编写 Jquery EasyUI 界面... 5 7 运行效果... 7 8 总结... 7 1 1 大概思路 创建 WebAPI 创建 CrossMainController

More information

VIDEOJET connect 7000 VJC-7000-90 zh- CHS Operation Manual VIDEOJET connect 7000 zh-chs 3 目 录 1 浏 览 器 连 接 7 1.1 系 统 要 求 7 1.2 建 立 连 接 7 1.2.1 摄 像 机 中 的 密 码 保 护 7 1.3 受 保 护 的 网 络 7 2 系 统 概 述 8 2.1 实 况

More information

从数据库平台下拉列表中选择 DB2, 以连接到 Linux UNIX 或 Windows 服务器上的 IBM DB2 数据库, 或 直接连接到 Linux UNIX 或 Windows 服务器上的 DB2 数据库中的地理数据库 连接到 DB2 时, 必须在数据源文本框中提供已编目的 DB2 数据库名

从数据库平台下拉列表中选择 DB2, 以连接到 Linux UNIX 或 Windows 服务器上的 IBM DB2 数据库, 或 直接连接到 Linux UNIX 或 Windows 服务器上的 DB2 数据库中的地理数据库 连接到 DB2 时, 必须在数据源文本框中提供已编目的 DB2 数据库名 ArcGIS for Desktop 中的数据库连接 用户可以从 ArcGIS 连接到数据库以查看 查询和分析其中包含的数据 您访问的某些数据库可包含地理 数据库表 函数和过程, 但这不是必须的 ; 您能够从 ArcGIS for Desktop 连接到支持的数据库并查看数 据 对于除 SQLite 之外所有支持的数据库, 可通过在 ArcGIS for Desktop 的 目录 树的 数据库连接

More information

Microsoft TechEd22 Microsoft Ignite 3 5 Microsoft Ignite 1 3 Microsoft TechDays TechDays Mobile First Cloud First 1 Microsoft

Microsoft TechEd22 Microsoft Ignite 3 5 Microsoft Ignite 1 3 Microsoft TechDays TechDays Mobile First Cloud First 1 Microsoft 2015 年 Microsoft Ignite 資訊 科技盛會 Microsoft Ignite IT ( ) McCormick Place 5/4 5/8 665 1. 2. 3. IT 4. Office Microsoft Microsoft Microsoft Ignite 2015 Monday, May 4, 2015 through Friday, May 8, 2015 McCormick

More information

Converting image (bmp/jpg) file into binary format

Converting image (bmp/jpg) file into binary format RAiO Image Tool 操作说明 Version 1.0 July 26, 2016 RAiO Technology Inc. Copyright RAiO Technology Inc. 2013 RAiO TECHNOLOGY INC. www.raio.com.tw Revise History Version Date Description 0.1 September 01, 2014

More information

EPSON

EPSON NPD 4956-00 TC .... 5....5....5....6 SSL/TLS....7 IP....8....8....9 Web Config...10 Web Config...11 EpsonNet Config...12 EpsonNet Config Windows...13 EpsonNet Config Windows...13 EpsonNet Config - Windows...

More information

IIS Web FTP

IIS Web FTP 1... 1 1... 1 2... 1 3... 2 6 C/S... 2 4... 4 7... 5 8... 5 9... 6 10 Web... 7 11 CORBA... 8 12... 8 2... 9 1... 9 2... 9 3... 10 4 BSP Business System Planning... 11 5... 13 6... 15 7... 15 8... 16 9...

More information

2 response personnel to speed up the rescue operations after various natural or man-made disasters. Keywords: SMS, Database, Disaster

2 response personnel to speed up the rescue operations after various natural or man-made disasters. Keywords: SMS, Database, Disaster Journal of Information, Technology and Society 2004(1) 1 Implementation of Emergency Response SMS System Using DBMS a b c d 1 106 s1428032@ntut.edu.tw, loveru@geoit.ws, aponson@yahoo.com.tw, waltchen@ntut.edu.tw

More information

IC-900W Wireless Pan & Tilt Wireless Pan & Tilt Remote Control / Night Vision FCC ID:RUJ-LR802UWG

IC-900W Wireless Pan & Tilt Wireless Pan & Tilt Remote Control / Night Vision FCC ID:RUJ-LR802UWG IC-900W Wireless Pan & Tilt Wireless Pan & Tilt Remote Control / Night Vision FCC ID:RUJ-LR802UWG --------------------------------------------TABLE OF CONTENTS------------------------------------------

More information

在 ongodb 中实现强事务

在 ongodb 中实现强事务 在 ongodb 中实现强事务 600+ employees 2,000+ customers 13 offices worldwide 15,000,000+ Downloads RANK DBMS MODEL SCORE GROWTH (20 MO) 1. Oracle Rela+onal DBMS 1,442-5% 2. MySQL Rela+onal DBMS 1,294 2% 3.

More information

目录 1 H3C R4900 G2 服务器可选部件与操作系统兼容性列表 控制卡 GPU 卡 网卡 FC HBA 卡 TPM/TCM 模块 NVMe SSD PCle 加速卡 1-31 i

目录 1 H3C R4900 G2 服务器可选部件与操作系统兼容性列表 控制卡 GPU 卡 网卡 FC HBA 卡 TPM/TCM 模块 NVMe SSD PCle 加速卡 1-31 i 目录 1 H3C R4900 G2 服务器可选部件与操作系统兼容性列表 1-1 1.1 控制卡 1-1 1.2 GPU 卡 1-5 1.3 网卡 1-8 1.4 FC HBA 卡 1-21 1.5 TPM/TCM 模块 1-29 1.6 NVMe SSD PCle 加速卡 1-31 i 1 H3C R4900 G2 服务器可选部件与操作系统兼容性列表 本手册为产品通用资料 对于定制化产品, 请用户以产品实际情况为准

More information

FPGAs in Next Generation Wireless Networks WPChinese

FPGAs in Next Generation Wireless Networks WPChinese FPGA 2010 3 Lattice Semiconductor 5555 Northeast Moore Ct. Hillsboro, Oregon 97124 USA Telephone: (503) 268-8000 www.latticesemi.com 1 FPGAs in Next Generation Wireless Networks GSM GSM-EDGE 384kbps CDMA2000

More information

常 见 问 题 FAQ 数 据 迁 移 FAQ (1) 数 据 迁 移 预 检 查 时, 预 检 查 项 schema 不 存 在 失 败 是 什 么 原 因? 如 何 修 复? 目 前 DTS 已 经 支 持 自 动 在 目 标 RDS 实 例 创 建 数 据 库 如 果 在 预 检 查 时 报

常 见 问 题 FAQ 数 据 迁 移 FAQ (1) 数 据 迁 移 预 检 查 时, 预 检 查 项 schema 不 存 在 失 败 是 什 么 原 因? 如 何 修 复? 目 前 DTS 已 经 支 持 自 动 在 目 标 RDS 实 例 创 建 数 据 库 如 果 在 预 检 查 时 报 数 据 传 输 常 见 问 题 FAQ 常 见 问 题 FAQ 数 据 迁 移 FAQ (1) 数 据 迁 移 预 检 查 时, 预 检 查 项 schema 不 存 在 失 败 是 什 么 原 因? 如 何 修 复? 目 前 DTS 已 经 支 持 自 动 在 目 标 RDS 实 例 创 建 数 据 库 如 果 在 预 检 查 时 报 schema 不 存 在, 那 么 可 能 的 原 因 如 下

More information

<4D6963726F736F667420576F7264202D20312D3120B9ABBFAAD7AAC8C3CBB5C3F7CAE9A3A8C9EAB1A8B8E5A3A92E646F63>

<4D6963726F736F667420576F7264202D20312D3120B9ABBFAAD7AAC8C3CBB5C3F7CAE9A3A8C9EAB1A8B8E5A3A92E646F63> 广 西 新 豪 智 云 技 术 股 份 有 限 公 司 ( 申 报 稿 ) 推 荐 主 办 券 商 二 〇 一 六 年 一 月 声 明 本 公 司 及 全 体 董 事 监 事 高 级 管 理 人 员 承 诺 不 存 在 虚 假 记 载 误 导 性 陈 述 或 重 大 遗 漏, 并 对 其 真 实 性 准 确 性 完 整 性 承 担 个 别 和 连 带 的 法 律 责 任 本 公 司 负 责 人 和

More information

目录 目录 目录证书管理证书管理简介证书管理使用说明配置证书查询证书编辑证书删除证书上传证书样例说明 金山云 1/8

目录 目录 目录证书管理证书管理简介证书管理使用说明配置证书查询证书编辑证书删除证书上传证书样例说明 金山云 1/8 目录 2018-12-26 目录 目录证书管理证书管理简介证书管理使用说明配置证书查询证书编辑证书删除证书上传证书样例说明 1 2 2 2 2 5 5 6 6 金山云 1/8 证书管理 本文档主要介绍 CDN 控制台高级工具中的证书管理 : 证书管理简介证书管理使用说明上传证书样例说明 证书管理简介 您可以对已经接入 CDN 的域名进行 HTTPS 证书配置,CDN 支持上传您的自定义证书进行部署,

More information

幻灯片 1

幻灯片 1 第 一 章 SQL Server 数 据 库 基 础 理 论 部 分 技 能 展 示 了 解 数 据 涉 及 的 主 要 概 念 了 解 SQL Server2005 的 主 要 版 本 掌 握 安 装 SQL Server2005 的 方 法 掌 握 SQL Server2005 组 件 管 理 工 具 理 解 SQL Server2005 的 数 据 存 储 结 构 使 用 SSMS 创 建 与

More information

untitled

untitled MySQL DBMS under Win32 Editor: Jung Yi Lin, Database Lab, CS, NCTU, 2005/09/16 MySQL 料 理 MySQL 兩 Commercial License 利 GPL MySQL http://www.mysql.com Developer Zone http://www.mysql.com Download 連 連 MySQL

More information

Marketing_WhitePaper.PDF

Marketing_WhitePaper.PDF Turbolinux PowerMonitor Enterprise 1. 1994 WWW WEB 1 Web 1: Web Web web web web web web Web HTML 2 DNS Web DB LDAP Shipping Agencies 2 2 CGI Servlets JSP ASP XSL JDBC Web 2. HP OpenView CA Unicenter Tivoli

More information

2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD UNIX X/Open Company, Ltd. / SunSun MicrosystemsSun

2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD UNIX X/Open Company, Ltd. / SunSun MicrosystemsSun SAP livecache Sun Cluster Solaris OS SPARC Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. : 817 7374 10 2004 4 A 2004 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA

More information

系 统 与 方 案 2 传 输 中 的 数 据 安 全 解 决 方 案 云 应 用 常 通 过 Internet 传 输 数 据, 当 在 云 环 境 下 运 行 应 用 时, 保 护 传 输 中 的 数 据 非 常 重 要, Internet 上 传 输 数 据 存 在 的 威 胁 关 注 点 如

系 统 与 方 案 2 传 输 中 的 数 据 安 全 解 决 方 案 云 应 用 常 通 过 Internet 传 输 数 据, 当 在 云 环 境 下 运 行 应 用 时, 保 护 传 输 中 的 数 据 非 常 重 要, Internet 上 传 输 数 据 存 在 的 威 胁 关 注 点 如 云 环 境 下 信 息 系 统 数 据 安 全 解 决 方 案 1 蔡 向 峰 1 王 带 弟 2 郑 重 1 赵 超 1 广 东 省 电 信 规 划 设 计 院 有 限 公 司 沈 阳 分 院 沈 阳 110000 2 中 国 电 信 集 团 公 司 吉 林 省 分 公 司 长 春 130000 摘 要 文 章 对 云 环 境 中 应 用 安 全 责 任 分 工 进 行 详 细 分 析, 研 究

More information