SQL Server 2017 AlwaysOn AG 自动初始化(九)

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操作都能完成。

原文地址:http://blog.51cto.com/ultrasql/2129303

时间: 2024-09-30 12:09:10

SQL Server 2017 AlwaysOn AG 自动初始化(九)的相关文章

SQL Server 2017 AlwaysOn AG 自动初始化(十四)

功能性测试 测试自动种子设定对SQL Server 2017数据文件磁盘布局要求的变化 由于生产环境存放数据文件可能位于不同的卷上,且实例名也不同,那么数据文件的完整路径就不同.为了能实现自动种子设定,重设默认数据路径,满足对2017磁盘布局的要求. 假设主实例默认路径为c:\data\,辅助实例默认路径为d:\data\ 主实例文件位置 SQL Server 2016辅助实例文件位置 SQL Server 2017辅助实例文件位置 C:\data\ C:\data\ D:\data\ C:\d

SQL Server 2017 AlwaysOn AG 自动初始化(四)

查看数据库同步进度 如果数据库在为自动种子设定配置的可用性组中,你可以查询 sys.dm_hadr_automatic_seeding 系统视图来监视种子设定进度. 对于处于为自动种子设定配置的可用性组中的每个副本的每个数据库,以下查询都返回一行. 在主副本上执行 SELECT start_time, ag.name, db.database_name, current_state, performed_seeding, failure_state, failure_state_desc FRO

SQL Server 2017 AlwaysOn AG 自动初始化(八)

监控自动种子设定  系统动态管理视图 sys.dm_hadr_automatic_seeding 在主要副本上,查询 sys.dm_hadr_automatic_seeding 以检查自动种子设定过程的状态. 对于每个种子设定过程,该视图都将返回一行. 例如: SELECT start_time,     completion_time,     is_source,     current_state,     failure_state,     failure_state_desc,   

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

在现有可用性组上启用某个辅助副本的自动种子设定 在主副本上执行 ALTER AVAILABILITY GROUP [<availability_group_name>]     MODIFY REPLICA ON '<secondary_node>'     WITH (SEEDING_MODE = AUTOMATIC) GO 前一命令将强制数据库重启种子设定.例如,如果种子设定因辅助副本磁盘空间不足而失败,可在添加可用空间后再重启种子设定. 原文地址:http://blog.51

SQL Server 2017 AlwaysOn AG 自动初始化(十三)

其他需要知道的事情 在自动种子设定期间事务日志不能被截断 自动种子设定延迟日志截断.如果主副本上数据库负载很高,那么将显著产生大量日志,那么可能有填满日志文件的风险.当然大多数情况下日志文件设置为自动增长,没有设置限制,也要监控在自动种子设定期间日志文件所在磁盘空间的使用情况. Sys.databases视图的LOG_REUSE_WAIT_DESC列反应了延迟日志截断的原因.然而,当由于自动种子设定而延迟事务截断时,LOG_REUSE_WAIT_DESC列的值为"NOTHING",表示

SQL Server 2012 AlwaysOn高可用配置之九:添加侦听器

9.   添加侦听器 9.1 点击"添加侦听器" 9.2 输入侦听器名称和端口,点击"添加" 9.3 输入侦听器IP,点击"确定" 9.4 点击"确定" 9.5 成功创建完成侦听器后如下" 9.6 在AD中自动生成相应的对象 9.7 在DNS自动生成相应的DNS记录 SQL Server 2012 AlwaysOn高可用配置篇成功完结 -----------------------------------------

[AlwaysOn Availability Groups]SQL Server错误日志(AG)

SQL Server错误日志(AG) SQL Server错误日志会记录影响AG的时间,比如: 1.和Windows故障转移集群交互 2.可用副本的状态 3.可用数据的状态 4.AG endpoint的状态 5.AG Listener的状态 6.SQL Server resource DLL和SQL Server实例的租用状态 7.AG的错误事件 出现以下状态就需要检查错误日志: 1.无法连接到可用性数据库 2.非预料的AG故障转移 3.AG的Resolving状态不可预期 4.AG在不其确定的

在Linux上使用mssql-conf工具配置SQL Server 2017

mssql-conf是在Linux上安装SQL Server 2017后的一个配置脚本.你可以使用这个实用工具设置以下参数: Agent 启用SQL Server代理 Collation 设置一个新的排序规则 Customer feedback 选择是否发送反馈给微软 Database Mail Profile 设置默认数据库邮件配置 Default data directory 修改新的数据文件的默认路径 Default log directory 修改新的日志文件的默认路径 Default

SQL Server 2017 高可用性

可用性功能的使用方式主要有以下四种: 高可用性 灾难恢复 迁移和升级 扩大一个或多个数据库的可读副本 SQL Server 可用性功能不能替换对经过充分测试的可靠备份和还原策略的需求,后者是所有可用性解决方案最基本的构建基块. AlwaysOn 可用性组 SQL Server 2012 中引入的 AlwaysOn 可用性组将数据库的每个事务发送到另一个实例,从而提供数据库级别的保护,该实例称为副本,其中包含处于特定状态的数据库副本. 副本之间的数据移动可以是同步的或异步的,Enterprise