为运行SQL Server的虚拟机切换装有DB Logs的最佳实践
上一篇说到虚拟机启动不了, 原因是有一块VHDX的文件找不到了. 解决了这个问题之后, 又遇到了另一个问题, 那就是我的这台SQL Server的虚机启动之后, 我的几个重要database变成了suspect状态.
原因很清楚, 因为切换过了装有DB Logs的VHDX.
[错误做法] 当时是这样做的: 在虚拟机和应用程序都在运行的状态下, 拷贝了存有DB Logs(ldf文件)的VHDX到另一个分区上. 同样在虚机和应用程序都live的情况下, 切换VHDX. 结果, 由于DB的data file和log file不一致, 就发生了suspect的问题.
[修复做法] 正确的做法是从backup中恢复DB. 但我的测试环境没有备份(-_-||), 因为几个T的数据备份就要花好久. 我的做法是先把所有使用这些DB的虚拟机都shutdown掉. 然后切换回原来的VHDX, 这样data和log file就一致了. 出现问题的DB状态正常之后, Trucnk掉transaction log. 之后拷贝ldf文件到别的地方. 再切换回去出问题的那个VHDX. 把ldf文件复制到正确的路径下. 数据库终于恢复了正常.
[正确做法] 痛定思痛, 下次再做这样的事情(更改包含MDF或LDF文件的VHDX)的时候, 应该这么做:
1. shundown运行着应用程序的虚拟机. 抑或是在SQL Server上把DB offline掉.
2. 拷贝VHDX到其他的LUN上.
3. 切换VHDX路径.
4. 启动虚拟机. 或是online掉所有的数据库.
但是, 王道是:"备份数据库"!
不管是suspect还是recovery pending, 只要有备份在, 你就无敌了!
最新文章
- HTTP 传输内容的压缩
- Java 反射机制及Annotation
- Statspack安装配置及使用
- String定义与方法
- Silverlight动画的基本知识、关键帧动画
- mvc4 整合nhibernate3.0配置
- 图片延时加载jquery.inview.js用法详解
- 理解margin负值
- 《Android进阶》之第三篇 深入理解android的消息处理机制
- Linux常用命令-jdk和Tomcat
- Thinkphp报错 -- “_STORAGE_WRITE_ERROR_”
- 用matlab给图像加高斯噪声和椒盐噪声(不调用imnoise函数)
- springboot2.0.3源码篇 - 自动配置的实现,发现也不是那么复杂
- 利用URLConnection http协议实现webservice接口功能(附HttpUtil.java)
- Javascript中页面加载完成后优先执行顺序
- 从零开始学 Web 之 BOM(二)定时器
- 背水一战 Windows 10 (44) - 控件(日期类): CalendarView, DatePicker, TimePicker
- yii---生产链接的方法
- Monkey、Monkeyrunner之间的区别
- 2014-8-5 NOIP(雾)模拟赛
热门文章
- Python全栈开发之4、内置函数、文件操作和递归
- Map 的四种遍历方式
- 简易解析ajax,javascript-XMLHttpRequest
- vs.net 效率提升-自定义快捷键
- Web开发——服务器端应用技术简单比较
- 详细理解Java虚拟机的运行过程
- 【BZOJ 2007】 2007: [Noi2010]海拔 (平面图转对偶图+spfa)
- BZOJ1001: [BeiJing2006]狼抓兔子 (最小割转最短路)
- 【带修改的主席树】BZOJ1901-Dynamic Rankings
- bzoj 2440