【MSSQL】本地Microsoft SQL Server备份迁移至华为云RDS for SQL Server实例

【MSSQL】本地Microsoft SQL Server备份迁移至华为云RDS for SQL Server实例


https://support.huaweicloud.com/bestpractice-drs/drs_04_0002.html


场景介绍

由于安全原因,数据库的IP地址有时不能暴露在公网上,但是选择专线网络进行数据库迁移,成本又高。这种情况下,您可以选用数据复制服务提供的备份迁移,通过将本地Microsoft SQL Server数据库的备份文件上传至对象存储服务,然后恢复到目标数据库。备份迁移可以帮助您在云服务不触碰源数据库的情况下,实现数据迁移。

数据复制服务的备份迁移功能支持全量和全量+增量场景的数据库迁移。

场景一:全量备份迁移

该场景为一次性数据库迁移,需要停止业务,将导出的Microsoft SQL Server全量备份文件上传至对象存储服务,然后恢复到目标数据库。

图1 全量迁移 

场景二:全量+增量备份迁移

该场景为数据持续性迁移,需要在完成全量备份恢复的基础上,通过多次增量备份文件恢复,实现迁移过程中业务中断的最小化。一次典型的增量恢复过程,会涉及多次恢复增量备份。每个增量备份恢复均会使目标数据库保持还原中状态,此时数据库不可读写,直至最后一个增量备份恢复完成后,数据库才能变成可用状态。

图2 全量+增量迁移 


迁移准备

本小节介绍通过数据复制服务进行备份迁移前的准备工作。在正式使用数据复制服务之前,请先阅读以确保您已完成创建备份迁移任务所需的各项准备工作。

备份文件准备

请参见《数据复制服务快速入门》中“备份迁移快速入门”下的“ 使用须知”章节。

数据库恢复模式设置

  • 仅进行全量备份迁移时,对数据库的恢复模式没有要求。
  • 进行全量+增量备份迁移时,数据库备份文件的恢复模式需要设置为 “完整”。具体操作方法如下:
    方法一:通过Microsoft SQL Server Management Studio 数据库管理软件登录到本地数据库中心,选择需要迁移的数据库,单击鼠标右键,选择  “属性”,选择  选项 >  恢复模式,将恢复模式设置为  “完整”即可。
    图1 设置恢复模式 

    方法二:使用如下SQL命令的方式进行设置。

    USE master;  
    ALTER DATABASE database_name SET RECOVERY FULL;

目标数据库磁盘要求

目标数据库的可用磁盘空间至少为待还原数据库总数据量大小的1.5倍。

迁移时间的评估参考

一次完整的备份迁移主要经历以下4个阶段。

图2 迁移示意图 
表1 备份迁移说明

阶段

名称

描述

导出数据库备份文件

该阶段主要耗时为生成数据库备份文件所需的时间,通常取决于源数据库的配置,需要您根据源数据库的配置进行预估。

上传备份文件至OBS桶

OBS对象存储不限速,如果您是通过公网访问OBS对象存储时,上传下载速度受公网带宽限制。例如:公网带宽为10MB/s时,在没有其他因素影响网络的情况下,则上传的速度为10MB/s。

通过DRS下载备份文件至目标端RDS for SQL Server

一般情况下,下载速度约为:100MB/s或者300GB/h。

将源数据库的备份文件恢复至目标数据库

从经验值来讲,一般的恢复速度约为5GB/min或者300GB/h。

合计总耗时

总耗时=阶段①耗时+阶段②耗时+阶段③耗时+阶段④耗时

业务中断时长= 业务停机->进行最后一次增量备份->上传OBS->创建DRS任务恢复

下面将以一个示例说明备份迁移的完整过程的耗时,可以帮助您提前预估迁移时间,实际的耗时与用户端的网络,数据库配置等情况有关,需以实际情况为准,表格数据仅供参考。

示例:

表2 备份迁移示例

阶段

名称

备份文件大小 (G)

耗时 (h)

导出数据库备份文件

283

5.5

上传备份文件至OBS通

283

8.95

通过DRS下载备份文件

283

0.61

备份文件恢复到目标库

283

2.24

合计总耗时

17.3


导出数据库备份文件

本小节介绍了数据库全量备份文件和事务日志(增量)备份文件的导出方法。

  1. 检查本地数据库参数配置。

    说明: 

    该操作为全量+增量迁移的必操作项,仅进行全量迁移时,可以跳过该步骤。

    由于数据库存在 日志截断和收缩配置,在导出全量备份文件前,需要将数据库恢复模式配置成“ 完整”模式,且一直保持到整个数据库完全迁移到本云数据库实例和业务切割后,才能修改。

    1. 通过Microsoft SQL Server Management Studio 数据库管理软件登录到本地数据库中心。
    2. 选择需要迁移的数据库,单击鼠标右键,选择“属性”,在属性弹出框左边列表选择“选项”。
    3. 在“恢复模式”下拉菜单中选择“完整”,单击“确定”。
      图1 配置数据库恢复模式 

  2. 配置备份文件压缩参数,该操作为可选操作。

    如果客户本地数据中心带宽不高,OBS Browser上传时间比较久,建议配置备份文件压缩参数。

    1. 使用 数据库管理员帐号,通过Microsoft SQL Server Management Studio 数据库管理软件登录到数据库中心。
    2. 在对象资源管理器中,右键单击服务器并选择 “属性”。
    3. 单击  数据库设置  。
    4. 在“备份和还原” 下,勾选“压缩备份” 。
      该设置确定压缩备份的服务器级默认设置,具体如下:
      • 如果未勾选 “压缩备份” ,在默认情况下将不会压缩新备份。
      • 如果 已勾选“压缩备份” ,则默认情况下将压缩新备份。
        图2 配置压缩参数 

  3. 导出全量备份文件。

    1. 通过Microsoft SQL Server Management Studio 数据库管理软件登录到本地数据库中心。
    2. 选择需要迁移的数据库,单击鼠标右键,选择“任务>备份”。
      图3 选择备份选项 
    3. 备份类型选择“完整”,单击“添加”,填写备份文件输出路径,注意后缀名为 .bak。
      图4 设置全量备份文件 
    说明: 
    • 建议备份文件名称和数据库名称保持一致( 区分大小写),同时加上“.bak”后缀
    • 建议将所有的数据库备份在一个bak文件里或者少量的bak文件里,这样可以减少频繁的上传与恢复,实现打包上传和打包恢复的效果

  4. 导出增量备份文件。

    1. 通过Microsoft SQL Server Management Studio 数据库管理软件登录到本地数据库中心。
    2. 选择需要迁移的数据库,单击鼠标右键,选择“任务>备份”。
      图5 备份文件选项 
    3. 备份类型选择“事务日志”,单击“添加”,填写备份文件输出路径,注意后缀名为 .bak
      图6 设置增量备份文件 
    说明: 
    • 建议备份文件名称和数据库名称保持一致( 区分大小写),同时加上时间戳和“.bak”后缀 ,例如: [ 数据库名 ]_Incr_[ 时间戳 ].bak
    • 建议将所有的数据库备份在一个bak文件里或者少量的bak文件里,这样可以减少频繁的上传与恢复,实现打包上传和打包恢复的效果 例如:可以将A、B、C三个数据库备份到一个bak文件中,整体进行打包上传和恢复,这样有助于提高数据恢复的成功率。


上传备份文件

本小节介绍了上传备份文件的方法。

  1. 创建OBS桶,并将备份文件上传OBS桶。

    说明: 
    • 如果上传的文件不超过50MB时,可以登录OBS控制台创建OBS自建桶,存储类别选择“ 标准存储”,桶策略选择“ 公共读”。
    • 如果批量上传多个文件,或上传文件大于50MB时,需要下载并安装 OBS Browser客户端,支持大文件断点续传功能。相关操作请参见 下载OBS Browser

      此时建议备份文件放置于同区域且独立的公共桶,混用其他公共桶可能会因为其他文件过多,而无法展示迁移备份文件。

      上传备份文件之前,创建用户的Access Key ID和Secret Access Key,参考 创建访问密钥(AK 和SK)

      上传备份文件时,OBS文档模式需要选择“ 标准存储”。

    1. 登录OBS Browser客户端,相关操作请参见 登录客户端
    2. 创建OBS自建桶,相关操作请参见 添加桶
    3. 将导出的数据库备份文件上传至OBS桶内,相关操作请参见 上传文件


场景一:全量备份迁移

全量备份迁移场景为一次性数据库迁移,需要停止业务,将导出的Microsoft SQL Server全量备份文件上传至对象存储服务,然后恢复到目标数据库。

本小节将详细介绍通全量备份迁移的步骤。

迁移示意图

图1 全量迁移 

迁移流程

图2 迁移流程 

操作步骤

  1. 导出数据库全量备份文件,具体操作请参见 导出数据库备份文件
  2. 将导出的备份文件上传至OBS桶内,具体操作请参见 上传备份文件
  3. 登录 数据复制服务控制台
  4. 单击管理控制台左上角的 ,选择区域和项目。
  5. “所有服务”“服务列表”中,选择“数据库>数据复制服务”,进入数据复制服务信息页面。
  6. 在页面左侧导航栏,选择“备份迁移管理”,单击“创建迁移任务”,进入 “选定备份”页面。
  7. 填写迁移任务信息和备份文件信息,单击“下一步”。

    图3 迁移任务信息 
    表1 迁移任务信息

    参数

    描述

    任务名称

    任务名称在4-64位之间,必须以字母开头,不区分大小写,可以包含字母、数字、中划线或下划线,不能包含其他特殊字符。

    描述

    描述不能超过256位,且不能包含!=<>&'"特殊字符。

    数据库类型

    选择Microsoft SQL Server数据库引擎。

    备份文件来源

    选择自建OBS桶。

    桶名

    选择备份文件所在的桶名,以及该桶目录下已经上传好的全量备份文件。

    说明:
    • Microsoft SQL Server的备份文件需要选择OBS桶目录下“.bak”格式的文件名,且可以同时选择多个备份文件。
    • 该桶的桶名、备份文件名或者路径中不能包含中文。

  8. “选定目标”页面,填选数据库信息后,单击“下一步”。

    图4 全量迁移数据库信息 
    表2 Microsoft SQL Server数据库信息

    参数

    描述

    目标RDS实例名称

    选择目标RDS实例。若没有合适的目标RDS数据库实例,请先创建所需的目标数据库实例,可参见《关系型数据库快速入门》中“SQL Server快速入门”下的“ 购买实例”章节。

    待恢复备份类型

    选择全量备份。

    全量备份指备份文件是完整备份类型的备份。
    说明:

    一次性数据库迁移,则需要停止业务,上传全量备份进行恢复。

    最后一个备份

    当前进行的是一次性全量备份迁移,该参数选择“是”。

    覆盖还原

    覆盖还原是指目标端数据库实例已经存在同名的数据库,备份还原中是否要覆盖已存在的数据库。您可以根据业务需求,选择是否进行覆盖还原。

    说明:

    若选择此项,目标数据库实例中与待还原数据库同名的数据库将会被覆盖,请谨慎操作。

    执行预校验

    备份迁移任务是否执行预校验,默认为

    • :为保证迁移成功,提前识别潜在问题,在恢复前对备份文件的合法性、完整性、连续性、版本兼容性等进行校验。
    • :不执行预校验,迁移速度更快,但需要用户判断备份文件的合法性、完整性、连续性、版本兼容性等问题。

    指定需要恢复的数据库

    您可以选择将全部数据库或部分数据库进行恢复。

    • 全部数据库:恢复备份文件中所有的数据库,不需要输入待还原数据库名称,默认还原备份文件里的所有数据库。
    • 部分数据库:恢复备份文件中的部分数据库,需要输入待还原数据库名称。

      全量备份需要保证指定恢复的数据库始终一致。

  9. “确认信息”页面核对配置详情后,勾选协议,单击“下一步”。
  10. 返回 “备份迁移管理”页面,在任务列表中,观察对应的恢复任务的状态为“恢复中”,恢复成功后,任务状态显示 “成功”


场景二:全量+增量备份迁移

全量+增量备份迁移为数据持续性迁移,需要在完成全量备份恢复的基础上,通过多次增量备份文件恢复,实现迁移过程中业务中断的最小化。一次典型的增量恢复过程,会涉及多次恢复增量备份。每个增量备份恢复均会使目标数据库保持还原中状态,此时数据库不可读写,直至最后一个增量备份恢复完成后,数据库才能变成可用状态。

本小节将以一次完整的全量+增量迁移为示例,详细介绍如何实现最小化业务中断的数据库迁移。

迁移示意图

图1 全量+增量迁移 

迁移流程图

图2 流程图 

首次进行全量迁移

  1. 导出全量备份文件,具体操作请参见 导出数据库备份文件
  2. 将导出的全量备份文件上传至OBS桶内,请参见 上传备份文件
  3. 登录 数据复制服务控制台
  4. 单击管理控制台左上角的 ,选择区域和项目。
  5. “所有服务”“服务列表”中,选择“数据库>数据复制服务”,进入数据复制服务信息页面。
  6. 在页面左侧导航栏,选择“备份迁移管理”,单击“创建迁移任务”,进入 “选定备份”页面。
  7. 填写迁移任务信息和备份文件信息,单击“下一步”。

    图3 迁移任务信息 
    表1 迁移任务信息

    参数

    描述

    任务名称

    任务名称在4-64位之间,必须以字母开头,不区分大小写,可以包含字母、数字、中划线或下划线,不能包含其他特殊字符。

    描述

    描述不能超过256位,且不能包含!=<>&'"特殊字符。

    数据库类型

    选择Microsoft SQL Server数据库引擎。

    备份文件来源

    选择自建OBS桶。

    桶名

    选择备份文件所在的桶名,以及该桶目录下上传好的全量备份文件。

    说明:
    • Microsoft SQL Server的备份文件需要选择OBS桶目录下“.bak”格式的文件名,且可以同时选择多个备份文件。
    • 该桶的桶名、备份文件名或者路径中不能包含中文。

  8. “选定目标”页面,填选数据库信息后,单击“下一步”。

    图4 全量迁移数据库信息 
    表2 Microsoft SQL Server数据库信息

    参数

    描述

    目标RDS实例名称

    选择目标RDS实例。若没有合适的目标RDS数据库实例,请先创建所需的目标数据库实例,可参见《关系型数据库快速入门》中“SQL Server快速入门”下的“ 购买实例”章节。

    待恢复备份类型

    选择全量备份。

    全量备份指备份文件是完整备份类型的备份。

    最后一个备份

    一次典型的增量恢复过程,会涉及多次恢复增量备份。每个增量备份恢复均会使目标数据库保持还原中状态,此时数据库不可读写,直至最后一个增量备份恢复完成后,数据库才能变成可用状态。此后数据库将无法继续进行增量恢复,所以确定为最后一个备份的场景有:

    • 一次性全量迁移,后续将不再进行增量恢复,选择“是”。
    • 增量恢复流程中,最后割接阶段的最后一个增量备份选择“是”。

    当前进行的是全量+增量备份迁移,全量备份恢复后,需要继续进行增量备份恢复,该参数选择“否”。此时目标数据库将会处于恢复中的状态,不可读写。

    覆盖还原

    覆盖还原是指目标端数据库实例已经存在同名的数据库,备份还原中是否要覆盖已存在的数据库。您可以根据业务需求,选择是否进行覆盖还原。

    说明:

    若选择此项,目标数据库实例中与待还原数据库同名的数据库将会被覆盖,请谨慎操作。

    执行预校验

    备份迁移任务是否执行预校验,默认为

    • :为保证迁移成功,提前识别潜在问题,在恢复前对备份文件的合法性、完整性、连续性、版本兼容性等进行校验。
    • :不执行预校验,迁移速度更快,但需要用户判断备份文件的合法性、完整性、连续性、版本兼容性等问题。

    指定需要恢复的数据库

    您可以选择将全部数据库或部分数据库进行恢复。

    • 全部数据库:恢复备份文件中所有的数据库,不需要输入待还原数据库名称,默认还原备份文件里的所有数据库
    • 部分数据库:恢复备份文件中的部分数据库,需要输入待还原数据库名称。

      全量备份需要保证指定恢复的数据库始终一致。

  9. “确认信息”页面核对配置详情后,勾选协议,单击“下一步”。
  10. “备份迁移管理”页面任务列表中,观察对应的恢复任务的状态为“恢复中”,恢复成功后,任务状态显示 “成功”

进行第一次增量迁移

  1. 导出第一次增量备份文件,具体操作请参见 导出数据库备份文件
  2. 将导出的备份文件上传至OBS桶内,请参见 上传备份文件
  3. 返回数据复制服务控制台。
  4. 在页面左侧导航栏,选择“备份迁移管理”,单击“创建迁移任务”,进入 “选定备份”页面,继续创建增量备份迁移任务。
  5. 填写迁移任务信息和备份文件信息,单击“下一步”。

    图5 增量备份 
    表3 迁移任务信息

    参数

    描述

    任务名称

    任务名称在4-64位之间,必须以字母开头,不区分大小写,可以包含字母、数字、中划线或下划线,不能包含其他特殊字符。

    描述

    描述不能超过256位,且不能包含!=<>&'"特殊字符。

    数据库类型

    选择Microsoft SQL Server数据库引擎。

    备份文件来源

    选择自建OBS桶。

    桶名

    选择备份文件所在的桶名,以及该桶目录下上传好的第一次增量备份文件。

    说明:

    Microsoft SQL Server的备份文件需要选择OBS桶目录下“.bak”格式的文件名,且可以同时选择多个备份文件。

  6. “选定目标”页面,填选数据库信息后,单击“下一步”。

    图6 增量迁移数据库信息 
    表4 Microsoft SQL Server数据库信息

    参数

    描述

    目标RDS实例名称

    选择目标RDS实例。

    该目标RDS实例应该与进行全量备份恢复时选择的目标实例一致。

    待恢复备份类型

    选择增量备份。

    增量备份指备份文件是日志类型的备份。

    最后一个备份

    一次典型的增量恢复过程,会涉及多次恢复增量备份。每个增量备份恢复均会使目标数据库保持还原中状态,此时数据库不可读写,直至最后一个增量备份恢复完成后,数据库才能变成可用状态。此后数据库将无法继续进行增量恢复,所以确定为最后一个备份的场景有:

    • 一次性全量迁移,后续将不再进行增量恢复,选择“是”。
    • 增量恢复流程中,最后割接阶段的最后一个增量备份选择“是”。

    当前进行的是第一次增量备份迁移,该参数选择“否”。此时目标数据库将会处于恢复中的状态,不可读写。

    执行预校验

    备份迁移任务是否执行预校验,默认为

    • :为保证迁移成功,提前识别潜在问题,在恢复前对备份文件的合法性、完整性、连续性、版本兼容性等进行校验。
    • :不执行预校验,迁移速度更快,但需要用户判断备份文件的合法性、完整性、连续性、版本兼容性等问题。

    指定需要恢复的数据库

    您可以选择将全部数据库或部分数据库进行恢复。

    • 全部数据库:恢复备份文件中所有的数据库,不需要输入待还原数据库名称,默认还原备份文件里的所有数据库
    • 部分数据库:恢复备份文件中的部分数据库,需要输入待还原数据库名称。

  7. “确认信息”页面核对配置详情后,勾选协议,单击“下一步”。
  8. “备份迁移管理”页面任务列表中,观察对应的恢复任务的状态为“恢复中”,恢复成功后,任务状态显示 “成功”

进行第二次增量迁移

为了实现迁移导致的业务中断时间最小化,需要在业务割接前,进行一次事务日志备份上传与恢复,该操作会将割接前所有的历史数据恢复至目标数据库,很大程度上减少了割接时最后一个事务日志备份的上传与恢复的时间。

  1. 在业务割接前,导出新的增量备份文件,请参见 导出数据库备份文件
  2. 继续执行 24
  3. 填写迁移任务信息和备份文件信息,单击“下一步”。

    图7 增量备份 
    表5 迁移任务信息

    参数

    描述

    任务名称

    任务名称在4-64位之间,必须以字母开头,不区分大小写,可以包含字母、数字、中划线或下划线,不能包含其他特殊字符。

    描述

    描述不能超过256位,且不能包含!<>&'\"特殊字符。

    数据库类型

    选择Microsoft SQL Server数据库引擎。

    备份文件来源

    选择自建OBS桶。

    桶名

    选择备份文件所在的桶名,以及该桶目录下上传好的新的增量备份文件。

    说明:

    Microsoft SQL Server的备份文件需要选择OBS桶目录下“.bak”格式的文件名,且可以同时选择多个备份文件。

  4. 在选定目标页面,填选数据库信息后,单击“下一步”。

    图8 增量迁移数据库信息 
    表6 Microsoft SQL Server数据库信息

    参数

    描述

    目标RDS实例名称

    选择目标RDS实例。该目标RDS实例应该与进行全量备份恢复时选择的目标实例一致。

    待恢复备份类型

    选择增量备份。

    增量备份指备份文件是日志类型的备份。

    最后一个备份

    一次典型的增量恢复过程,会涉及多次恢复增量备份。每个增量备份恢复均会使目标数据库保持还原中状态,此时数据库不可读写,直至最后一个增量备份恢复完成后,数据库才能变成可用状态。此后数据库将无法继续进行增量恢复,所以确定为最后一个备份的场景有:

    • 一次性全量迁移,后续将不再进行增量恢复,选择“是”。
    • 增量恢复流程中,最后割接阶段的最后一个增量备份选择“是”。

    当前进行的是割接业务前的增量备份迁移,该参数选择“否”。此时目标数据库将会处于恢复中的状态,不可读写。

    执行预校验

    备份迁移任务是否执行预校验,默认为

    • :为保证迁移成功,提前识别潜在问题,在恢复前对备份文件的合法性、完整性、连续性、版本兼容性等进行校验。
    • :不执行预校验,迁移速度更快,但需要用户判断备份文件的合法性、完整性、连续性、版本兼容性等问题。

    指定需要恢复的数据库

    您可以选择将全部数据库或部分数据库进行恢复。

    • 全部数据库:恢复备份文件中所有的数据库,不需要输入待还原数据库名称,默认还原备份文件里的所有数据库
    • 部分数据库:恢复备份文件中的部分数据库,需要输入待还原数据库名称。

  5. “确认信息”页面核对配置详情后,勾选协议,单击“下一步”。
  6. “备份迁移管理”页面任务列表中,观察对应的恢复任务的状态为“恢复中”,恢复成功后,任务状态显示 “成功”

检查数据库事务

在进行业务割接之前,需要停止业务,然后确认数据库内无未完成的事务,避免因数据库中存在未完成的事务导致数据丢失问题。

  1. 执行如下语句,判断业务系统IP是否已经断开连接。

    select * from sys.dm_exec_connections;
    • 是,表示所有业务系统ip都已经断开连接,可以进行最后一个增量备份迁移。
    • 否,执行 2

  2. 如果查询到存在未断开的业务系统ip,继续通过如下语句查询未关闭的会话 。

    select * from sys.dm_exec_sessions;

    同时,根据如下语句查看正在执行的事务。

    select * from sys.dm_tran_session_transactions;

    若上述查询结果中存在未关闭的会话和正在执行的事务,请继续执行 3

  3. 需要等到事务执行完成,关闭会话,断开业务系统连接后,才可以进行最后一个增量备份迁移。

进行最后一次增量迁移

经过上面多次增量备份的迁移与恢复,数据库数据已经接近一致了,同时在上一阶段 检查数据库事务的过程中已经将源业务停止,不会再产生新数据,此时为了确保迁移与恢复数据的完整性和一致性,需要进行最后一次增量备份的迁移与恢复。

  1. 导出新的增量备份文件,具体操作请参见 导出数据库备份文件
  2. 继续执行 24
  3. 填写迁移任务信息和备份文件信息,单击“下一步”。

    图9 增量备份 
    表7 迁移任务信息

    参数

    描述

    任务名称

    任务名称在4-64位之间,必须以字母开头,不区分大小写,可以包含字母、数字、中划线或下划线,不能包含其他特殊字符。

    描述

    描述不能超过256位,且不能包含!=<>&'"特殊字符。

    数据库类型

    选择Microsoft SQL Server数据库引擎。

    备份文件来源

    选择自建OBS桶。

    桶名

    选择备份文件所在的桶名,以及该桶目录下上传好的新的增量备份文件。

    说明:

    Microsoft SQL Server的备份文件需要选择OBS桶目录下“.bak”格式的文件名,且可以同时选择多个备份文件。

  4. 在选定目标页面,填选数据库信息后,单击“下一步”。

    图10 增量迁移数据库信息 
    表8 Microsoft SQL Server数据库信息

    参数

    描述

    目标RDS实例名称

    选择目标RDS实例。该目标RDS实例应该与进行全量备份恢复时选择的目标实例一致。

    待恢复备份类型

    选择增量备份。

    增量备份指备份文件是日志类型的备份。

    最后一个备份

    该阶段为停止业务后进行的最后一次增量迁移,该参数选择“是”。

    执行预校验

    备份迁移任务是否执行预校验,默认为

    • :为保证迁移成功,提前识别潜在问题,在恢复前对备份文件的合法性、完整性、连续性、版本兼容性等进行校验。
    • :不执行预校验,迁移速度更快,但需要用户判断备份文件的合法性、完整性、连续性、版本兼容性等问题。

    指定需要恢复的数据库

    您可以选择将全部数据库或部分数据库进行恢复。

    • 全部数据库:恢复备份文件中所有的数据库,不需要输入待还原数据库名称,默认还原备份文件里的所有数据库
    • 部分数据库:恢复备份文件中的部分数据库,需要输入待还原数据库名称。

  5. “确认信息”页面核对配置详情后,勾选协议,单击“下一步”。
  6. “备份迁移管理”页面任务列表中,观察对应的恢复任务的状态为“恢复中”,恢复成功后,任务状态显示 “成功”

手动配置信息

操作场景

目前从本地或虚拟机通过DRS备份迁移功能直接迁移到本云RDS for SQL Server实例上,在迁移完成后还需要针对 Login账号,DBLink,AgentJOB,关键配置进行识别,并手动完成相关同步工作。

Login账号

Login账号即SQL Server的实例级账号,主要用于用户管理用户服务器权限与数据库权限。一个用户通常会有多个该类型账号,用户迁移到RDS for SQL Server实例后,需要手动将自己本地的Login账号同步在实例上进行创建,以下方法将介绍如何在本云RDS for SQL Server实例上创建同名,同密码的Login账号,并进行授权操作。

  1. 通过以下脚本获取本地实例Login账号创建脚本,获取到的脚本可以直接在目标端上执行,以创建同名,同密码的Login账号。

    SELECT 'IF (SUSER_ID('+QUOTENAME(SP.name,'''')+') IS NULL) BEGIN CREATE LOGIN ' +QUOTENAME(SP.name)+
    CASE
    WHEN SP.type_desc = 'SQL_LOGIN' THEN ' WITH PASSWORD = ' +CONVERT(NVARCHAR(MAX),SL.password_hash,1)+ ' HASHED,SID=' +CONVERT(NVARCHAR(MAX),SP.SID,1)+',CHECK_EXPIRATION = '
    + CASE WHEN SL.is_expiration_checked = 1 THEN 'ON' ELSE 'OFF' END +', CHECK_POLICY = ' +CASE WHEN SL.is_policy_checked = 1 THEN 'ON,' ELSE 'OFF,' END
    ELSE ' FROM WINDOWS WITH'
    END
    +' DEFAULT_DATABASE=[' +SP.default_database_name+ '], DEFAULT_LANGUAGE=[' +SP.default_language_name+ '] END;' as CreateLogin
    FROM sys.server_principals AS SP LEFT JOIN sys.sql_logins AS SL
    ON SP.principal_id = SL.principal_id
    WHERE SP.type ='S'
    AND SP.name NOT LIKE '##%##'
    AND SP.name NOT LIKE 'NT AUTHORITY%'
    AND SP.name NOT LIKE 'NT SERVICE%'
    AND SP.name NOT IN ('rdsadmin','rdsbackup','rdsuser','rdsmirror','public')

  2. 执行 1脚本可获取如下执行脚本。

    图1 获取执行脚本 

  3. 复制 2中的执行脚本在目标端直接执行,创建出来的Login账号跟原实例密码一致。
  4. 将新建的Login账号跟用户当前RDS SQL Server实例上的迁移过来的数据库用户权限进行映射(mapping),以保证该账号在当前实例上的权限一致性,执行脚本如下。

    declare @DBName nvarchar(200)
    declare @Login_name nvarchar(200)
    declare @SQL nvarchar(MAX)set @Login_name = 'TestLogin7' //输入Login名称逐个执行declare DBName_Cursor cursor for
    select quotename(name)from sys.databases where  database_id > 4 and state = 0
    and name not like '%$%'
    and name <> 'rdsadmin'
    open DBName_Cursor
    fetch next from DBName_Cursor into @DBName
    WHILE @@FETCH_STATUS= 0
    begin
    SET @SQL='    USE '+ (@DBName)+ '
    if exists(select top 1 1 from sys.sysusers where name = '''+ @Login_Name +''')
    begin
    ALTER USER '+@Login_name+' with login = '+@Login_name+';
    end
    '
    print @SQL
    EXEC (@SQL)
    fetch next from DBName_Cursor into @DBName
    end
    close DBName_Cursor
    deallocate DBName_Cursor
    说明: 

    以上脚本执行完成后,用户即可在自己的新实例上看到同名的登录账号,并且密码跟权限是完全跟本地一致的。

DBLink连接

DBLink连接指SQL Server支持用户通过创建DBLink连接的方式,跟外部实例上的数据库进行交互,这种方式可以极大的方便用户不同实例间,不同数据库类型之间的数据库查询,同步,比较,所以大部分用户都会在本地实例上用到该服务,但是迁移上云后,本地DBLink是不会自动同步到云上实例的,还需要简单的手动进行同步。

  1. 通过微软提供的官方Microsoft SQL Server Management Studio客户端工具连接本地实例与云上实例,同时在 服务器对象 >  链接服务器下找到当前实例的DBLink链接。

    图2 查看DBLink链接 

  2. 选中链接服务器,然后按F7,会自动弹出对象资源管理信息页,在该页面中可以方便你快速的自动创建脚本。

    图3 自动创建脚本 

  3. 在新窗口中,可以看到当前实例上所有DBLink的创建脚本,仅需复制该脚本到目标实例上,并修改@rmtpassword上的密码即可执行创建操作。

    USE [master]
    GO
     
    /****** Object:  LinkedServer [DRS_TEST_REMOTE]    Script Date: 2019/5/25 17:51:50 ******/
    EXEC master.dbo.sp_addlinkedserver @server = N'DRS_TEST_REMOTE', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'DESKTOP-B18JH5T\SQLSERVER2016EE'
    /* For security reasons the linked server remote logins password is changed with ######## */
    EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'DRS_TEST_REMOTE',@useself=N'False',@locallogin=NULL,@rmtuser=N'sa',@rmtpassword='########'GO
    说明: 

    以上脚本为范例,创建的脚本可能包含大量系统默认配置项,但是每个DBLink仅需保留以下两个关键脚本即可执行成功,同时需要注意重新输入账号连接密码。

Agent JOB

Agent JOB又名SQL Server代理服务,可以方便用户快速的在实例上创建定时任务,帮助用户进行日常运维和数据处理工作,用户在本地的JOB需要手动进行脚本迁移。

  1. 通过微软提供的官方Microsoft SQL Server Management Studio客户端工具连接本地实例与云上实例,同时在 SQL Server代理 >  作业下找到当前实例上的所有JOB任务。

    图4 查看作业 

  2. 选择SQL Server代理下的作业,然后按F7,可以在对象资源管理器中看到所有的作业(JOB),全部选中后创建脚本到新窗口。

    图5 创建脚本 

  3. 复制新窗口中的T-SQL创建脚本到新实例上,然后注意修改如下几个关键项,以保障你的创建成功。

    • 注意修改每个JOB上的Ower账号:

      例如:

      @owner_login_name=N'rdsuser'

    • 注意修改每个JOB上的实例名称:

      例如:

      @server=N'实例IP'

      @server_name = N'实例IP'

    说明: 

    新建JOB的Owner账号十分重要,在RDS SQL Server上,仅有该JOB的Owner可以看到实例上自己的JOB,别的Login账号是看不到无法操作的,所以建议所有的JOB Owner尽量是同一个账号方便管理。

关键配置

用户将数据库还原到RDS for SQL Server实例上之后,本地的一些重要配置项也需要进行同步确认,避免影响业务的正常使用。

  1. tempdb:临时数据库的文件配置需要进行同步。

    推荐配置为8个临时文件,注意路径一定要确保在D:\RDSDBDATA\Temp\

    通过在目标数据库端执行如下脚本添加临时数据库的文件配置:

    USE [master]
    GO
    ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdb1', FILENAME = N'D:\RDSDBDATA\Temp\tempdb1.ndf' , SIZE = 65536KB , FILEGROWTH = 65536KB )
    GO
    ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdb2', FILENAME = N'D:\RDSDBDATA\Temp\tempdb2.ndf' , SIZE = 65536KB , FILEGROWTH = 65536KB )
    GO
    ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdb3', FILENAME = N'D:\RDSDBDATA\Temp\tempdb3.ndf' , SIZE = 65536KB , FILEGROWTH = 65536KB )
    GO
    ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdb4', FILENAME = N'D:\RDSDBDATA\Temp\tempdb4.ndf' , SIZE = 65536KB , FILEGROWTH = 65536KB )
    GO
    ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdb5', FILENAME = N'D:\RDSDBDATA\Temp\tempdb5.ndf' , SIZE = 65536KB , FILEGROWTH = 65536KB )
    GO
    ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdb6', FILENAME = N'D:\RDSDBDATA\Temp\tempdb6.ndf' , SIZE = 65536KB , FILEGROWTH = 65536KB )
    GO
    ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdb7', FILENAME = N'D:\RDSDBDATA\Temp\tempdb7.ndf' , SIZE = 65536KB , FILEGROWTH = 65536KB )
    GO
    图6 检查临时文件 
  2. 数据库隔离级别:请确认原实例上数据库的隔离级别是否开启,并同步到RDS SQL Server实例,快照隔离参数有2个,分别是:
    • 读提交快照(Is Read Committed Snapshot On)
    • 允许快照隔离(Allow Snapshot Isolation)

    若原实例上数据库的隔离级别是开启的,您可以通过在目标数据库端执行如下脚本开启数据库的隔离级别:

    USE [DBName]
    GO
    ALTER DATABASE [DBName] SET READ_COMMITTED_SNAPSHOT ON WITH NO_WAIT
    GO
    ALTER DATABASE [DBName] SET ALLOW_SNAPSHOT_ISOLATION ON
    GO
  3. 实例最大并行度:实例最大并行度在RDS for SQL Server实例上默认设置为0,用户也可以根据自己本地原来的设置项进行同步设置,避免不同环境下业务场景出现异常。

    右击本地实例选择属性,在服务器属性弹出框中选择高级,然后在右侧找到最大并行度(max degree of parallelism)设置项,确认本地实例设置值,并同步在目标RDS for SQL Server实例管理的参数组中进行修改。

    图7 查看本地实例最大并行度值 
    登录本云实例控制台,在实例管理页,单击目标实例名称,进入基本信息页签,切换至“参数修改”,搜索最大并行度(max degree of parallelism)并进行修改。
    图8 修改目标RDS for SQL Server实例的最大并行度 
  4. 迁移上云的数据库恢复模式是否为完整(FULL)模式,如果不是需要进行修改。

    右击数据库选择属性,在弹出数据库属性框中选择选项,并在右侧确认该数据库恢复模式为完整(FULL),保证该数据库高可用和备份策略可执行。

    图9 检查数据库恢复模式 
  5. 由于备份信息里记录的是源数据库的统计信息,这些信息过旧且会影响SQL性能,迁移结束后建议启动一次全部用户的数据库,收集一遍统计信息,确保上线新系统性能稳定。








About Me

........................................................................................................................

● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除

● 本文在itpub、博客园、CSDN和个人微 信公众号( DB宝)上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文博客园地址: http://www.cnblogs.com/lhrbest

● 本文CSDN地址: https://blog.csdn.net/lihuarongaini

● 本文pdf版、个人简介及小麦苗云盘地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 数据库笔试面试题库及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA宝典今日头条号地址: http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

........................................................................................................................

● QQ群号: 230161599 、618766405

● 微 信群:可加我微 信(lhrbestxh),我拉大家进群,非诚勿扰

● 联系我请加QQ好友 646634621 ,注明添加缘由

● 于 2020-06-01 06:00 ~ 2020-06-30 24:00 在西安完成

● 最新修改时间:2020-06-01 06:00 ~ 2020-06-30 24:00

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

........................................................................................................................

小麦苗的微店https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

小麦苗出版的数据库类丛书http://blog.itpub.net/26736162/viewspace-2142121/

小麦苗OCP、OCM、高可用网络班http://blog.itpub.net/26736162/viewspace-2148098/

小麦苗腾讯课堂主页https://lhr.ke.qq.com/

........................................................................................................................

请扫描下面的二维码来关注小麦苗的微 信公众号( DB宝)及QQ群(230161599、618766405)、添加小麦苗微 信(lhrbestxh), 学习最实用的数据库技术。

........................................................................................................................

欢迎与我联系

 

 



请使用浏览器的分享功能分享到微信等