首先意淫这篇文字,任务是要说SQL SERVER 数据库要被消灭等等的就可以到此为止了。本篇文字,主要说的这两天,恢复SQL SERVER 数据库文件,拯救系统的始末.

前天下午,接到运维同学的电话,(估计之前已经有人报警说系统无法运行了),他告诉我我们的SQL SERVER  集群的主库正在被还原,问我有什么解决方法吗?

WHAT  HOW ,是我脑子里闪出的东西,当然还有别的,STOP

冷静,我脑子里面里面开始运转,从脑子里面的数据库搜索各种方案和使用这样方案会造成的影响。

首先我确认的是

1 业务终止了

2 是否能终止整体数据库还原

3 终止后怎么让业务数据库上线

4 我能保证数据的一致性吗

5 我需要多长时间

6 情况还能多糟糕

可能说道这里,有观众已经想问,怎么会?  OMG ,好好的怎么会数据库还原。

我倒是想奉劝,怎么就不可能,这世界上什么事情不会发生,没有什么好奇怪的,发生了,也别问怎么样,谁干的,诸如此类无聊的问题。他发生了,现在给我打电话就是要SAVE IT, 其他的我不关心。

问完我自己那些问题,脑子的数据库首先的第一条反映就是,不能让他继续还原,如果继续的话,我半点拯救数据库的机会都没有,OK 我们的SQL SERVER 是ALWAYS ON ,OMG ,三台机器,

有人问,HI 关机不就完啦,反正业务已经停止了,SHUT UP,那个数据库上还跑着其他的数据库,不光正在还原的这一个数据库,已经停止了关键业务,难道关了数据库服务器,让整个公司都沸腾吗?

1 decision ,不能关机,必须正常输出其他的服务,影响不能扩大化

又会有人说,你不关机,就让他继续还原数据库,NO NO NO ,幸亏我们的公司有ALWAYS ON (那些还让SQL SERVER (尤其主营业务)还不适用 ALWAYS ON 的 当然还有使用集群方式的(类似 ORACLE RAC))就等着哭吧,

2  我立即告诉运维人员,我要关闭一台SQL SERVER 从库,这里解释一下为什么再次提到 ORACLE  RAC 和 SQL SERVER 类似的功能 SQL SERVER CLUSTER。  使用这样的方案,必须在发生这样问题的情形下,必死无疑,必死无疑,必死无疑,重要的事情说三遍。分布式数据库的优点,关闭一台机器,不影响业务,数据服务的继续输出。

关闭后,我在想,我不怕了,至少我留下了一台数据库服务器的数据,虽然分布式数据库上的数据也已经在还原的状态,但我保住了原始的数据,不再被损坏,我还有生还的机会。

我还应该在做点什么,下一步怎么办,停止那的备份软件的误操作,得到第三方的软件供应商的答复是NO。

OMG ,这就是花了钱后得到的服务,我明白为什么互联网公司什么都要自己开发,从不买什么备份软件,监控软件,系统保护软件之类的。因为如果是公司内部自己开发的,那绝对不会说出冷冰冰的 NO 。 而是大家继续想办法拯救需要拯救的东西。(后来事实证明,只有公司内部的团队是靠谱的,关键的东西其实还是自己研发比较好)

既然软件上说NO ,那就是不能停止还原的操作,怎么办,查看软件的线程,一直在连接SQL SERVER 进行数据还原,还是多线程的,停止时够呛了,因为他有强大的重试功能,估计还是使用的SA 之类的高级账号给他做连接数据库的账号,我已经不奢望什么了。

好吧,我的关注点,回到我保留下的那个关闭的服务器,又接到电话,说那个关闭的服务器,还要在开机,因为要尝试解散集群,尝试数据库停止恢复B PLAN。 OMG

在开机后,我再次决定停止SQL SERVER 的服务,不让马上连接的节点,被继续破坏,我开始拷贝节点的数据库的文件,(这里又有故事,缺少这个故事,估计也搞不定,BULABULA)。 拷贝完我的数据库文件到一个安全的地方,我打开了SQL SERVER 的服务,如同电影 奇幻PI旅行中最后老虎消失的一幕,我知道,这台机器的数据库也完蛋了。

不过我已经拷贝了数据库,下面面对我有时连续的奇葩问题

1  我光有数据文件,没有能让我使用的恢复数据库的服务器

2  这些文件已经部分还原,我拿到这些能还原多少文件

3  怎么恢复这些数据文件

以前学习过的 SQL SERVER PAGE 页的知识,浮现在脑子里面

SQL Server中的在页面顶部有一个96字节的头,它包括PageID、页面所属的结构类型、页面中的记录数量以及指向上一页和下一页的指针。所以有8096字节可用来存储记录。但是,数据记录的最大长度是8060字节,正如页面底部(最新的36字节)所示,它驻留的slot数组包含关于行的偏移量的信息(每行2字节)

马上问题又在脑子里面翻转

1 如果页头毁掉了,那就完蛋了

2 数据页面如果不连续了,很可能会有数据的缺失和损坏

3 如果有跨页的情况,那损坏也许更多

并且根据SQL SERVER 数据库文件的页面分配,9,0 1 2 3 首页面如果被毁,那简直就是死路一条。

怎么办,本来我想用以前用过的 APEXLOG ,来尝试重新读取文件,不过原理不对,那个软件是读取日志文件,来恢复数据的,而这次毁灭性的打击,根据 ALWAYS ON 的原理,很可能日志是最先被毁灭的文件。并且我如果想恢复,至少我的先让这些数据文件再次挂在在数据库服务器上,才能使用 APEXLOG ,不幸的是,这些条件都不具备。

尝试挂载数据文件,报告,MASTER FILE  32:32 损坏,无法挂载数据库。好吧我早就该想到这一点,被覆盖,还强行关机,挂不上那是应该的,挂上那是上帝显灵了。

那也不能坐以待毙,我尝试寻找其他方法,那不具备那些条件的情况下,我可以通过读取数据文件的方式恢复数据,根据文件的物理特性,其实可以通过SQL SERVER DBCC的方式直接读取数据页,并且恢复数据,但前提是数据库的联机,现在这个问题是数据库不能联机,并且联机的也是那个正在还原停不了的数据库,并且也不能拿现在的数据库冒险。 更糟糕的我想把数据拷贝到 UAT 或者 测试库的想法 也都落空,倒霉催的网络带宽,倒霉催的网络带宽,倒霉催的网络带宽。

SQL SERVER 本身能读取数据PAGE,其实按原理上个来说,只要有读取这个PAGE的软件就可以,尝试找找,还真有类似的软件,那试试吧,装上软件,开始对我拷贝的数据文件,进行SEARCH,上线,我看到久违的数据,好像初恋一样的感觉。好吧后面就是,恢复数据,BULABULA。

此外,开发团队在得到 AUDIT LOG 后,想尝试另一种恢复的方法,也可歌可泣,绝对应该载入公司的史册,并且我也从这次开发的努力中看到了不放弃,并且我们也得到一些在此类问题上的经验,绝对是有益的。

总结:

1 首先感谢开发者软件的公司,并且有破解这个软件的人,再次感谢

2 如果让我做数据库部署的抉择,1 不会使用ORACLE RAC 或类似的功能,因为越复杂的东西,遭遇不测恢复很难,如果是ORACLRE 估计也很难有公司能得到技术内幕并开发此类软件。换做是MYSQL 估计连第三方软件都不用,很快就能将这样的问题解决(前提的做些工作)

运维的同学虽然不在一个部门,不过我想他们积极的找解决问题的出路的努力应该被肯定.

身处这样的公司,出了问题大家一起努力解决,而不是冷冰冰的指责(某些公司体会过,放心这样的事情放在那些公司,我只有三个字  OMG ),虽然出了问题,但我们解决了,这很了不起。这也让我想起到底是职责划清好,还是大家“大锅饭”好,都有优点,和缺点,不过这次,彻底让我感觉到 “大锅饭”的好处。  记得4年前在某公司,也是这样的问题,而处境,各个部门事不关己高高挂起的嘴脸,真让我厌恶,并且还落井下石。

3 分布式数据库,(是分布式不是数据分片,那将毫无帮助),对此类问题是有帮助。

4  冷静,冷静,冷静,和信心

5 经验值和一些发现的问题(就让他们在我脑子里面吧)

结果: We saved it

SQL SERVER 的垂死挣扎相关推荐

  1. SQL Server 2017无法启动,提示“系统找不到指定的文件”【虚拟机内安装的】

    虚拟机装了一个win10的,然后它就自动更新了 太烦人了啊,现在没办法了,我这虚拟盘又不够,哪能再更新?!!!辣鸡啊... 结果取消之后就出现问题了... 又是SQLServer的,唉 -- 标题:  ...

  2. 【Sql Server】数据库的3大服务

    在数据库SQL SERVER中,处理常用的sql server数据库引擎,还有其他3大服务,分别是集成服务,报表服务,分析服务. 集成服务商可以配置包,这里的包可以理解是数据库引擎里的用户数据库.可以 ...

  3. 【Sql Server】DateBase-自动化

    强大的SQL Server有着神奇的自动化功能,来处理一些人为处理不了的事情! 自动化功能:T-sql语言,系统命令.脚本语言.复制命令.创建角色.索引重建.报表 管理元素:作业.警报.操作员.计划 ...

  4. 【Sql Server】DateBase-视频总结

    最近看完了数据库视频,内容繁杂,但也不是无迹可寻! 这是第三遍关于数据库的学习了,随着一遍一遍的深入,更加了解了它的全貌,虽然现在对于数据库还不能到达熟练操作的地步,但至少放我手上不在犯怵了. SQL ...

  5. sql server登录名、服务器角色、数据库用户、数据库角色、架构区别联系

    原创链接:https://www.cnblogs.com/lxf1117/p/6762315.html sql server登录名.服务器角色.数据库用户.数据库角色.架构区别联系 1.一个数据库用户 ...

  6. 合肥工业大学—SQL Server数据库实验十:用户及其权限管理

    用户及其权限管理 1. 创建登录名Mylog及密码 2. 创建用户user2关联登录名 3. 创建角色role1 4. 对用户user2及角色role1授权 5. 验证用户授权 6. 收回用户权限 1 ...

  7. 合肥工业大学—SQL Server数据库实验四:数据库的分离和附加

    数据库的分离和附加 1. 数据库分离 2. 数据库附加 1. 数据库分离 当SQL Server服务器运行时,该服务器上所有的数据库自动处于运行状态,而运行中的数据库文件是无法进行数据库文件的拷贝的. ...

  8. SQL Server中Identity标识列

    SQL Server中,经常会用到Identity标识列,这种自增长的字段操作起来的确是比较方便.但它有时还会带来一些麻烦. SQL Server中,经常会用到Identity标识列,这种自增长的字段 ...

  9. SQL SERVER 函数ROW_NUMBER() 应用

    应用场景: 1.业务要求SQL查询结果中输出含有"序号"."行号". 2.数据表中某个空白字段需要用流水号填充. 以上场景时,可以使用SQL SERVER 的函 ...

最新文章

  1. 计算机开不开机是什么原因是什么原因,电脑开不了机的原因,详细教您电脑开不了机怎么办...
  2. 天天象棋 残局闯关 第17关
  3. boost::mpl::vector用法的测试程序
  4. ABAP RTTC动态编程在SAP gateway中的应用
  5. C++之private虚函数
  6. 【POJ - 2942】Knights of the Round Table(点双连通分量,二分图判断奇环奇圈)
  7. golang rsa密钥_如何在Golang的地图中检查密钥是否存在?
  8. java爪哇咖啡语言_“爪哇咖啡JAVACAFE及图”商标注册案例分析
  9. plt.subplot()和plt.subplots(),plt.gca(),
  10. Verilog常用算法-以2为求对数
  11. python—如何删除(保留)字符串中除字母、数字外的其他元素
  12. 8000401a 错误及解决办法
  13. QT windows ICO图标制作方法
  14. 关于南京市大学生办理住房补贴的流程示意图
  15. mysql删不掉怎么办_mysql删除不彻底的解决方法_MySQL
  16. matlab论文答辩题目,毕业设计答辩评及参考题目.doc
  17. 计算机里的MAC,怎么在mac苹果电脑中查看电脑开机运行的时长
  18. MVC5 - ASP.NET Identity登录原理-Claims-based认证和OWIN
  19. 谷歌排名影响因素最新研究(SEM RUSH版)
  20. 2020年10月25日总结

热门文章

  1. 极大极小算法和AlphaBeta剪枝算法
  2. 提升python运行效率_如何让python运行速度提高3倍
  3. 谈谈目前工作的收获和不足
  4. EJBCA证书平台-管理员及用户使用指南
  5. 【系统分析师之路】第二十章 数学与经济管理(章节重点)
  6. 联发科向上,高通向下
  7. 一文带你看懂JAVA IO流,史上最全面的IO教学啦(附送JAVA IO脑图
  8. 基于FPGA的数字等精度频率计
  9. how2j网站前端项目——天猫前端(第一次)学习笔记4
  10. android10.0版本下载,安卓10.0系统