SQL Server VDI备份原理分析


SQL Server提供了虚拟设备接口(VDI)API,用于帮助独立的应用程序提供商,支持将SQL Server的备份和恢复操作集成到他们的产品中。这些API设计为提供最大可靠性和性能,支持所有的备份和恢复功能,包括所有的热备和快照备份能力。

在早期SQL Server版本,VDI备份需要3个线程来完成备份。一个控制线程来接收备份命令,两个辅助线程来处理VDI完成和元数据流活动。

需要的VDI线程数 = (文件在卷上的数据库数) * 3

而在新的SQL Server 2017测试过程中,发现单个数据库线程数为12个,如下:

VDI备份的步骤如下:

步骤1:加载SQLWriter(VSS Object)。

步骤2:SQLWriter枚举所有数据库文件位置,确定文件在卷上的数据库列表。

步骤3:对于列表中的所有数据库执行SQLWriter快照备份命令。

在快照备份创建阶段:

a) SQLWriter告诉SQL Server准备快照备份。

b) 然后所有被备份的数据库被冻结,然后创建快照。(注:VDI消费者执行生成安全的卷快照的行为。有的解决方案比如SQL Server快照备份启用写入时复制(Copy On Write)行为,其他的解决方案分裂出物理镜像和其他硬件提供商提供的技术)

c) 一旦完成,I/O恢复,这个进程叫解冻。

该过程详见SQL Writer in SQL Server 2005

写入时复制(Copy On Write):

当创建一个快照时,仅复制原始卷中数据的元数据metadata,并不会有数据物理操作,因此快照创建过程非常快。当快照创建完成,原始卷上有写操作时,快照会跟踪原始卷块的改变,将要改变的数据在改变之前复制到快照预留空间里,因此这个原理的实现叫写时复制。对于快照读取操作,如果读取的数据块是创建快照后没有修改过的,那么会重定向读取操作到原始卷,如果读取的是已经修改过的块,读取保存在快照中该块在原始卷改变之前的数据,简单来将就是读取快照中的数据,因此采用写时复制机制保证了读取快照得到的数据和快照和快照创建时一致。

测试创建自动种子设定的可用性组时,在VDI备份过程中,执行手工日志备份、Checkpoint、INSERT操作都能完成。

转载于:https://blog.51cto.com/ultrasql/2129303

SQL Server 2017 AlwaysOn AG 自动初始化(九)相关推荐

  1. SQL Server 2017 AlwaysOn AG 自动初始化(十二)

    何时不使用自动种子设定 在某些情况下,自动种子设定可能不是初始化次要副本的最优选择. 自动种子设定过程中,SQL Server 通过网络执行备份以进行初始化. 如果数据库非常大或者次要副本是远程副本, ...

  2. SQL Server 2017 AlwaysOn AG 自动初始化(十五)

    性能测试对比分析 拿xx库来做测试,数据文件8G,备份后为600M: 测试场景 使用时间 1 通过备份恢复来创建,开启备份压缩 1分29秒 2 通过自动种子设定,开启备份压缩 1分22秒 3 通过自动 ...

  3. SQL Server 2017 AlwaysOn AG 自动初始化(七)

    在现有可用性组上启用某个辅助副本的自动种子设定 在主副本上执行 ALTER AVAILABILITY GROUP [<availability_group_name>]MODIFY REP ...

  4. SQL Server 2017 AlwaysOn on Linux 配置和维护(18)

    2.6.2使用Pacemaker修改CIB 在Windows平台,WSFC本身支持多子网,通过对IP地址的OR依赖来处理多IP地址. 在Linux平台,没有OR依赖,但可以通过使用Pacemaker修 ...

  5. 当SQL Server爱上Linux:配置 SQL Server 2017 上的可用性组初体验

    作者 | 张乐奕:Oracle ACE 总监,ACOUG (中国 Oracle 用户组)联合发起人.Oracle 数据库高可用解决方案与  Exadata 一体机专家.长于数据库故障诊断,性能调优.作 ...

  6. SQL Server域Alwayson 部署

    引言 基于windows2012 server和sql server2012的域控的设置方法在很多场景已经使用,不仅需要windows的域部署,故障转移部署,以及sql server的域部署以及仲裁机 ...

  7. SQL SERVER 2012 AlwaysOn - 维护篇 03

    搭建 AlwaysOn 是件非常繁琐的工作,需要从两方面考虑,操作系统层面和数据库层面,AlwaysOn 非常依赖于操作系统,域控,群集,节点等概念: DBA 不但要熟悉数据库也要熟悉操作系统的一些概 ...

  8. linux配置conf_如何使用mssql-conf和其他可用工具在Linux上配置SQL Server 2017

    linux配置conf Configuration of any system plays a vital role in its working efficiently. However, conf ...

  9. SQL Server 2016 AlwaysOn 安装及配置介绍

    SQL Server 2016  AlwaysOn 安装及配置介绍 Always On 可用性组功能是一个提供替代数据库镜像的企业级方案的高可用性和灾难恢复解决方案. SQL Server 2012 ...

  10. SQL Server 2017 2019 Linux(Centos、Unbuntu16.04、Unbuntu18.04、Unbuntu20.04)安装过程详解

    SQL Server 2017 2019 Linux安装手册 1简介 SQL Server是微软的数据库平台,而SQL Server 2017 linux是运行在linux服务器上的版本.本文的安装采 ...

最新文章

  1. 在Java中如何使用transient
  2. Howto: Deploy VC2008 apps without installing vcredist_x86.exe
  3. 15行用Python实现仿百度搜索引擎
  4. 如何计算像素当量_基于非线性标定的桥梁裂缝精确视频测量技术研究
  5. Code for City 黑客松 | 成都站启动
  6. jdbc thin连接oracle10,setSavepoint方法报错解决办法
  7. python字典和集合对象可以进行索引操作_Python中的字典跟集合整理笔记
  8. OpenCV-Python bindings是如何生成的(2)
  9. MATLAB 在图像处理和机器视觉的应用举例01 - 官网培训视频笔记(上)-- 图像分割和图像配准
  10. 第一篇:对Adaboost和GBDT的学习
  11. mysql5.6忘记立马_MySQL 5.7 安装完成后,立即要调整的性能选项
  12. 关于内存泄漏检测问题,和大家一起分享
  13. 摄像头bug查找工作总结
  14. C# 设置鼠标光标为自定义图片
  15. 收银系统源码,又又升级最新下载sass版了
  16. Django教程(为什么选择Django框架)
  17. CentOS7 wifi安装配置问题总结
  18. python读取ttf_python读取.ttf字体文件
  19. 计算机应用基础 教材 黄洪艺,高教社产品信息检索系统
  20. CMNET和CMWAP GPRS 连接

热门文章

  1. Atitit.跨平台预定义函数 魔术方法 魔术函数 钩子函数 api兼容性草案 v2 q216  java c# php js.docx
  2. paip.FTP服务端及客户端的使用总结
  3. 转: Rust中的Pin详解 【Rust语言中文社区】
  4. (转)国外Fintech创业者坦言:你不知道的Fintech三大困境
  5. 内含资源下载|久等了!阿里云技术天团15位专家总结双11实战经验
  6. 云计算的下个十年什么样?
  7. 经济学家德鲁克的三个故事
  8. 【数字信号调制】基于matlab GUI PCM编码调制【含Matlab源码 1018期】
  9. 【人脸识别】基于matlab二值膨胀差分和椒盐滤波教室内人数统计【含Matlab源码 251期】
  10. python ip,python-IPy模块