SQL Server 2008 R2版本的实例支持便捷的数据上云操作,您只需将自建数据库的备份文件上传至阿里云对象存储服务OSS(Object Storage Service),然后通过RDS控制台将其全量迁移至指定数据库中。该方案采用微软官方的备份恢复方案,可保障兼容性。

前提条件

已在RDS中创建与待迁移的数据库名称相同的数据库,详情请参见创建数据库和账号SQL Server 2008 R2版

注意事项

本方案迁移的级别为数据库,即每次只能迁移一个数据库上云。如果需要迁移多个或所有数据库,建议采用实例级的迁移上云方案,详情请参见SQL Server实例级别迁移上云

计费说明

本方案中仅会产生OSS的相关费用,详情如下图所示。

计费说明
场景 费用说明
将本地数据备份文件上传至OSS 不产生费用
备份文件存储在OSS 会产生OSS的存储费用,计费详情请参见OSS定价
将备份文件从OSS迁移至RDS
  • 通过内网迁移至RDS,不产生费用。
  • 通过外网迁移至RDS,OSS会产生外网流出流量的费用,计费详情请参见OSS定价

操作步骤

  1. 备份本地数据库。
    1. 打开Microsoft SQL Server Management Studio(SSMS)客户端。
    2. 登录待迁移的数据库。
    3. 执行如下命令,确认源数据库当前的恢复模式。
      use master;
      go
      select name, case recovery_model
      when 1 then 'FULL'
      when 2 then 'BULD_LOGGED'
      when 3 then 'SIMPLE' end model from sys.databases
      where name not in ('master','tempdb','model','msdb');
      go
      • 如果返回结果中的model值不为FULL,请执行步骤iv。
      • 如果返回结果中的model值为FULL,请执行步骤v。
    4. 执行如下命令,将源数据库的恢复模式设置为FULL
      ALTER DATABASE [dbname] SET RECOVERY FULL;
      go
      ALTER DATABASE [dbname] SET AUTO_CLOSE OFF;
      go
      注意 恢复模式设置为FULL后,会使SQL Server的日志信息增多,请确保具备足够的硬盘空间。
    5. 执行如下命令,备份源数据库。本案例中,将dbtest数据库备份至backup.bak文件中。
      use master;
      go
      BACKUP DATABASE [dbtest] to disk ='d:\backup\backup.bak' WITH COMPRESSION,INIT;
      go
    6. 执行如下命令,校验备份文件的完整性。
      USE master
       GO
       RESTORE FILELISTONLY 
         FROM DISK = N'D:\backup\backup.bak';
      注意
      • 如果有结果集返回,代表备份文件有效。
      • 如果提示错误,请重新执行备份操作。
    7. 可选: 执行如下命令,还原数据库的恢复模式。
      注意 如果数据库的恢复模式原本就是FULL,无需执行本步骤。
      ALTER DATABASE [dbname] SET RECOVERY SIMPLE;
      go
  2. 将数据库备份文件上传至OSS。
    • 上传小于5GB的单个文件,请参见上传文件
    • 上传多个文件或大于5GB的单个文件,请参见断点续传。如需使用图形化的操作界面,请参见ossbrowser
    注意 只有当RDS实例和OSS的Bucket在同一地域时,二者才能内网互通,所以在上传备份文件时,请将文件上传至与目标RDS实例在同一地域的Bucket上面。
  3. 设置备份文件的链接有效时间并获取文件的链接地址。
    1. 登录OSS 管理控制台
    2. 在左侧导航栏,单击Bucket列表
    3. 找到数据库备份文件所在的Bucket,单击对应的Bucket名称。
    4. 单击文件管理
    5. 单击目标数据库备份文件的文件名。
    6. 在弹出的对话框中,将链接有效时间修改为28800秒,即8小时。
      注意 将备份文件从OSS迁移至RDS时,需要使用备份文件的链接地址,如果超过了链接有效时间,将导致数据迁移失败。
    7. 单击复制文件URL
      复制文件URL
    8. 修改获取到的数据备份文件链接地址。

      默认获取的是文件的外网连接地址,如需通过内网迁移数据,您需要将文件链接地址中的Endpoint改成内网Endpoint。例如,备份文件的链接地址为http://rdstest.oss-cn-shanghai.aliyuncs.com/testmigraterds_20170906143807_FULL.bak?Expires=15141****&OSSAccessKeyId=TMP****,您需要将链接地址中的oss-cn-shanghai.aliyuncs.com修改为oss-cn-shanghai-internal.aliyuncs.com

      注意 不同的网络类型、不同地域所对应的内网Endpoint不同,详情请参见访问域名和数据中心
  4. 将数据库备份文件从OSS迁移至RDS。
    1. 登录RDS控制台
    2. 选择目标实例所在地域。
      选择地域
    3. 单击目标实例ID。
    4. 在左侧导航栏,单击数据库管理
    5. 找到目标数据库,单击操作列的从OSS上的备份文件迁入
    6. 数据导入向导对话框中,阅读提示内容,单击下一步
    7. 阅读OSS上传的相关提示内容,单击下一步
    8. 备份文件OSS URL栏中填写备份文件在OSS的链接地址。
      说明 目前,RDS SQL Server 2008 R2仅支持一种上云方案,即全量备份文件一次性迁入。
    9. 单击确定
      您可以在左侧导航栏,单击数据上云,然后找到目标迁移任务来查看数据迁移的进度。
      注意 如果任务状态显示为失败,请查看任务描述或单击目标迁移任务后面的查看文件详情,确认任务失败的原因并修复,然后重新执行数据迁移。

相关API

API 描述
CreateMigrateTask 创建数据上云任务
CreateOnlineDatabaseTask 打开数据库
DescribeMigrateTasks 查询数据上云任务列表
DescribeOssDownloads 查看数据上云任务文件详情