跳至内容

如何将数据库从 Amazon EC2 实例或本地虚拟机迁移到 Amazon RDS for SQL Server?

2 分钟阅读
0

我想将数据库从 Amazon Elastic Compute Cloud (Amazon EC2) 实例或本地 Microsoft SQL Server 实例迁移到我的 Amazon Relational Database Service (Amazon RDS) for Microsoft SQL Server 实例。

解决方法

迁移数据的方法

原生 SQL Server 备份和恢复

您可以使用原生备份和恢复将 SQL Server 数据库从本地或 Amazon EC2 实例迁移到 Amazon RDS for SQL Server 实例。为此,请完成以下步骤:

  1. 创建 Amazon Simple Storage Service (Amazon S3) 存储桶来存储源实例的备份。Amazon S3 存储桶必须与 Amazon RDS 实例位于同一 AWS 区域中。

  2. 创建 AWS Identity and Access Management (IAM) 角色以访问存储桶

  3. 将 SQLSERVER_BACKUP_RESTORE 选项添加到与 Amazon RDS for SQL Server 实例关联的选项组中

  4. 从源实例(本地或 Amazon EC2)创建备份,然后将其复制到您在步骤 1 中创建的 Amazon S3 存储桶中。

  5. 运行以下脚本将备份恢复到 Amazon RDS for SQL Server 实例中:

    exec msdb.dbo.rds_restore_database  
    @restore_db_name='database_name',   
    @s3_arn_to_restore_from='arn:aws:s3:::bucket_name file_name_and_extension';
  6. 运行以下脚本将 Amazon RDS 实例数据库备份到 S3:

    exec msdb.dbo.rds_backup_database  
    @source_db_name='database_name',  
    @s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name_and_extension',   
    @overwrite_S3_backup_file=1;

    **注意:**您还可以备份和恢复差异备份

AWS Database Migration Service (AWS DMS)

完成以下步骤:

  1. 验证使用 SQL Server 作为 AWS DMS 的目标的先决条件和限制。
  2. 创建 AWS DMS 复制实例
  3. 使用 AWS DMS 创建源和目标端点
  4. 创建迁移任务

事务复制

您可以设置从本地或 EC2 SQL Server 实例到 Amazon RDS for SQL Server 实例的事务复制。但是,您只能将 Amazon RDS for SQL Server 实例设为订阅用户。而且,您只能通过推送订阅将本地或 EC2 SQL Server 实例设为发布者或分发者。

要从本地或 Amazon EC2 SQL Server 实例设置事务复制,请参阅以下说明:

备份包 (.bacpac) 文件

.bacpac 文件由复制的元数据和压缩到文件的数据组成。最佳做法是对大约 200 GB 的数据库使用 .bacpack 文件。您可以使用导出/导入或 SQLPackage.exe(命令行)实用程序创建 .bacpac 文件。有关 .bacpac 文件的详细信息,请参阅 Migrate SQL Server databases from an Azure SQL database to Amazon RDS for SQL Server using bacpac method

导入数据的方法

生成和发布脚本向导

如果您的数据库小于 1 GB,则可以使用生成和发布脚本向导。对于较大的数据库,您可以使用导入和导出向导或批量复制方法来编写数据库架构的脚本。有关生成和发布脚本向导的详细信息,请参阅 Microsoft SQL Server 文档中的如何 生成脚本 (SQL Server Management Studio)

**注意:**确保在 Set Scripting Option(设置脚本选项)页面上选择 Save scripts to specific location(将脚本保存到特定位置)、Advanced(高级)。Advanced(高级)设置为在导入和导出期间在表格中包括或排除对象提供了其他选项。

导入和导出向导

导入和导出向导会创建集成包。集成包用于将数据从您的本地或 Amazon EC2 SQL Server 数据库复制到 Amazon RDS for SQL Server 实例。您可以筛选要复制到 Amazon RDS 实例的特定表。

有关导入和导出向导的更多详细信息,请参阅 Microsoft SQL Server 文档中的如何 运行 SQL Server 导入和导出向导

注意:运行导入和导出向导时,请确保为目标 Amazon RDS for SQL Server 实例选择以下选项:

  • 对于 Server Name(服务器名称),输入 Amazon RDS 数据库实例的端点的名称。
  • 对于 Authentication mode(身份验证模式),选择 SQL Server Authentication(SQL Server 身份验证)。
  • 对于 Username(用户名)和 Password(密码),输入您在 Amazon RDS 实例中创建的主用户。

批量复制程序实用程序

批量复制程序 (bcp) 是一个命令行实用程序,用于在 SQL Server 实例之间批量复制数据。您可以使用 bcp 实用程序将大量数据导入到 SQL Server 实例或导出到文件中。

以下是 INOUT 命令的示例:

**OUT:**使用此命令将表中的记录导出或转储到文件中:

bcp dbname.schema_name.table_name out C:\table_name.txt -n -S localhost -U username -P     password -b 10000

前面的代码包含以下选项:

  • -n:指定批量复制使用要复制的数据的本机数据类型。
  • -S:指定 bcp 实用程序连接的 SQL Server 实例。
  • -U:指定用于登录 SQL Server 实例的 AWS 账户的用户名。
  • -P:为 -U 指定的用户指定密码。
  • -b:指定每批导入数据的行数。

**IN:**使用此命令将转储文件中的所有记录导入到现有表中。必须先创建表,然后才能运行 bcp 命令。

bcp dbname.schema_name.table_name in C:\table_name.txt -n -S endpoint,port -U master_user_name -P master_user_password -b 10000

有关详细信息,请参阅 Microsoft SQL Server 文档中的 bcp 实用程序