自建sqlserver迁移到aliyun的rds for sqlserver实战

news2024/10/7 10:16:20

大家好,在实际中有些客户有上云的需求,需要把线下自建的sqlserver迁移至aliyun的rds for sqlserver。大家第一时间想到的是用dts工具,根据工作经验,DTS迁移mysql类的数据库比较成熟,但是迁移sqlserver之类会有问题。首先面临的一个问题就是源库日志膨胀的问题,也就是说是迁移过程中,源库的日志是不能截断,否则日志序列会被重置,迁移任务失败。那有没有其他的方案呢?下面分享一下通过物理备份还原的方式迁移上云。

一、方案

1.1 版本的选择

SQLSERVER版本的兼容原则,是高版本向下兼容低版本,在aliyun上选择rds for sqlserver版本时,目标版本要等于或大于源版本。目前阿里云上支持的rds for sqlserver版本如下:

1.2 脚本备份源库

DECLARE @name NVARCHAR(256) -- database name  
DECLARE @path NVARCHAR(512) -- path for backup files  
DECLARE @fileName NVARCHAR(512) -- filename for backup  
DECLARE @fileDate NVARCHAR(40) -- used for file name
 
-- specify database backup directory
SET @path = 'E:\backup\'  
 
-- specify filename format
SELECT @fileDate = CONVERT(NVARCHAR(20),GETDATE(),112) 
 
DECLARE db_cursor CURSOR READ_ONLY FOR  
SELECT name 
FROM master.sys.databases 
WHERE name NOT IN ('master','model','msdb','tempdb')  -- exclude these databases
AND state = 0 -- database is online
AND is_in_standby = 0 -- database is not read only for log shipping
 
OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @name   
 
WHILE @@FETCH_STATUS = 0   
BEGIN   
   SET @fileName = @path + @name + '.BAK'  
   BACKUP DATABASE @name TO DISK = @fileName  WITH STATS=10, COMPRESSION
 
   FETCH NEXT FROM db_cursor INTO @name   
END   
 
CLOSE db_cursor   
DEALLOCATE db_cursor

1.3 创建OSS存储空间

创建oss存储空间的目的是让rds for sqlserver从oss的bucket读取备份文件,以供恢复使用。

   1)登录OSS管理控制台。

   2)单击Bucket列表,然后单击创建Bucket。

   3)配置如下关键参数,其他参数可以保持默认。

   4)说明:创建的存储空间仅用于本次数据上云,且上云后不再使用,因此只需配置关键参数即可,为避免数据泄露及产生相关费用,上云完成后请及时删除。

参数

说明

取值示例

Bucket 名称

存储空间名称,全局唯一,设置后无法修改。命名规则:只能包括小写字母、数字和短划线(-)。必须以小写字母或者数字开头和结尾。长度必须在3~63字符之间。

migratetest

地域

Bucket所属的地域,如果您通过ECS内网上传数据至Bucket中,且通过内网将数据恢复至RDS中,则需要三者地域保持一致。

华东1(杭州)

本地数据库备份完成后,使用ossbrowser工具将备份文件上传到您的OSS Bucket中:

   5)下载ossbrowser,以Windows x64操作系统为例,解压下载的oss-browser-win32-x64.zip压缩包,双击运行oss-browser.exe应用程序。

   6)使用AK登录方式,配置参数AccessKeyId和AccessKeySecret,其他参数保持默认,然后单击登入。

   7)单击,选择需要上传的备份文件,然后单击打开,即可将本地文件上传至OSS中。

1.4 创建数据上云任务

   1)访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

   2)在左侧菜单栏中选择备份恢复。

   3)单击页面上方的OSS备份数据恢复上云。

   4)在数据导入向导页面,单击两次下一步,进入数据导入步骤。

   5)设置如下参数:

配置项

说明

数据库名

目标数据库名称,即数据导入RDS SQL Server实例之后的数据库名,必须和备份中的数据库名不同。说明 数据库名称需要符合SQL Server官方限制。

OSS Bucket

选择备份文件所在的OSS Bucket。

OSS子文件夹名

备份文件所在的子文件夹名字。

OSS文件列表

单击右侧按钮,可以按照备份文件名前缀模糊查找,会展示文件名、文件大小和更新时间。请选择需要上云的备份文件。

上云方案

打开数据库(只有一个全量备份文件):全量上云,适合仅有一个完全备份文件上云的场景。本操作选择打开数据库,此时CreateMigrateTask中的BackupMode = FULL并且IsOnlineDB = True。不打开数据库(还有差异备份或日志文件):增量上云,适合有完全备份文件加上日志备份(或者差异备份文件)上云的场景,此时CreateMigrateTask中的BackupMode = UPDF 并且IsOnlineDB = False。

一致性检查方式

异步执行DBCC:在打开数据库的时候系统不做DBCC CheckDB,会在打开数据库任务结束以后,异步执行DBCC CheckDB操作,以此来节约打开数据库操作的时间开销(数据库比较大,DBCC CheckDB非常耗时),减少您的业务停机时间。如果您对业务停机时间要求非常敏感,且不关心DBCC CheckDB结果,建议使用异步执行DBCC。此时CreateMigrateTask 中的CheckDBMode = AsyncExecuteDBCheck。同步执行DBCC:相对于异步执行DBCC,有的用户非常关心DBCC CheckDB的结果,以此来找出用户线下数据库数据一致性错误。此时,建议您选择同步执行DBCC,影响是会拉长打开数据库的时间。此时CreateMigrateTask 中的CheckDBMode = SyncExecuteDBCheck。

   6)单击确定。

请耐心等待上云任务完成,可以单击刷新查看数据上云任务最新状态。

二、常见问题 

  • 空间不足

错误信息:Not Enough Disk Space for restoring, space left (xxx MB) < needed (xxx MB).

错误原因:RDS实例剩余空间不满足备份文件上云所需要的最小空间要求。

解决方法:升级实例空间。

  • 权限不足

错误信息:Your RDS doesn’t have any init account yet, please create one and grant permissions on RDS console to this migrated database (XXX).

错误原因:RDS实例不存在高权限账号,OSS备份数据上云任务不知道需要为哪个用户授权,但是备份文件已经成功还原到目标实例上,所以任务状态是成功的。

解决方法:创建高权限账号

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/767683.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二本逆互联网大厂! 高薪就业

【二本屌丝也能逆袭&#xff01;毕业四年从小公司到大厂之路&#xff0c;这就是我的逆袭&#x1f680;✨】 大家对如何逆袭互联网大厂而感到惊讶&#xff1f;作为计算机专业的大学生&#xff0c;想必你对于进入互联网行业有很多的期望和追求。但是面对激烈的竞争和复杂的招聘要…

wasserstein distance简单记录

W a s s e r s t e i n Wasserstein Wasserstein d i s t a n c e distance distance一般被称为推土距离&#xff0c;假设有两个分布 P ( x ) P(x) P(x)和 Q ( y ) Q(y) Q(y) &#xff0c;两个分布间的推土距离为&#xff1a; W ( P , Q ) inf ⁡ γ ∈ Π ( P , Q ) E ( x ,…

深度学习trick

本次Tricks主要面向于深度学习中计算机视觉方向的研究&#xff0c;分为数据增广方法、训练技巧&#xff0c;参数调节这三个方面进行深入的分析。内容有一部分是基于openmmlab的mmdet和mmseg两个框架上的成熟应用案例进行详细阐述。 首先是数据增广的tricks&#xff1a; 0、Fli…

【Java基础教程】(十八)包及访问权限篇 · 下:Java编程中的权限控制修饰符、单例设计模式 (Singleton)和多例设计模式的综合探析~

Java基础教程之包及访问权限 下 本节学习目标1️⃣ 访问控制权限2️⃣ 命名规范3️⃣ 单例设计模式 (Singleton)4️⃣ 多例设计模式 本节学习目标 掌握Java 中的4种访问权限&#xff1b;掌握Java 语言的命名规范&#xff1b;掌握单例设计模式与多例设计模式的定义结构&#x…

【HISI IC萌新虚拟项目】cpu_if的接口cpu_agent utils搭建

关于整个虚拟项目,请参考: 【HISI IC萌新虚拟项目】Package Process Unit项目全流程目录_尼德兰的喵的博客-CSDN博客 前言 spt_agent utils已经完成了(虽然之后可能还会有微调),接下来完成配置通路cpu interface对应的utils。这个通路比较特殊,一是带反馈的接口,二是时…

Android 通过插桩来代理线程池

前言 在日常开发App的过程中&#xff0c;难免需要依赖第三方Sdk&#xff0c;这样就无形中增加了我们自己App的线程数&#xff0c;从而会导致App出现内存溢出、Cpu消耗增加等等负面影响。如果依赖的Sdk提供了线程池代理的接口还好&#xff0c;那样直接设置我们自定义的线程池。但…

密码学学习笔记(十五):ECDSA - 椭圆曲线数字签名算法

椭圆曲线数字签名算法是DSA的一种椭圆曲线变体&#xff0c;它发明的初衷只是避免使用Schnorr签名的专利。椭圆曲线数字签名算法依赖于验证器中的私钥和主机用于验证验证器的公钥。它的缺点和DSA一样&#xff0c;它也没有提供安全性证明。 椭圆曲线算法 DSS&#xff08;数字签…

工作空间内各文件夹解析

src文件夹用来存放源代码 launch文件夹用来存放一个或多个ros节点启动文件 msg文件夹包含用户定制化消息的定义 srv文件夹包含各种服务的定义 action文件夹包含动作文件 package.xml是软件包清单文件 Cmakelists.txt文件包含编译软件包的各类指令

面试官: 说一下你做过哪些性能优化?

前言 如果你已经有 2 - 3 年以上开发经验还不懂的怎么去优化自己的项目&#xff0c;那就有点说不过去了&#xff0c;下面是我自己总结的一套通用级别的 Android 性能优化。 如果你正在找工作, 那么你需要一份 Android 高级开发面试宝典 1、 你对 APP 的启动有过研究吗? 有做过…

Spring解决数据乱码问题-spring21

乱码数据实际情况&#xff1a; 都出现了&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f; 怎么解决&#xff1a; 第一步&#xff0c;找到web.xml配置文件。 改成name控制台就不出来了 如何解决地址方法与Controller业务参数名称不一致的情况&#xf…

Linux 之 基本工具(一)

一、粘滞位 1.背景 在现实生活中&#xff0c;有很多人会在同一台云服务器上共同工作&#xff0c;会出现这些人的某些文件需要保存但又不想保存在各自的家目录下且这些文件需要共给其他一同工作的同事共享&#xff08;可查阅&#xff09;的情况&#xff0c;则需要将这些文件保…

Mysql表锁与行锁

Mysql锁实战 前言&#xff1a;什么是锁一&#xff1a;全局锁1.1 概念1.2 作用1.3 使用1.4 特点 二&#xff1a;表级锁2.1 概念2.2 分类2.2.1 表锁2.2.2 元数据锁 MDL2.2.3 意向锁 三&#xff1a;行级锁3.1 行锁(Record Lock)3.2 间隙锁(Gap Lock)3.3 临键锁(Next-Key Lock): 四…

redis乐观锁概念

乐观锁&#xff08;又名乐观并发控制&#xff0c;Optimistic Concurrency Control&#xff0c;缩写“OCC”&#xff09;&#xff0c;是一种并发控制的方法。它假设多用户并发的事务在处理时不会彼此互相影响&#xff0c;各事务能够在不产生锁的情况下处理各自影响的那部分数据。…

Ubuntu下安装、配置及重装CUDA教程

安装CUDA 前往Nvidia CUDA Tools官网选择对应的架构和版本下载CUDA 以如下架构和版本为例&#xff1a; 查看显卡驱动 nvidia-smi如果显卡驱动已经装了&#xff0c;那么在CUDA安装过程中不用再勾选安装driver 下载并安装CUDA wget https://developer.download.nvidia.co…

如何设计一个完美的复杂业务系统架构?

1 什么是复杂系统 我们经常提到复杂系统&#xff0c;那么到底什么是复杂系统。我们看下维基的定义&#xff1a;复杂系统&#xff08;英语&#xff1a;complex system&#xff09;&#xff0c;又称复合系统&#xff0c;是指由许多可能相互作用的组成成分所组成的系统。强调了两…

字幕切分视频

Whisper 仓库地址&#xff1a; https://github.com/openai/whisper 可用模型信息&#xff1a; 测试视频&#xff1a;18段&#xff0c;总共447S视频&#xff08;11段前&#xff1a;有11段开头有停顿的视频&#xff09; Tiny: 跑完&#xff1a;142S &#xff0c;11段前&#xf…

微服务sleuth+zipkin——链路追踪

一、链路追踪&#x1f349; 1.什么是链路追踪&#xff1f;&#x1f95d; 在大型系统的微服务化构建中&#xff0c;一个系统被拆分成了许多模块。这些模块负责不同的功能&#xff0c;组合成系统&#xff0c;最终可以提供丰富的功能。在这种架构中&#xff0c;一次请求往往需要…

深入理解Java虚拟机(二)Java内存区域与内存溢出异常

一、前言 对于Java程序员来说&#xff0c;在虚拟机自动内存管理机制的帮助下&#xff0c;不再需要为每一个new操作去写配对的delete/free代码&#xff0c;不容易出现内存泄漏和内存溢出问题&#xff0c;看起来由虚拟机管理内存一切都很美好。不过&#xff0c;也正是因为Java程序…

IEC 103/104

IEC101 串口通信 串口远动协议 控制区和数据区&#xff0c;(信息体地址&#xff0c;装置地址等) IEC102 电量采集 IEC103 保护设备的通信 串口 实时监测 各种故障 103协议就是用来保护装置和后台监控进行通信的。 IEC104 调度自动化系统、厂站之间的通讯 网络 帧里面多了…

Ansible Playbook剧本配置文件

一、执行文件 Playbook配置文件使用YAML语法&#xff0c;具有简 洁明了&#xff0c;结构清晰等特点。Playbook配置文件类似于shell脚本&#xff0c;是一个YAML格式的文件&#xff0c;用于保存针对特定需求的任务列表&#xff0c;前面介绍的ansible命令虽然可以完成各种任务&a…