首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要在两个服务器之间保持数据的事务一致性,需要在没有人工干预的情况下实现这些目标。

需要在两个服务器之间保持数据的事务一致性,需要在没有人工干预的情况下实现这些目标。
EN

Database Administration用户
提问于 2015-09-15 03:35:58
回答 2查看 419关注 0票数 0

我得到了一个关于MS 2012管理的问题,这两个生产服务器位于同一个数据中心。如果发生灾难性的服务器故障或磁盘故障,则需要确保数据库仍然可用。

您需要在两个服务器之间维护数据的事务一致性。你需要在没有人工干预的情况下实现这些目标。

以上问题的正确答案是

配置在同一子网Server可用性组上的>>两台服务器,配置为同步提交可用性模式<<

但我认为正确的答案应该是

配置在同一个数据中心Server中的Windows故障转移群集中配置为群集instance<<的两个服务器

EN

回答 2

Database Administration用户

发布于 2019-02-23 14:10:20

最棘手的部分是这个要求:

如果发生灾难性的服务器故障或磁盘故障,则需要确保数据库仍然可用。您需要在两个服务器之间维护数据的事务一致性。你需要在没有人工干预的情况下实现这些目标。

磁盘故障部分意味着单独的故障转移群集无法工作,因为存储是与两个节点共享的。如果数据文件所在的存储失败,那么两个节点都会受到影响。

但是,2节点同步可用性组也不是答案,因为正如微软自己的文档所指出的

如果次要副本超过了主副本的会话超时时间,则主副本暂时转移到该辅助副本的异步提交模式。当二级副本与主副本重新连接时,它们将恢复同步提交模式。

在“干扰数据同步的因素”部分中进一步阅读该链接,Microsoft将详细说明为什么不能保证2节点AG不会在故障转移时丢失数据的原因。

,那么Server 2012的正确答案是什么呢?

根本就没有。如果没有第三方工具(比如SAN复制,即使这样,也需要大量的工作),如果没有第三方工具,就不能保证两个独立的SQL Server 2012 s的数据丢失为零。我猜这个问题来自于一个没有真实世界经验的人所写的测试或认证。那不是第一次,也不是最后一次。

对以后的版本有正确的答案吗?

是的,Server 2017在可用性组级别引入了一个新的REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT设置。默认值为0,这意味着只要主服务器接收到事务,它就被提交了。您可以将其更改为1(或更多),这意味着如果至少该数量的次要程序也不提交事务,则事务将失败。

票数 1
EN

Database Administration用户

发布于 2015-09-15 16:42:25

第一个场景实际上是更正确的实现。在Server的未来版本中(从2016年开始),不再推荐标准的“故障转移群集”模型。Microsoft正在通过SQL Server可用性组转向HA ()模型,该模型本质上是将镜像和集群混合在一起(不需要一个见证服务器),将数据完全复制到组中的每个节点。

据微软专业人士称,故障转移时间小于1秒,而标准的故障转移群集可能需要1+分钟才能成功地自动故障转移。从这一点开始,Server可用性组将是前进的道路。

票数 -4
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/115087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档