当前位置: 首页 > news >正文

Alwasyon环境下增加数据文件需要注意的几点

半夜收到报警短信,服务器磁盘空间不足,爬起来检查一番,发现由于索引重建导致,而且该磁盘下仍有自动增长的数据文件,由于该服务器上其他盘符有剩余空间,于是打算将该磁盘下的数据文件限制增长,并新增几个数据文件在其他有空闲空间的磁盘下,于是操作步骤如下:

第一步:检查Alwayson各辅助节点的相同盘符是否同样有磁盘空间(可以使用EXEC master..xp_fixeddrives来查看)

第二步:检查各辅助节点下是否存在对应文件夹,没有的手工创建

第三步:在主节点对数据库上新增数据文件。

 

三步打完手工,顺便检查了下其他服务器,准备回去梦周公的时候,短信又报警了,Alwasyon数据延迟,而且是在同步模式的辅助节点上延迟,顿时小手一哆嗦,差点把电脑给摔了,立马排查原因,辅助节点磁盘空间充足,对应目录也已创建成功,并且其中一个数据库的新增文件已在辅助节点上创建,但还有一个数据库的新增文件没有创建出来,也是怀疑当前时间索引维护导致大量日志积压从而引起Alwasyon延迟,于是果断关闭主节点上的索引维护,继续使用Alwasyon控制面板观察,发现辅助节点的重做队列大小在逐渐增大,看来关闭索引维护并没啥卵用,继续排查问题。。。

 

问题的表象是日志重做队列在增大,既然排除主节点“生产”大量日志的情况,那么就是辅助节点“消费”这些日志出现问题,接着排查IO压力,辅助节点IO还算正常,唯一导致IO压力的就一个完整备份作业在执行,完整备份作业,这和日志重做似乎没啥冲突,但是别忘了刚才的操作是新增数据文件,罪魁祸首及时完整备份。由于数据库比较大,完整备份需要花费几十分钟才能完成,为保证完整备份能备份所有数据文件的数据,SQL SERVER会在完整备份期间会阻止对数据库新增文件,而辅助节点上“重做”日志便是对数据库新增文件,于是完整备份“阻塞”日志重做,并给我们一个日志“重做”速率赶不上日志“生成”速率的假象。

 

总结:在Alwasyon的场景下新增数据文件,不仅要考虑辅助节点上的磁盘空间和对应文件目录的问题,还应该检查一下辅助节点是在运行完整备份,并且在操作结束后,一定要注意检查对应文件是否在辅助节点上创建,并Alwayson的同步状态是否正常。

 

PS: 如果辅助节点处于异步模式,且在辅助节点上没有对应盘符或文件目录,辅助节点重做"新增文件"这部分日志便会出错,导致对应数据库数据库"挂起",处于未同步状态,此时辅助节点不会再向主节点发送"请求",此时观察日志发送队列大小和日志重做队列大小没有任何意义。

 

PS2: 如果搭建了日志传送,那么还需要考虑新增文件对日志传送的影响,可能需要手动还原特定日志来指定新增文件的还原路径

--================================================================

大半夜干活不容易,没个妹子提神怎么行

转载于:https://www.cnblogs.com/TeyGao/p/4637936.html

相关文章:

  • 学习笔记_过滤器概述(过滤器JavaWeb三大组件之一)
  • ldd查询命令或软件共享的函数库(动态)
  • 员工考勤系统
  • C# 打印本地PDF文件
  • javascript的位操作、整数、二进制
  • .net 按比例显示图片的缩略图
  • 线上解决问题分析
  • JavaScript定时机制setTimeout与setInterval研究
  • UVA 11174 Stand in a Line 树dp+算
  • HttpSessionListener的用法
  • JasperReports报表组15
  • BZOJ 1264: [AHOI2006]基因匹配Match( LCS )
  • 用Linux命令对两个文件进行连接操作
  • 一、小按钮和下面板---调试面板
  • memcached全面剖析–5. memcached的应用和兼容程序
  • ES2017异步函数现已正式可用
  • ES6简单总结(搭配简单的讲解和小案例)
  • Laravel 实践之路: 数据库迁移与数据填充
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • nginx 负载服务器优化
  • PAT A1092
  • PHP 小技巧
  • Swoft 源码剖析 - 代码自动更新机制
  • Vue全家桶实现一个Web App
  • webgl (原生)基础入门指南【一】
  • Webpack 4 学习01(基础配置)
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 面试总结JavaScript篇
  • 前端存储 - localStorage
  • 使用 Docker 部署 Spring Boot项目
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 详解NodeJs流之一
  • 责任链模式的两种实现
  • Java性能优化之JVM GC(垃圾回收机制)
  • 进程与线程(三)——进程/线程间通信
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​2021半年盘点,不想你错过的重磅新书
  • #### go map 底层结构 ####
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #QT(串口助手-界面)
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (10)ATF MMU转换表
  • (pojstep1.1.2)2654(直叙式模拟)
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (六)激光线扫描-三维重建
  • (论文阅读30/100)Convolutional Pose Machines
  • (四)鸿鹄云架构一服务注册中心
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)Linux下编译安装log4cxx
  • (转)为C# Windows服务添加安装程序
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .Net MVC + EF搭建学生管理系统
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化