- 文档首页
云数据库 SQL Server 版
最佳实践
通过 TOS 上传本地数据库的全量备份数据至云数据库 SQL Server 版实例
最佳实践
通过 TOS 上传本地数据库的全量备份数据至云数据库 SQL Server 版实例
通过 TOS 上传本地数据库的全量备份数据至云数据库 SQL Server 版实例
云数据库 SQL Server 版支持通过对象存储 TOS 将本地 SQL Server 数据迁移至云上 SQL Server,适用于数据备份、灾难恢复、业务扩展、开发和测试等场景。本文介绍如何通过 TOS 将本地数据库的全量备份数据上传至云数据库 SQL Server 版实例。
背景信息
迁移方案
云数据库 SQL server 提供两种数据迁移上云的方案,具体如下所示:
- 全量备份上云可以实现一次性数据的迁移上云,但需要长时间的停止业务,将导出的全量备份文件上传至对象存储,然后恢复到目标数据库实例中。
- 全量 + 增量备份上云可以持续迁移数据上云,但需要在完成全量备份的基础上,通过多次增量文件恢复,实现迁移过程中业务中断最小化。增量恢复通常需要进行多次增量备份恢复操作。每次恢复后,目标数据库都将处于导入中状态,此时数据库将不可读写。只有完成最后一次增量备份恢复后,数据库才会变为运行中状态。
不同规模的数据库迁移上云场景存在一定的差异,具体如下表所示:
说明
- 如果业务无法接受任意中断时长,则不适用于本文档介绍的迁移方案。
迁移流程
本示例以迁移 100 GiB 的数据库,从本地数据中心全量 + 增量的迁移过程为例介绍迁移流程,具体如下表所示:
说明
在进行全量备份迁移上云时,本示例全量备份迁移 100 GiB 的数据上云需要中断应用的时间约为 3 小时 31 分钟。
迁移时间
一次完成的备份迁移阶段如下表所示:
- 迁移时长 = 阶段 ① 耗时 + 阶段 ② 耗时 + 阶段 ③ 耗时
- 业务中断时长 = 上传对象存储 TOS + 创建对象存储 TOS 恢复任务
注意事项
- 仅支持将低版本的备份文件迁移至高版本数据库实例,不支持将高版本备份文件迁移至低版本。版本限制如下所示:
- 数据库商用版本:建议从低版本到高版本,例如支持从 Web 版到标准版到企业版。
- 数据库兼容版本:例如仅支持从 SQL Server 2012 迁移到 SQL Server 2019,不支持从 SQL Server 2019 迁移至 SQL Server 2012。
- 备份文件名不能包含特殊字符,特殊字符包括 \、/、:、*、?、"、<、>、|、!、@、#、$、%、^、&、*、(、)、_、+、- 和 =。
- 在备份数据恢复上云任务没有完成前,请不要删除对象存储 TOS 上的备份文件,否则会导致迁移上云失败。
- 备份文件的后缀名必须为 bak、diff、trn 或 log,具体如下所示:
说明
如果备份文件的后缀不是上述格式,那么系统可能无法正确识别该文件类型,从而影响后续操作。
- 在进行生产环境数据库迁移前,建议您先在开发或测试环境进行实际的测试评估。如果需要在生产环境中运行评估,建议在业务低峰期测试,降低业务影响。
适用场景
云数据库 SQL Server 版数据库迁移,适用于以下场景:
- 数据备份和灾难恢复:云数据库提供了高效的备份和灾难恢复解决方案。在硬件故障或数据被意外损坏时,可以从云备份中恢复数据。
- 业务扩展:如果您的业务正在扩展,需要更多的服务器和存储资源来处理数据需求,那么将数据迁移到云数据库可以降低硬件和运维成本,同时云数据库可以根据业务需求进行弹性扩展。
- 实时业务:云数据库具有高效、快速的处理能力,可以支持大量并发用户的实时访问和查询,非常适合需要实时业务支持的场景。
- 开发和测试环境:云数据库提供了一个独立的,易于构建和管理的环境,非常适合用作开发和测试环境。
前提条件
步骤一:备份本地文件
说明
在备份本地文件前,需确保已停止数据的写入,由于新写入的数据不会被备份,导致数据不一致。
- 在本地 SQL Server 数据库的查询编辑器中,执行以下命令备份全量数据:
- 修改备份文件的名称为:数据库名_备份类型_时间戳.bak。
步骤二:上传数据库备份文件
- 在左侧导航栏单击桶列表,在页面左上方单击创建桶。
- 方式一:(推荐)通过 TOS Browser 上传文件
步骤三:创建全量数据上云任务
- 在左侧导航栏,单击 TOS 备份恢复列表,进入 TOS 备份恢复列表页。
- 在 TOS 备份恢复列表页,单击创建 TOS 备份文件恢复任务,进入创建 TOS 备份文件恢复任务页。
- 在 创建 TOS 备份文件恢复任务页,设置以下参数。
步骤四:查看备份上云记录
步骤五:迁移完成后配置云上实例的参数
通过 TOS 完成本地数据上云后,您还可以通过以下实践来配置 Login 账号、DBLink 连接、Agent Job 来保持和本地体验一致。
创建 Login 账号
Login 账号是云数据库 SQL Server 版的实例级账号,主要用于管理您的服务器和数据库权限。您可以通过以下方式创建和本地相同密码和权限的 Login 账号。具体操作如下所示:
说明
若您的账号拥有 SA 权限,建议优先使用方式一。采用该方式时,后续线下同实例的数据库通过 TOS 上云后,相关权限会自动关联至对应的 Login 账号;若您的账号无 SA 权限,则推荐使用方式二。
- 方式一:(推荐方式)通过 T-SQL 创建 Login 账号
说明
适用场景:账号具备 SA 权限,全量回放源端的所有 SQL Login(含密码和默认语言)。
- 登录本地 IDC 实例, 以 SA 权限执行以下脚本命令获取本地实例 Login 账号的创建脚本:
- 通过 SSMS 或数据库工作台 DBW 连接云上实例。详细操作,请参见连接实例。
- 执行步骤一的输出,创建和本地实例相同的 Login 账号。
- 方式二:通过 T-SQL 创建 Login 账号
说明
- 适用场景:账号无 SA 权限,对单个数据库回放源端的 SQL Login(不含密码和默认语言)。
- 使用限制:需在源端对数据库有 db_owner 权限。
- 登录本地 IDC 实例, 执行以下脚本命令获取本地实例 Login 账号的创建脚本:
- 通过 SSMS 或数据库工作台 DBW 连接云上实例。详细操作,请参见连接实例。
- 执行步骤一的输出,创建和本地实例相同的 Login 账号。
说明
- 适用场景:已在火山引擎上的实例创建 Login 账号,但和源库的权限不一致。
- 创建和本地实例相同的 Login 账号。详细操作,请参见创建账号。
- 通过 SSMS 或数据库工作台 DBW 连接云上实例。详细操作,请参见连接实例。
- 在目标实例中执行以下脚本命令,关联数据库的用户和实例级别的 Login,以确保该账号在当前数据库上的权限和本地数据库的账号权限一致。
说明
完成以上操作后,您在云上的实例账号对当前数据库的权限和在线下是相同。
创建 DBLink 连接
SQL Server 支持通过 DBLink 连接的方式跟外部实例上的数据进行交互,该方式可以帮助您在不同实例间、不同数据库类型的实例间进行数据查询、同步和比较。如果您在本地实例中用到了该服务,在迁移完成后,本地的 DBLink 连接不会自动同步到云上实例中,因此您还需要根据以下提示进行手动同步:
- 方式一:通过 T-SQL 创建 DBLink 连接
- 在本地数据库中执行以下命令获取 DBLink 的名称、数据源等信息。
- 在云上数据库实例中执行上一步骤获取的配置创建相同的 DBLink,示例如下:
- 方式一:通过 SSMS 连接实例创建 DBLink 连接
- 在左侧导航栏,选择 Server Objects > Linked Servers。
- 找到目标 DBLink 连接,直接按 Fn+F7。
- 在弹出的新窗口中,创建脚本复制当前实例上所有的 DBLink 连接。
- 在左侧导航栏,选择 Server Objects > Linked Servers。
- 将在本地数据库实例中复制的 DBLink 脚本文件复制到云上数据库实例中。
- 修改 @rmtpassword 上的密码并执行脚本命令,脚本命令的示例如下:
- 创建的脚本可能包含大量系统默认配置项,但是每个 DBLink 连接仅需保留以下两个关键脚本即可执行成功,同时需要注意重新输入账号连接密码。
创建 Agent Job 连接
Agent Job 又名 SQL Server 代理服务,可以方便您在实例中快速创建定时任务,进行日常运维和数据处理,因此您需要将本地实例的 Jobs 迁移到云上实例中。具体操作如下所示:
注意
新建 Job 的 Owner 账号十分重要,在云数据库 SQL Server 版上,仅有该 Job 的 Owner 可以看到实例上自己的 Job,别的 Login 账号是看不到且无法操作的,因此建议所有的 Job Owner 是同一个账号方便管理。
- 在左侧导航栏,选择 SQL Server Agent > Jobs。
-
- 按 Fn+F7,在 Object Explorer Details 页面,选中所有 Job,右键选择 Script Job as > Create To > New Query Window。
-
- 在弹出的窗口中复制 T-SQL 并创建脚本,在复制过程中需要关注以下信息:
- 修改每个 Job 上的 Owner 账号,例如:@owner_login_name=N'veyun_user'。
- 修改每个 Job 上的实例名称,例如:@server=N'实例IP'、@server_name = N'实例IP'。
- 在左侧导航栏,选择 SQL Server Agent > Jobs。
-
- 按 Fn+F7,在 Object Explorer Details 页面,选中所有 Job,右键选择 Script Job as > Create To > New Query Window。
-
- 在弹出的窗口中复制本地实例中获取的 Jobs 脚本命令。
最近更新时间:2026.10.23 18:39:49