SQL Server实例级别迁移上云

本文档介绍如何通过全量备份文件将自建SQL Server数据库的多个库或所有库全量迁移至阿里云RDS SQL Server。

前提条件

RDS实例为如下版本:

  • RDS SQL Server集群系列(2017企业版、2019企业版)
  • RDS SQL Server高可用系列(2008 R2、2012标准版、2012企业版、2014标准版、2014企业版、2016标准版、2016企业版、2017标准版、2019标准版)
  • RDS SQL Server基础系列(2012企业基础版、2012Web版、2016Web版)

背景信息

RDS SQL Server为您提供了三种基于OSS的数据库上云方案:

    全量备份数据上云(SQL Server 2008 R2)
    全量备份数据上云(SQL Server 2012、2014、2016、2017和2019)
    增量备份数据上云(SQL Server 2012、2014、2016、2017和2019)

以上三种数据库上云方案迁移的级别为数据库,即每次只能完成一个数据库迁移上云。如果SQL Server实例需要迁移的数据库数量较多,上述迁移方案将不再适用。

为解决多个数据库迁移上云问题,RDS SQL Server推出了实例级别的数据库迁移上云方案,您只需将SQL Server实例中所有数据库的完整备份文件上传到OSS Bucket(存储空间)的同一文件夹中,然后执行迁移上云脚本即可。

注意事项

  • 本方案仅支持全量迁移上云,暂不支持增量迁移上云。
  • 如果需要使用子账号执行迁移上云,请为子账号授予OSS和RDS的读写权限(即AliyunOSSFullAccess和AliyunRDSFullAccess权限)。

准备工作

  1. 安装Python2.7.18版本,详情请参见Python官网
  2. 确认Python安装成功并查看版本。
    • Windows操作系统

      执行c:\Python27\python.exe -V查看Python版本,如果输出内容为:Python 2.7.18表明您已安装成功。

      如果提示“不是内部或外部命令”, 请在Path环境变量中增加Python的安装路径和pip命令的目录。

    • Mac、Linux或Unix操作系统

      执行python -V查看Python版本,如果输出内容为:Python 2.7.18表明您已安装成功。

  3. 选择下述方法之一,安装SDK依赖包:
    • 使用pip安装
      pip install aliyun-python-sdk-rds
      pip install oss2
    • 使用源码安装
      # 克隆OpenAPI
      git clone https://github.com/aliyun/aliyun-openapi-python-sdk.git
      # 安装阿里云SDK核心库
      cd aliyun-python-sdk-core
      python setup.py install
      # 安装阿里云RDS SDK
      cd aliyun-python-sdk-rds
      python setup.py install
      # 克隆阿里云OSS SDK
      git clone https://github.com/aliyun/aliyun-oss-python-sdk.git
      cd aliyun-oss-python-sdk
      # 安装阿里云OSS2 SDK
      python setup.py install
  4. 创建与目标RDS实例相同地域的存储空间(Bucket)。

    说明 如果存储空间已经存在,请跳过本步骤。

  5. 在目标RDS实例中创建与待迁移数据库名称相同的数据库,保持数据库为空。
    • 如果目标实例是RDS SQL Server 2012及以上版本,无需执行本步骤。
    • 如果目标实例是RDS SQL Server 2008R2版本。
  6. 备份自建SQL Server的所有数据库。警告
    • 为保障数据一致性,在执行全量备份期间,请勿写入新的数据,请提前安排以免影响业务运行。
    • 如果您不使用备份脚本来执行备份,备份文件必须按照数据库名称_备份类型_备份时间.bak的格式来命名,例如Testdb_FULL_20180518153544.bak
    1. 下载备份脚本。
    2. 双击备份脚本,使用Microsoft SQL Server Management Studio(SSMS)客户端打开。
    3. 根据业务需求,修改下述参数。
      配置项说明
      @backup_databases_list需要备份的数据库,多个数据库以分号或者逗号分隔。
      @backup_type备份类型,取值:
      • FULL:全量备份。
      • DIFF:差异备份。
      • LOG:日志备份。

      注意 本案例中,取值需为FULL。

      @backup_folder备份文件所在的本地目录。如不存在,会自动创建。
      @is_run是否执行备份,取值:
      • 1:执行备份。
      • 0:仅执行检查,不执行备份。
      示例:
      SELECT
          /**
          * Databases list needed to backup, delimiter is : or ,
          * empty('') or null: means all databases excluding system database
          * example: '[testdb]: TestDR, Test, readonly'
          **/
          @backup_databases_list = N'[dtstestdata],[testdb]'
          @backup_type = N'FULL',                    -- Backup Type? FULL: FULL backup; DIFF: Differential backup; LOG: Log backup
          @backup_folder = N'C:\BACKUP'              -- Backup folder to store backup files.
          @is_run = 1                                -- Check or run? 1, run directly; 0, just check
    4. 运行备份脚本,数据库将备份至指定的目录中。

  7. 根据需求选择下述方法,将数据库备份文件上传到OSS的存储空间中。

    警告 请确保上传的OSS存储空间和RDS实例属于同一地域,既可以提高RDS读取备份文件效率,也可以避免无法下载备份文件导致任务失败。

    方法说明
    使用OSS Browser工具上传推荐使用OSS Browser工具上传备份文件到OSS。

    注意 如果您的自建数据库部署在ECS实例上,且ECS实例的网络为专有网络,那么在使用OSS Browser工具登录时,请用OSS Endpoint的专有网络地址,通过内网上传备份文件到OSS,提升备份文件上传的效率。

    使用OSS控制台上传如果备份文件小于5GB,可以直接使用OSS控制台上传。
    使用OSS API上传如果您有全自动无人干预上云需求,请使用OSS OpenAPI,通过断点续传的方式上传备份文件到OSS Bucket。

将数据库迁移至RDS

  1. 下载迁移上云脚本。
  2. 解压后执行如下命令,了解该脚本需要传入的参数信息。
    python ~/Downloads/RDSSQLCreateMigrateTasksBatchly.py -h

    结果如下:

    RDSSQLCreateMigrateTasksBatchly.py -k <access_key_id> -s <access_key_secret> -i <rds_instance_id> -e <oss_endpoint> -b <oss_bucket> -d <directory>
    表 1. 参数说明
    参数说明
    access_key_id目标RDS实例所属的阿里云账号的AccessKey ID。
    access_key_secret目标RDS实例所属的阿里云账号的AccessKey Secret。
    rds_instance_id目标RDS实例ID。
    oss_endpoint备份文件所属的存储空间的Endpoint地址。
    oss_bucket备份文件所属的存储空间名称。
    directory备份文件在OSS存储空间中的目录。如果是根目录,请传入/
  3. 执行迁移上云脚本,完成迁移任务。

    示例:

    将OSS存储空间(名称为testdatabucket)的Migrationdata目录中,所有满足条件的备份文件全量迁移到RDS SQL Server实例(实例ID为rm-2zesz5774ud8s****)。

    python ~/Downloads/RDSSQLCreateMigrateTasksBatchly.py -k LTAIQ**** -s BMkIUhroub******** -i rm-2zesz5774ud**** -e oss-cn-beijing.aliyuncs.com -b testdatabucket -d Migrationdata
  4. 查看迁移任务的执行进度。
    1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
    2. 根据RDS实例的版本,选择下述操作步骤:
      • RDS SQL Server 2008 R2

        单击左侧导航栏的数据上云,你可以查看到所有提交的迁移上云任务。

        说明 可以单击右上角的刷新来查看迁移上云任务的最新状态。

      • RDS SQL Server 2012及以上版本

        单击左侧导航栏的备份恢复,然后单击备份数据上云记录页签。

        说明 默认会展示最近一周的记录,您可以选择时间范围来查看特定时间段内的上云恢复记录。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

soso1968

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值