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

2 分钟阅读
0

我想将数据库从 Amazon Elastic Compute Cloud(Amazon EC2)实例或本地 Microsoft SQL Server 实例迁移到我的适用于 Microsoft SQL Server 实例的 Amazon Relational Database Service(Amazon RDS)。迁移数据有哪些可用选项?

解决方法

迁移数据的方法

本机 SQL Server 备份和还原

您可以使用本机备份和还原将 SQL Server 数据库从本地或 EC2 实例迁移到 Amazon RDS for SQL Server 实例。

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

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

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

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

5.    运行以下脚本将备份还原到 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.    运行以下脚本将 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.    创建 DMS 复制实例

3.    使用 DMS 创建源和目标端点

4.    创建迁移任务

事务复制

您可以设置从本地或 EC2 SQL Server 实例到 RDS for SQL Server 实例的事务复制。RDS for SQL Server 实例只能以订阅者身份进行,推送订阅以发布者-分销商身份从本地或 EC2 SQL Server 实例进行。

有关从本地或 EC2 SQL Server 实例设置事务复制的分步说明,请参阅以下内容:

备份包(.bacpac)文件

.bacpac 文件由复制的元数据和压缩成文件的数据组成。这种方法是大小约 200GB 的数据库的最佳选择。

您可以使用“导出/导入”或 SQLPackage.exe(命令行)实用程序创建 .bacpac 文件。

有关 .bacpac 文件的更多信息,请参阅使用 .bacpac 方法将 SQL Server 数据库从 Azure SQL 数据库迁移到 Amazon RDS for SQL Server

导入数据的方法

生成和发布脚本向导

如果您的数据库小于 1GB,则可以使用“生成和发布脚本向导”。对于较大的数据库,您可以使用“导入和导出向导”或批量复制方法编写数据库架构的脚本。

有关“生成和发布脚本向导”的更多信息,请参阅 Microsoft SQL Server 文档中的如何生成脚本(SQL Server Management Studio)

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

导入和导出向导

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

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

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

  • Server Name(服务器名称)中,输入 RDS 数据库实例的端点的名称。
  • 对于 Authentication mode(身份验证模式),选择 SQL Server Authentication(SQL Server 身份验证)。
  • 对于 User name(用户名)和 Password(密码),输入您在 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 实例的账户的用户名。
  • **-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 实用程序


AWS 官方
AWS 官方已更新 2 年前