SQL Server误区30日谈 第1天 正在运行的事务在服务器故障转移后继续执行
2013-01-09 18:44
966 查看
误区 #1:在服务器故障转移后,正在运行的事务继续执行
这当然是错误的!
每次故障转移都伴随着某种形式的恢复。但是如果当正在执行的事务没有Commit时,由于服务器或实例崩溃导致连接断开,SQL Server可没有办法在故障转移后的服务器重新建立事务的上下文并继续执行事务-无论你使用的故障转移方式是集群,镜像,日志传送或是SAN复制。
对于故障转移集群来说,当故障转移发生后,一个SQL Server实例在另一个故障转移集群的节点启动。所有实例上的数据库都要经历Recovery阶段-也就是所有没有Commit的事务都要被回滚。
对于数据库镜像来说,来自主体服务器的日志不断传送到镜像服务器进行Redo操作。当镜像服务器被切换作为主体服务器时,原镜像服务器的事务日志将会变为Recovery模式,这使得好像原镜像服务器经历了一次崩溃那样,在这之后所有的连接都会导向原镜像服务器。
对于事务日志传送来说,事务日志被定期备份并传送到辅助服务器.当主服务器崩溃时,DBA按照恢复顺序将辅助服务器恢复后上线.但最终步骤都是要执行recovery步骤,也就是将没有提交的事务进行回滚。
对于SAN复制来说,本地SAN的I/O被复制到远程SAN上进行重放,当故障转移发生后,系统将会连接到远端SAN但数据库仍然需要执行recovery步骤,这和故障转移集群极其类似。
“唯一”使得正在执行的事务在故障转移发生后仍然得以继续执行的技术使用带有实时迁移功能的虚拟化技术,因为这时连接本身并不知道其连接的对象已经变为另一台物理服务器。
但是无论使用那种技术,如果”连接”失效,正在执行的事务将会丢失,所以处理这类问题的这部分工作就需要在程序中用代码实现某种“重新执行”的功能。
这当然是错误的!
每次故障转移都伴随着某种形式的恢复。但是如果当正在执行的事务没有Commit时,由于服务器或实例崩溃导致连接断开,SQL Server可没有办法在故障转移后的服务器重新建立事务的上下文并继续执行事务-无论你使用的故障转移方式是集群,镜像,日志传送或是SAN复制。
对于故障转移集群来说,当故障转移发生后,一个SQL Server实例在另一个故障转移集群的节点启动。所有实例上的数据库都要经历Recovery阶段-也就是所有没有Commit的事务都要被回滚。
对于数据库镜像来说,来自主体服务器的日志不断传送到镜像服务器进行Redo操作。当镜像服务器被切换作为主体服务器时,原镜像服务器的事务日志将会变为Recovery模式,这使得好像原镜像服务器经历了一次崩溃那样,在这之后所有的连接都会导向原镜像服务器。
对于事务日志传送来说,事务日志被定期备份并传送到辅助服务器.当主服务器崩溃时,DBA按照恢复顺序将辅助服务器恢复后上线.但最终步骤都是要执行recovery步骤,也就是将没有提交的事务进行回滚。
对于SAN复制来说,本地SAN的I/O被复制到远程SAN上进行重放,当故障转移发生后,系统将会连接到远端SAN但数据库仍然需要执行recovery步骤,这和故障转移集群极其类似。
“唯一”使得正在执行的事务在故障转移发生后仍然得以继续执行的技术使用带有实时迁移功能的虚拟化技术,因为这时连接本身并不知道其连接的对象已经变为另一台物理服务器。
但是无论使用那种技术,如果”连接”失效,正在执行的事务将会丢失,所以处理这类问题的这部分工作就需要在程序中用代码实现某种“重新执行”的功能。
您可能感兴趣的文章:
相关文章推荐
- SQL Server误区30日谈 第1天 正在运行的事务在服务器故障转移后继续执行
- 【译】SQL Server误区30日谈-Day1-正在运行的事务在服务器故障转移后继续执行
- SQL Server误区30日谈 第11天 镜像在检测到故障后瞬间就能故障转移
- SQL Server误区30日谈 第11天 镜像在检测到故障后瞬间就能故障转移
- 【译】SQL Server误区30日谈-Day11-镜像在检测到故障后瞬间就能故障转移
- 08cms安装出错 MYSQL错误:MySQL服务器正在使用–secure-file-priv选项运行,因此无法执行此语句
- SQL Server 2008 R2运行分布式的查询时的错误消息:"链接服务器 < 链接服务器 > 的 OLE DB 提供程序 SQLNCLI 返回消息没有事务处于活动状态
- 【译】SQL Server误区30日谈-Day10-数据库镜像在故障发生后,马上就能发现
- SQL Server误区30日谈 第15天 CheckPoint只会将已提交的事务写入磁盘
- SQL Server误区30日谈-Day15-CheckPoint只会将已提交的事务写入磁盘
- SQL Server 查看正在运行的事务信息的 2 种方法。
- SQL Server 在事务中使用链接服务器执行 分布式事务
- 服务器无法继续执行该事务,此会话中的活动事务已由另外一个会话提交或终止。
- SQL Server误区30日谈 第28天 有关大容量事务日志恢复模式的误区
- SQL Server误区30日谈 第10天 数据库镜像在故障发生后 马上就能发现
- SQL Server误区30日谈 第26天 SQL Server中存在真正的“事务嵌套”
- 曲演杂坛--权限不足引发的错误提示“服务器无法继续执行该事务”
- [求解]在debug模式下程序正常运行(多次测试),运行模式下(正确数据)时常会抛异常,抛异常后事务也没有阻止,而继续执行操作?
- SQL Server误区30日谈 第26天 SQL Server中存在真正的“事务嵌套”
- SQL Server误区30日谈 第10天 数据库镜像在故障发生后 马上就能发现