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