AWS Database Migration Service
用户指南 (版本 API Version 2016-01-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用 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)。该概述后面的部分提供了每个任务的分步指南。

注意

在使用 AWS Snowball 设备之前,建议您测试您的迁移。为此,您可以设置一个任务以将数据 (如单个表) 发送到 Amazon S3 存储桶,而不是 AWS Snowball 设备。


                 AWS Database Migration Service 和 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 迁移数据的分步过程

以下部分提供了有关迁移步骤的详细信息。

步骤 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 至 6.8、7.0 和 7.1 (64 位)

  • SUSE Linux 版本 11.1 (64 位)

安装 DMS 代理

  1. 将名为 aws-schema-conversion-tool-dms-agent-2.4.0-R2.x86_64.rpm 的 RPM 文件从 AWS SCT 安装目录复制到专用 Linux 计算机。

  2. 以根用户身份运行以下命令以安装 DMS 代理。如果在 SUSE Linux 上安装或升级 DMS 代理,您必须在命令中添加 --nodeps 参数。

    sudo rpm -i aws-schema-conversion-tool-dms-agent-2.4.0-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

步骤 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 http://<Snowball IP>:8080 --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

    
                             AWS Database Migration Service 和 AWS Snowball 过程
  4. 添加以下配置文件信息。

    对于此参数 执行该操作

    Profile Name

    为您的配置文件键入一个名称。

    AWS Access Key

    为打算用于迁移的 AWS 账户和 AWS 区域键入 AWS 访问密钥。

    AWS Secret Key

    为打算用于迁移的 AWS 账户和 AWS 区域键入 AWS 私有密钥。

    区域

    为使用的账户选择 AWS 区域。您的 DMS 复制实例、S3 存储桶和目标数据存储必须位于该 AWS 区域中。

    S3 Bucket folder

    为创建 AWS Snowball 任务时分配的 S3 存储桶键入一个名称。

  5. 在输入该信息后,选择 Test Connection 以确认 AWS SCT 可以连接到 Amazon S3 存储桶。

    弹出窗口中的 OLTP Local & DMS Data Migration 部分应显示所有具有 Pass 状态的条目。如果测试失败,则可能是因为您使用的账户没有访问 Amazon S3 存储桶的相应权限。

  6. 如果测试通过,请选择 OK,然后再次选择 OK 以关闭窗口和对话框。

步骤 7:在 AWS SCT 中注册 DMS 代理

接下来,您在 AWS SCT 中注册 DMS 代理。然后,SCT 尝试连接到该代理,从而显示状态。如果该代理可用,将变为活动状态。

注册 DMS 代理

  1. 启动 AWS SCT,选择 View,然后选择 Database Migration View (DMS)

    
                            “View”(查看) 下拉菜单
  2. 选择 Agent 选项卡,然后选择 Register。将显示 New Agent Registration 对话框。

    
                            “New Agent Registration”对话框
  3. New Agent Registration 对话框中键入信息。

    对于此参数 执行该操作

    描述

    键入代理的名称,即 DMS Agent

    Host Name

    键入安装了 DMS 代理的计算机的 IP 地址。

    端口

    键入在配置 DMS 代理时使用的端口号。

    密码

    键入在配置 DMS 代理时使用的密码。

  4. 选择 Register 以在您的 AWS SCT 项目中注册该代理。

步骤 8:在 Linux 计算机上安装 DMS 代理的源数据库驱动程序

要成功进行迁移,DMS 代理必须能够连接到源数据库。要做到这一点,您需要安装源数据库的数据库驱动程序。所需的驱动程序因数据库而异。

要在安装数据库驱动程序后重新启动 DMS 代理,请将工作目录更改为 <product_dir>/bin,然后执行下面为每个源数据库列出的步骤。

cd <product_dir>/bin ./arep.ctl stop ./arep.ctl start
在 Oracle 上安装

安装 Oracle Instant Client for Linux (x86-64) 11.2.0.3.0 或更高版本。

此外,如果您的系统中尚未包含符号链接,您需要在 $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/ 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 5.2.6 或更高版本

确保 /etc/odbcinst.ini 文件包含 MySQL 条目,如以下示例中所示

[MySQL ODBC 5.2.6 Unicode Driver] Driver = /usr/lib64/libmyodbc5w.so UsageCount = 1
在 PostgreSQL 上安装

安装 postgresql94-9.4.4-1PGDG.<OS Version>.x86_64.rpm。这是包含 psql 可执行文件的软件包。

例如,postgresql94-9.4.4-1PGDG.rhel7.x86_64.rpm 是 Red Hat 7 所需的软件包。

安装适用于 Linux 的 ODBC 驱动程序 postgresql94-odbc-09.03.0400-1PGDG.<OS version>.x86_64 或更高版本,其中 <OS version> 是代理计算机的操作系统。

例如,postgresql94-odbc-09.03.0400-1PGDG.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 存储桶

注意

要在迁移中使用配置的 Amazon S3 存储桶,您必须在与 S3 存储桶相同的 AWS 区域中创建一个 AWS DMS 复制实例。如果尚未创建该实例,请使用 AWS DMS 管理控制台执行该操作,如步骤 2:创建复制实例中所述。

步骤 10:创建本地和 DMS 任务

接下来,您创建一个端到端迁移任务。该任务包含两个子任务。一个子任务将数据从源数据库迁移到 AWS Snowball 设备。另一个子任务提取该设备加载到 Amazon S3 存储桶的数据,并将其迁移到目标数据库。

创建端到端迁移任务

  1. 启动 AWS SCT,选择 View,然后选择 Database Migration View (Local & DMS)

    
                            View > Database Migration View (Local & DMS) (查看 > 数据库迁移视图(本地和 DMS))
  2. 在显示源数据库架构的左侧面板中,选择一个要迁移的架构对象。打开该对象的上下文 (右键单击) 菜单,然后选择 Create Local & DMS Task

    
                             AWS Database Migration Service 和 AWS Snowball 过程
  3. 添加您的任务信息。

    对于此参数 执行该操作

    Task Name

    为任务键入名称。

    代理

    选择 DMS Agent

    Replication Instance

    选择要使用的 AWS DMS 复制实例。您只能指定版本 2.4.3 的复制实例。

    迁移类型

    选择所需的迁移类型。

    选择 Migrate existing data 以迁移所选的架构内容。该过程在 AWS DMS 中称为完全加载。

    选择 Migrate existing data and replicate ongoing changes 以迁移所选的架构内容,并捕获对数据库的所有持续更改。该过程在 AWS DMS 中称为完全加载和 CDC。

    目标表准备模式

    选择要使用的准备模式。

    Truncate – 截断表,而不会影响表元数据。

    Drop tables on target – 删除表并在其位置创建新表。

    Do nothing – 不更改目标表的数据和元数据。

    IAM 角色

    选择有权访问 Amazon S3 存储桶和目标数据库的预定义 IAM 角色。有关访问 Amazon S3 存储桶所需的权限的更多信息,请参阅将 S3 作为 AWS DMS 源时的先决条件

    日志系统

    选择 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 私有密钥。

  4. 选择 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 加载到目标数据存储。

为此,请断开 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 上创建两个终端节点连接。如果创建多个任务,您可能会达到可创建的终端节点数资源限制。