云数据库 SQL Server 版支持通过对象存储 TOS 将本地 SQL Server 数据迁移至云上 SQL Server,适用于数据备份、灾难恢复、业务扩展、开发和测试等场景。本文介绍如何通过 TOS 将本地数据库的增量备份数据上传至云数据库 SQL Server 版实例。
云数据库 SQL server 提供两种数据迁移上云的方案,具体如下所示:
方案一:全量备份上云
全量备份上云可以实现一次性数据的迁移上云,但需要长时间的停止业务,将导出的全量备份文件上传至对象存储,然后恢复到目标数据库实例中。
方案二:全量 + 增量备份上云
全量 + 增量备份上云可以持续迁移数据上云,但需要在完成全量备份的基础上,通过多次增量文件恢复,实现迁移过程中业务中断最小化。增量恢复通常需要进行多次增量备份恢复操作。每次恢复后,目标数据库都将处于导入中状态,此时数据库将不可读写。只有完成最后一次增量备份恢复后,数据库才会变为运行中状态。
不同规模的数据库迁移上云场景存在一定的差异,具体如下表所示:
业务中断时长 | 需要迁移的数据库大小(GiB) | 推荐方案 |
---|---|---|
30 min ~ 2 h | < 100 GiB | 方案一 |
≥ 100 GiB | 方案二 | |
2 h ~ 4 h | < 200 GiB | 方案一 |
≥ 200 GiB | 方案二 | |
4 h ~ 8 h | < 500 GiB | 方案一 |
≥ 500 GiB | 方案二 |
说明
如果业务可以接受任意中断时长,则适用于方案一。
如果业务无法接受任意中断时长,则不适用于本文档介绍的迁移方案。
本示例以迁移 100GiB 的数据库,从本地数据中心全量 + 增量的迁移过程为例介绍迁移流程,具体如下表所示:
上云阶段 | 步骤 | 说明 |
---|---|---|
全量阶段 | 准备工作 | 准备工作包括:
|
数据库完全备份 | 开始对线下数据库做 FULL Backup,耗时约 30 分钟。 压缩备份按照 50% 比例计算,备份完成后,备份文件大小约为 50GiB。 | |
上传完全备份至 TOS | 上传 50GiB 备份文件到 TOS Bucket,按公网 10MB/s,耗时约 2 小时。 | |
上云完全备份文件 | 开始在云数据库 SQL Server 版控制台恢复 FULL Backup 文件,耗时约 1 小时。 | |
增量阶段 | 日志备份并上传 | 开始数据库增量 LOG 备份上云,完成 LOG 备份并上传至对象存储 TOS,每个 LOG 文件不超过 200MB,耗时约 20 分钟。 |
上云日志备份文件 | 完成 LOG Backup 恢复上云,耗时约 10 分钟。 | |
重复以上两个步骤 | 重复日志备份上传和上云日志备份文件,不断 Backup LOG、上传到对象存储 TOS、增量上云 LOG 备份文件,确保最后一个 Backup LOG 文件尽量小(200MB 以下)。停止本地应用对数据库的写入操作,再做一个 LOG Backup,最后一次增量上云。 | |
打开数据库 | 打开数据库 | 完成了最后一个 LOG Backup 文件增量上云操作,耗时 30 分钟,开始将数据库上线。 |
上云完成 | 完成数据库上线,如果选择异步执行数据库控制台操作,上线速度快,耗时 1 分钟。 |
说明
在进行增量迁移上云时,您只需要在最后一个 LOG Backup 之前停止应用写入即可,因此中断应用的时间比较短。本示例最后一个 LOG Backup 增量上云的时间约为 31 分钟。
一次完成的备份迁移阶段如下表所示:
阶段 | 步骤 | 描述 |
---|---|---|
① | 导出数据库全量备份文件和增量备份文件 | 该阶段主要耗时为生成数据库备份文件所需的时间,通常取决于源数据库的配置与大小,具体时间需要您根据源数据库的配置进行预估。 |
② | 上传备份文件至对象存储 TOS 桶 | 对象存储 TOS 不限速,如果您是通过公网访问对象存储 TOS 时,上传下载速度受公网带宽限制。例如:公网带宽为 10MB/s 时,在没有其他因素影响网络的情况下上传的速度为 10MB/s。 |
③ | 通过对象存储 TOS 恢复上云任务全量恢复至目标端云数据 SQL Server 版 | 恢复速度通常约为 100GiB/h。 |
④ | 通过 TOS 恢复上云任务增量恢复至目标端云数据 SQL Server 版 | 需要循环往复,将本地产生的增量备份不断上传恢复至目标实例,恢复速度通常约为 100GiB/h。 |
迁移时长 = 阶段 ① 耗时 + 阶段 ② 耗时 + 阶段 ③ 耗时 + 阶段 ④ 耗时
业务中断时长 = 进行最后一次增量备份 + 上传对象存储 TOS + 创建对象存储 TOS 恢复任务
仅支持将低版本的备份文件迁移至高版本数据库实例,不支持将高版本备份文件迁移至低版本。版本限制如下所示:
数据库商用版本:建议从低版本到高版本,例如支持从 Web 版到标准版到企业版。
数据库兼容版本:例如仅支持从 SQL Server 2012 迁移到 SQL Server 2019,不支持从 SQL Server 2012 迁移至 SQL Server 2019。
备份文件名不能包含特殊字符,特殊字符包括 \
、/
、:
、*
、?
、"
、<
、>
、|
、!
、@
、#
、$
、%
、^
、&
、*
、(
、)
、_
、+
、-
和 =
。。
在备份数据恢复上云任务没有完成前,请不要删除对象存储 TOS 上的备份文件,否则会导致迁移上云失败。
备份文件的后缀名必须为 bak
、diff
、trn
或 log
,具体如下所示:
bak
:表示全量备份文件。
diff
:表示差异备份文件。
trn
或 log
:表示事务日志备份文件。
说明
如果备份文件不是上述文件后缀,那么系统可能无法正确识别该文件的类型并影响后续操作。
在进行生产环境数据库迁移前,建议您先在开发或测试环境进行实际的测试评估。如果需要在生产环境中运行评估,建议在业务低峰期测试,降低业务影响。
云数据库 SQL Server 版数据库迁移,适用于以下场景:
数据备份和灾难恢复:云数据库提供了高效的备份和灾难恢复解决方案。在硬件故障或数据被意外损坏时,可以从云备份中恢复数据。
业务扩展:如果您的业务正在扩展,需要更多的服务器和存储资源来处理数据需求,那么将数据迁移到云数据库可以降低硬件和运维成本,同时云数据库可以根据业务需求进行弹性扩展。
实时业务:云数据库具有高效、快速的处理能力,可以支持大量并发用户的实时访问和查询,非常适合需要实时业务支持的场景。
开发和测试环境:云数据库提供了一个独立的,易于构建和管理的环境,非常适合用作开发和测试环境。
类别 | 说明 |
---|---|
对象存储 TOS |
|
云数据库 SQL Server 版 |
|
其他 |
|
在增量数据上云前,您需要先进行一次全量备份数据的上云。详细操作,请参见上传本地数据库的全量备份数据至云数据库 SQL Server 版实例。
说明
在备份本地文件前,需确保已停止数据的写入,由于新写入的数据不会被备份,导致数据不一致。
在本地 SQL Server 数据库的查询编辑器中,执行以下命令备份差异和日志数据:
差异备份
BACKUP DATABASE [<db_name>] TO DISK = N'<backup location, e.g. E:\backup\dbname_diff.bak' WITH DIFFERENTIAL, NOFORMAT, NOINIT, NAME = N'<dbname>-Diff Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
日志备份
BACKUP LOG [<db_name>] TO DISK = N'<backup location, e.g. E:\backup\dbname_log.bak' WITH NOFORMAT, NOINIT, NAME = N'<dbname>-Log Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
修改备份文件的名称为:数据库名_备份类型_时间戳.bak
。
创建存储桶
说明
如果对象存储 TOS 中已经创建了存储桶,那么请检查存储桶是否满足以下要求:
是否和云数据库 SQL Server 版实例在一个地域下。
存储桶的桶策略是否为公共读。
存储类型是否是标准存储。
未开启服务端加密。
登录对象存储控制台。
在左侧导航栏单击桶列表,在页面左上方单击创建桶。
设置存储桶参数,部分参数如下表,然后单击确定。
参数 | 说明 |
---|---|
区域 | 需和云数据库 SQL Server 版的实例在同一个地域下。 |
桶策略 | 需设置为公共读。即允许所有人都可以对公共读权限的存储桶进行读取操作。 |
默认存储类型 | 需设置为标准存储。该存储类型适用于频繁被访问。 |
服务端加密 | 需设置为无,不加密。 |
上传数据库备份文件
方式一:(推荐)通过 TOS Browser 上传文件
登录 TOS Browser。关于如何获取 AK 和 SK 的操作步骤,请参见获取 Access Key。
在桶列表页面,单击目标 Bucket。
在目标 Bucket 页面,单击上传文件。
在上传文件控制面板,上传文件后,单击确定。
方式二:通过对象存储 TOS 控制台上传文件
登录对象存储控制台。
在左侧导航栏,单击桶列表。
在桶列表页面,单击目标桶名称。
在文件列表页面,单击上传文件。
在上传文件页面,上传文件后,单击确定。
说明
完成全量备份数据的上传后,您需要上传差异备份数据或日志备份数据上传。同时,在上传差异或日志备份数据库时,需注意以下事项:
在存在多个日志备份数据时,需逐个创建任务。
建议每个备份文件的大小不超过 500MB,最好控制在 200MB 以内,这样可以减少增量上云的时间。
在最后一个日志备份上传生成前,需停止本地数据库所有的写入操作,否则可能会导致数据不一致等问题。
在顶部菜单栏的左上角,选择实例所属的地域。
在左侧导航栏,单击 TOS 备份恢复列表,进入 TOS 备份恢复列表页。
在 TOS 备份恢复列表页,单击创建 TOS 备份文件恢复任务,进入创建 TOS 备份文件恢复任务页。
在 创建 TOS 备份文件恢复任务页,设置以下参数。
参数 | 说明 |
---|---|
恢复方式 | 默认为自建 TOS 桶且不支持选择。 |
桶名 | 存储备份文件的 TOS 桶的名称。 |
选择备份 | 必填。选择待恢复的备份文件。 说明 仅支持前缀搜索。如果备份文件存放于桶内的某一级文件夹中,则需要逐级输入该文件的路径。最多显示 20 条匹配结果。 |
上云方案 | 可选择打开数据库或不打开数据库。
|
恢复类型 | 选择差异恢复或日志恢复。 |
是否覆盖还原 | 当前仅支持选择否。 |
选择实例 | 选择要恢复到的目标实例。可通过实例名称或实例 ID 进行搜索。 |
待恢复数据库名称 | 填写要恢复的数据库名称,必须与备份文件中数据库名称一致。每次最多可以恢复 20 个数据库。 说明 在恢复类型选择默认恢复时,无需配置该参数。 |
您在完成备份上云操作后,可以查看 TOS 备份恢复任务。具体操作,请参见查看 TOS 备份恢复任务。