自建SQL Server通过物理网关迁移上云

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

本文介绍如何通过DTS控制台的物理网关迁移上云功能将ECS、IDC或其他云服务器中的自建SQL Server数据库迁移到RDS SQL Server。该功能采用物理网关协议的接入方式,具有速度快、操作简单、稳定性好、场景覆盖全等特点,能够有效提高迁移效率。

使用场景

若您的自建SQL Server数据库所在服务器可以访问公网,您可以采用本文操作将自建SQL Server数据库迁移到RDS SQL Server中。

说明

若您的自建SQL Server数据库所在服务器无法连接公网,但有一台专门的堡垒机进行网络通信时,请参考其他迁移方案,请参见自建SQL Server通过堡垒机架构的物理网关迁移上云

前提条件

  • 源端自建SQL Server需要满足以下条件。

    • 源端自建数据库的版本为:SQL Server 2019、2017、2016、2014、2012、2008 R2、2005。

      说明

      支持阿里云ECS自建数据库、IDC自建数据库、其它云服务器上的自建数据库,不支持云数据库。

    • 源端自建数据库所在服务器需要安装DBS物理协议网关。安装方法,请参见附录:新建物理协议网关

      说明

      请确保物理协议网关安装地域与目标RDS实例处于同一地域。

  • 目标端RDS SQL Server实例需满足以下条件。

    • 目标端数据库的版本为:SQL Server 2019、2017、2016、2014、2012、2008 R2。

    • 目标端RDS SQL Server实例版本必须大于或等于源端自建SQL Server版本。

  • 使用阿里云账号完成如下授权。

    • 已创建AccessKey,并获取AccessKey IDAccessKey Secret信息,用于客户端网关的身份识别及注册上线至DBS控制台。具体操作,请参见创建AccessKey

    • 若用RAM账号(阿里云子账号)进行添加,需要获得AliyunDBSFullAccess权限,具体操作,请参见为RAM用户授权

      说明
      • 主账号默认在开通DBS服务时已开通以上权限。

      • 添加成功后,当前账号下的所有用户在DBS控制台都可以看到该备份网关。

物理协议迁移上云和逻辑数据迁移上云的区别

对比项

物理协议迁移上云

逻辑数据迁移上云

迁移原理

采用数据库原生物理备份协议以数据块的方式写入到目标端。

采用JDBC逻辑协议获取SQL并写入到目标端。

操作系统要求

仅支持Windows上的SQL Server,且桌面Windows版本不能低于XP,服务器Windows版本不能低于2003。

无限制。

部署要求

需要在数据库所在服务器上安装物理协议网关。

无需安装网关。

网络连通要求

数据库所在服务器可以访问到阿里云服务网络。

说明

若您的自建SQL Server数据库所在服务器无法连接公网,但有一台专门的堡垒机进行网络通信时,请选择其他迁移方案,请参见自建SQL Server通过堡垒机架构的物理网关迁移上云

需要开放数据库端口或开通专线访问。

源库权限要求

需要sysadmin角色。

结构迁移和全量迁移需要SELECT权限,增量迁移需要sysadmin权限。更多详情请参见数据库账号的权限要求

目标库版本要求

目标库版本必须大于等于源库版本号。

支持从高版本到低版本,或低版本到高版本。

目标库可访问性

迁移上云期间不可使用。

迁移上云期间允许读写。

源库可以迁移表的限制

不支持内存表,不支持FileStream、FileTables数据字段类型。

限制条件,请参见源库限制

支持的迁移场景

自建数据库迁移上云。

说明

ECS、IDC或其他云服务器中的自建SQL Server数据库。

自建数据库迁移上云、其他云托管数据库迁云上云。

迁移效率

高。

中。

是否支持数据加工ETL

不支持。

支持。

是否支持表级别数据过滤

不支持。

支持。

是否支持库级别过滤

支持。

支持。

迁移说明

类型

说明

源库限制

  • 仅支持Windows上的SQL Server,且桌面Windows版本不能低于XP,服务器Windows版本不能低于2003。

  • 源端数据库大小不能超过目标端RDS SQL Server实例的剩余空间,否则会导致上云失败。

  • 源端SQL Server所在的服务器可以正常访问外网。

  • 源端数据库名称不能与目标端云上实例的数据库名称重复。

  • 源端数据库名称不能与某些系统库名或者其他不能使用的库名重复,列举如下:

    reserved_dbname = ["master", "tempdb", "msdb", "model", "distribution","rdscore","sys_info"]
  • 源端SQL Server网络需满足如下条件:

    • 若源端未开启防火墙,且源端为阿里云ECS自建数据库,则可通过VPC或公网进行访问。

    • 若源端未开启防火墙,且源端为非阿里云ECS自建数据库,则可通过公网进行访问。

    • 若源端开启了防火墙,则需要放行*.aliyuncs.com,以保证后续网络可正常连通。

数据库版本

目标端SQL Server版本必须大于或等于源端SQL Server版本,版本高低关系如下:

  • 2019 > 2017 > 2016 > 2014 > 2012 > 2008 R2 > 2005

  • 企业版(Developer)> 标准版 > Web > Express

说明

各版本支持的迁移关系,请参见支持的迁移关系

内存数据库与镜像技术

由于SQL Server中In-Memory OLTP特性和Mirroring技术是不兼容的,如果您的源端开启了内存数据库,目标端不能为高可用版的RDS实例。

数据库个数

多库迁移时,由于RDS的数据库个数存在约束限制,不同的实例规格限制也相应不同,具体请参见数据库数量

其他限制

  • 执行物理迁移任务期间不允许执行其他备份数据库的操作,除非执行其他备份操作前,已打开了COPY_ONLY选项。

  • 不支持迁移如下字段类型的数据:FileStreamFileTables

  • 当前仅支持迁移单库或多库或整个实例。

  • 不支持迁移内存表。

注意事项

  • 数据迁移上云期间允许对源端自建SQL Server数据库进行增量写入,但在上云切换过程中请勿进行写入操作,否则会导致数据不一致。

  • 增量迁移期间,目标端RDS SQL Server数据库暂时处于不可用状态。请等待增量迁移任务完成,并且选择切换上云后再使用目标数据库。

支持的迁移关系

源端版本(Edition)

目标RDS版本(Edition)

企业版(Developer)/标准版/Web/Express

企业版

标准版/Web/Express

标准版

Web/Express

Web

操作步骤

  1. 进入迁移任务的列表页面。

    1. 登录DMS数据管理服务

    2. 在顶部菜单栏中,单击集成与开发

    3. 在左侧导航栏,选择数据传输(DTS) > 数据迁移

    说明
  2. 迁移任务右侧,选择迁移实例所属地域。

    说明

    新版DTS迁移任务列表页面,需要在页面左上角选择迁移实例所属地域。

  3. 单击创建任务,配置源库及目标库信息。

    配置源、目标库

    警告

    选择源和目标实例后,建议您仔细阅读页面上方显示的使用限制,否则可能会导致任务失败或数据不一致。

    类别

    配置

    说明

    任务名称

    DTS会自动生成一个任务名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。

    源库信息

    选择DMS数据库实例

    您可以按实际需求,选择是否使用已有实例。

    • 如使用已有实例,下方数据库信息将自动填入,您无需重复输入。

    • 如不使用已有实例,您需要输入下方的数据库信息。

    数据库类型

    选择SQL Server

    接入方式

    选择物理协议

    实例地区

    默认为自建SQL Server数据库所属地域。

    物理协议网关(DBS备份网关)

    选择目标物理协议网关。

    说明

    物理协议网关的安装方法,请参见附录:新建物理协议网关

    主机名或IP地址

    此处默认为localhost

    端口

    填入自建SQL Server数据库的服务端口,默认为1433

    目标库信息

    选择DMS数据库实例

    您可以按实际需求,选择是否使用已有实例。

    • 如使用已有实例,数据库信息将自动填入,您无需重复输入。

    • 如不使用已有实例,您需要输入下方的数据库信息。

    数据库类型

    默认为SQL Server

    接入方式

    默认为云实例

    实例地区

    选择目标RDS SQL Server实例所属地域。

    实例ID

    选择目标RDS SQL Server实例ID。

    数据库账号

    填入目标RDS SQL Server实例的数据库账号。

    说明

    RDS SQL Server数据库账号创建及授权方法,请参见创建普通账号和高权限账号修改账号权限

    数据库密码

    填入该数据库账号对应的密码。

  4. 单击测试连接以进行下一步

  5. 在弹出的DTS服务器访问授权对话框中,单击测试连接以进行下一步

    如果源或目标数据库是阿里云数据库实例(例如RDS MySQL云数据库MongoDB版等),DTS会自动将对应地区DTS服务的IP地址添加到阿里云数据库实例的白名单;如果源或目标数据库是ECS上的自建数据库,DTS会自动将对应地区DTS服务的IP地址添到ECS的安全规则中,您还需确保自建数据库没有限制ECS的访问(若数据库是集群部署在多个ECS实例,您需要手动将DTS服务对应地区的IP地址添到其余每个ECS的安全规则中);如果源或目标数据库是IDC自建数据库或其他云数据库,则需要您手动添加对应地区DTS服务的IP地址,以允许来自DTS服务器的访问。DTS服务的IP地址,请参见DTS服务器的IP地址段

    警告

    DTS自动添加或您手动添加DTS服务的公网IP地址段可能会存在安全风险,一旦使用本产品代表您已理解和确认其中可能存在的安全风险,并且需要您做好基本的安全防护,包括但不限于加强账号密码强度防范、限制各网段开放的端口号、内部各API使用鉴权方式通信、定期检查并限制不需要的网段,或者使用通过内网(专线/VPN网关/智能网关)的方式接入。

  6. 配置任务对象及高级配置。

    配置项

    说明

    任务步骤

    • 如果只需要进行全量迁移,请选中全量迁移(默认必选)。

    • 如果需要进行不停机迁移,请选中全量迁移增量迁移

    说明

    如果未选择增量迁移,为保障数据一致性,数据迁移期间请勿在源实例中写入新的数据。

    源库对象

    源库对象框中单击待迁移的对象,然后单击向右小箭头将其移动到已选择对象框。

    说明

    支持迁移单库或多库或整个实例。

    已选择对象

    显示目标迁移对象。

  7. 单击下一步高级配置,进入高级配置页面。

    配置

    说明

    监控报警

    是否设置告警,当迁移失败或延迟超过阈值后,将通知告警联系人。

    源库、目标库无法连接后的重试时间

    在迁移任务启动后,若源库或目标库连接失败则DTS会报错,并会立即进行持续的重试连接,默认重试720分钟,您也可以在取值范围(10~1440分钟)内自定义重试时间,建议设置30分钟以上。如果DTS在设置的时间内重新连接上源、目标库,迁移任务将自动恢复。否则,迁移任务将失败。

    说明
    • 针对同源或者同目标的多个DTS实例,网络重试时间以后创建任务的设置为准。

    • 由于连接重试期间,DTS将收取任务运行费用,建议您根据业务需要自定义重试时间,或者在源和目标库实例释放后尽快释放DTS实例。

    源库、目标库出现其他问题后的重试时间

    在迁移任务启动后,若源库或目标库出现非连接性的其他问题(如DDL或DML执行异常),则DTS会报错并会立即进行持续的重试操作,默认持续重试时间为10分钟,您也可以在取值范围(1~1440分钟)内自定义重试时间,建议设置10分钟以上。如果DTS在设置的重试时间内相关操作执行成功,迁移任务将自动恢复。否则,迁移任务将会失败。

    重要

    源库、目标库出现其他问题后的重试时间的值需要小于源库、目标库无法连接后的重试时间的值。

  8. 上述配置完成后,单击页面右下角的下一步保存任务并预检查

    说明
    • 在迁移任务正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动迁移任务。

    • 如果预检查失败,单击具体检查项后的提示,查看失败详情。

      • 您可以根据提示修复后重新进行预检查。

      • 如无需修复告警检测项,您也可以选择确认屏蔽忽略告警项并重新进行预检查,跳过告警检测项重新进行预检查。

  9. 预检查页面,预检查通过率显示为100%后,单击下一步购买下一步购买

  10. 购买页面,阅读并选中《数据传输(按量付费)服务条款》

  11. 单击购买并启动 > 确定,迁移任务正式开始。

    您可在数据迁移界面单击目标迁移实例,在任务管理页面,查看实例迁移进展。DTS控制台迁移任务成功

    说明

    您也可以在RDS控制台目标实例的备份恢复 > 备份数据库上云记录页面查看数据的全量或增量迁移进度。RDS控制台查看迁移进度

  12. 全量迁移任务进度为100%,增量迁移任务进行时,在目标迁移任务的任务管理 > 增量迁移页面,单击迁移上云按钮。

  13. 在弹出的您确定要切换上云吗对话框中,单击立即开始,等待迁移上云任务完成即可。

    说明

    为了保证数据的一致性,请您在触发上云切换前,停止对源实例写入数据,并等待上云任务完成,最后进行业务连接切换,整个过程大约需要数分钟时间。

附录:新建物理协议网关

本章节介绍创建物理协议网关的方法。

前提条件

您需要向NT AUTHORITY\SYSTEM账号赋予Sysadmin角色。您可执行如下SQL命令或通过图形化界面进行设置:

  • SQL命令

    ALTER SERVER ROLE [sysadmin] ADD MEMBER [NT AUTHORITY\SYSTEM]
    GO
  • 图形化界面图形化授权界面

注意事项

AliyunDBSAgent会将待迁移数据库的恢复模式设置成Full

说明

恢复模式为Full模式时,如果数据库持续写入会占用源端磁盘空间,可能造成源端磁盘满的情况。为避免此种情况发生,迁移任务完成后,您可手动将恢复模式设置为Simple,命令如下:

ALTER DATABASE 数据库名 SET RECOVERY Simple;

操作步骤

  1. 配置源库及目标库信息页面,单击新建物理协议网关按钮。新建物理协议网关

  2. 在弹出的部署命令对话框中,选择备份网关所在地区备份网关所在网络类型,并复制物理协议网关安装命令,手动下载。

    部署命令对话框

    说明
    • 公网:通过公网IP访问。

    • ECS私网/VPC:通过阿里云专线访问。

  3. 在本地Windows设备或服务器上,安装AliyunDBSAgent。

    1. 双击下载文件内的setup.exe应用程序。安装1

    2. 选择安装语言,单击OK,然后单击下一步

    3. 阅读并接受协议条款,单击下一步

    4. 选择DBS备份网关,单击下一步

      DBS备份网关

    5. 选择安装路径,单击下一步并单击确定

    6. 选择备份网关地域,并填写AccessKey IDAccessKey Secret信息,单击下一步ID和秘钥

      重要
      • 请确保物理协议网关安装的地域和目标RDS SQL Server实例所在地域是一致的。

      • AccessKey信息以明文方式存放在安装目录下的.\config\dbs-agent.conf中。

    7. 确认要安装的组件包,单击下一步

      网关将开始安装,安装时间大约为1~5分钟。

    8. 单击完成

      您可C:\Program Files\aliyun\dbs_agent\logs\agent.log安装目录下查看网关安装情况,如下图表示网关已正常安装。网关的进程心跳

  4. 物理协议网关安装成功后,在DTS控制台的部署命令对话框中,单击完成安装

  5. 确认物理协议网关是否已启动。

    1. 在Windows运行窗口中,输入services.msc,单击确定

      打开系统的服务管理器。

    2. 在服务管理器中,确认该服务是否已启动,如未启动,请右键单击AliyunDBSAgent,在弹出的列表中选择启动确认是否启动

      说明

      系统将默认启动备份网关,您也可以在服务管理器中启动、停止AliyunDBSAgent的服务。

  6. 查看新添加的物理协议网关。

    您可在数据库备份DBS的备份网关页面,单击刷新,查看新添加的物理协议网关。新建网关

    说明

    DTS_开头为新添加的物理协议网关。