操作场景
腾讯云数据库 SQL Server 支持用户通过 COS 文件来进行数据迁移,本文介绍的迁移方式适用于其他云厂商或自建 SQL Server 数据库同版本迁移至腾讯云数据库 SQL Server 的场景。
注意:
迁移之前需保证目的实例 SQL Server 版本与源实例版本相同。
迁移的 bak 文件需保证每个 bak 文件只包含一个库。
迁移库不能与云数据库 SQL Server 有库名重复。
全量备份迁移
准备备份文件
准备全量备份文件的方式有如下两种:
停机全量备份
用户服务器停机,停机后在其他云产商或自建 SQL Server 数据库进行完整备份,并导出备份文件(备份文件后缀必须是
.bak
格式),直至迁移操作完成需保持停机状态。选用停机全量备份迁移方式时,不需要再执行增量备份迁移。
不停机全量备份
说明:
备份文件名称不可自定义,需要按照脚本中的命名规范。
全量备份执行完恢复后,需继续执行增量备份恢复,至源实例和目的实例数据一致。
文件名中包含 1full1 为全量备份。
增量恢复场景下,在上传备份和迁移数据后,且未进行最后一次增量备份恢复时,数据库会处于还原中,此时数据库无法访问,是正常情况,需继续进行至最后一份增量备份恢复,数据库才能正常访问。
用户服务器不停机,在其他云产商或自建 SQL Server 数据库进行备份,并导出备份文件。
---不需要增量恢复backup database db to disk='d:\\db.bak' with init---需要增量恢复declare @dbname varchar(100)declare @localtime varchar(20)declare @str varchar(max)set @dbname='db'set @localtime =replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')set @str='BACKUP DATABASE [' + @dbname + '] TO DISK = N''d:\\dbbak\\' + @dbname + '_' + @localtime + '_1full1_1noreconvery1.bak'' WITH INIT'exec(@str)go
上传备份至 COS
上传备份至 COS
1. 登录 COS 控制台。
2. 在左侧导航选择存储桶列表页,单击创建存储桶。
3. 在弹出的创建对话框,配置对应信息,单击确定。
存储桶地域需要和迁移目标的 SQL Server 实例地域相同。
COS 迁移不支持跨地域。
4. 返回存储桶列表,单击存储桶名或操作列的配置管理。
5. 选择文件列表页,单击上传文件,可以选择单个或多个文件上传。
6. 文件上传完后,可单击存储桶名,在基础配置的基本信息中获取对象地址。
![](https://qcloudimg.tencent-cloud.cn/image/document/0d51d879b3014a1149eaffe689fa4c52.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/0d51d879b3014a1149eaffe689fa4c52.png)
通过 COS 源文件迁移数据
通过 COS 源文件迁移数据
1. 登录 云数据库 SQL Server 控制台。
2. 在左侧导航选择数据迁移旧版,单击创建任务,创建新的离线迁移任务。
任务名称:用户自定义。
源实例类型:选择 SQL Server 备份还原(COS方式)。
地域:源库信息的地域必须和 COS 源文件连接的地域相同。
COS 源文件链接:上传源文件到 COS 后可查看文件信息,获取 COS 对象地址。
目标库类型和目标库地域:根据源库的配置由系统自动生成。
实例 ID:选择需要迁入的实例,只能选择同一地域下的实例。
重命名数据库:选择是否开启,开启后需输入新的数据库名。
注意:
开启后,将重置备份文件中原来的数据库名,恢复至云上数据库后将其指定为新的数据库名。(使用前提:备份的 bak 文件中仅能包含一个库)。
![](https://qcloudimg.tencent-cloud.cn/image/document/e42f16996513ea1df2fe658e2468d8a5.png)
3. 配置完成后,单击下一步。
4. 选择类型和数据库设置目前支持调整,单击创建任务。
5. 返回任务列表,此时任务状态为初始化,选择并在列表上方单击启动同步任务。
6. 数据同步完成(即进度条为100%)后,需要在列表上方手动单击完成,同步进程才会结束,根据状态查看迁移是否成功。
任务状态变为任务成功时,表示数据迁移成功。
任务状态变为任务失败时,表示数据迁移失败,请查看失败信息,并根据失败信息修正后重新迁移。
增量备份迁移
准备备份文件
说明:
备份文件名称不可自定义,需要按照脚本中的命名规范。
文件名中包含 1diff1 为增量备份。
(可选)有多份增量备份文件时,除最后一次以外的增量备份文件生成方式如下,需按照增量备份先后顺序进行“上传备份和迁移数据”,否则会迁移失败。
注意:
执行“生成备份、上传备份和迁移数据”操作后,数据库会处于还原中,此时数据库无法访问,是正常情况,您可重复进行本操作,直至最后一次备份上传和迁移,再执行下一步(即“服务器停机后进行最后一份增量备份”)。
declare @dbname varchar(100)declare @localtime varchar(20)declare @str varchar(max)set @dbname='db'set @localtime =replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')set @str='BACKUP DATABASE [' + @dbname + '] TO DISK = N''d:\\dbbak\\' + @dbname + '_' + @localtime + '_1diff1_1noreconvery1.bak'' WITH DIFFERENTIAL, NOFORMAT, INIT'exec(@str)go
用户服务器停机,停机后进行一份增量备份,导出备份文件,并进行“上传备份和迁移数据”。
注意:
此操作执行后,数据库才能正常访问。
declare @dbname varchar(100)declare @localtime varchar(20)declare @str varchar(max)set @dbname='db'set @localtime =replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')set @str='BACKUP DATABASE [' + @dbname + '] TO DISK = N''d:\\dbbak\\' + @dbname + '_' + @localtime + '_1diff1_1reconvery1.bak'' WITH DIFFERENTIAL, NOFORMAT, INIT'exec(@str)go
上传备份和迁移数据
1. 准备好备份文件后,请参见 上传备份至 COS 和 通过 COS 源文件迁移数据 执行后续上传备份和迁移数据操作。
2. 导入最终增量备份(即包含
_1diff1_1reconvery1
的 .bak 文件)后,目的实例状态由只读变为可使用,用户可切换业务到腾讯云数据库 SQL Server 实例。相关 API
API | 描述 |
接口(CreateMigration)作用是创建一个迁移任务。 | |
接口(ModifyMigration)可以修改已有的迁移任务信息。 | |
接口(StartMigrationCheck)的作用是启动一个迁移前的校验任务,适用于迁移源的类型为 TencentDB for SQLServer 的迁移方式。 | |
接口(RunMigration)用于启动迁移任务,开始迁移。 | |
接口(StopMigration)作用是中止一个迁移任务。 | |
接口(CompleteMigration)作用是完成一个迁移任务。 | |
接口(DeleteMigration)用于删除迁移任务。 | |
接口(DescribeMigrationDetail)用于查询迁移任务的详细情况。 | |
接口(DescribeMigrations)根据输入的限定条件,查询符合条件的迁移任务列表。 | |
接口(DescribeMigrationDatabases)的作用是查询待迁移数据库列表。 | |
接口(QueryMigrationCheckProcess)的作用是查询迁移检查任务的进度,适用于迁移源的类型为 TencentDB for SQLServer 的迁移方式。 |