我已经为生产环境安装了两个具有高安全性镜像的Server 2014实例。我需要在这些服务器上定期应用安全补丁,这需要重新启动。
我的典型流程是应用补丁来镜像和重新启动。然后触发故障转移以镜像并将补丁应用于另一台服务器。重新启动,然后失败。
我的问题是,每个故障转移都有一些未提交的事务回滚,这对生产环境确实不好。我不知道哪些事务被回滚了,也不知道我正在遭受什么样的数据丢失。但是我需要重新启动这些服务器并应用补丁。如果我没有数据丢失容忍度,我的选择是什么?
发布于 2017-10-26 20:17:20
在完全安全模式下,如果在飞行中没有事务,那么最好在不丢失数据的情况下这样做。在重新启动之后,您是否在等待状态从同步更改为同步?不过,我的猜测是,当您执行故障转移时,应用程序用户在其中。
如果应用程序仍在连接,数据仍在修改,那么就会有交易在运行,这就是您必须付出的代价。最好是找个窗口,然后停止访问。关闭访问SQL等的站点或应用程序。
发布于 2017-10-26 20:15:08
您需要禁用服务器上的登录(S),等待所有正在进行的事务完成,然后执行故障转移。
或者,您需要重写客户端代码以了解何时发生回滚,并等待/重试直到它们能够成功地完成事务。
虽然镜像故障转移非常快,但在运行中的事务不能在BEGIN TRANSACTION
和COMMIT TRANSACTION
之间从一台服务器移动到另一台服务器。
https://dba.stackexchange.com/questions/189443
复制相似问题