当前位置: 首页 > news >正文

SQLServer 2014 本地机房HA+灾备机房DR解决方案


SQLServer 2014 主数据中心HA+灾备机房DR解决方案

 

SQLServer 2008 的时候使用 local WSFC+DR Mirror方式,对象是单数据库

两个单独的 WSFC 上使用两个 FCI

每个WSFC有两个以上的节点

数据库镜像允许单独 WSFC 上的多个 FCI 使用相同的实例名称

 

 

SQLServer 2012/2014 的时候使用 local WSFC+DR AG方式,对象是可用性组(一般为整个实例)

单个 WSFC 上使用两个 FCI

单个 WSFC 含有四个以上节点,每个FCI(failover cluster instance)有两个以上的节点

在同一个 WSFC 内,两个 FCI 必须使用不同的实例名称,例如,使用“INST_A”作为主 FCI 的实例名称,使用“INST_B”作为 DR FCI 的实例名称

 核心业务dr使用集群

 

非核心业务dr使用单实例

 

 

(*)由于跨机房的WSFC,共享存储的注意事项

每个 FCI 都有自己的共享存储(其他数据中心内的节点无法访问),称作非对称存储

两个 FCI 中的数据库文件和事务日志文件也应该使用完全相同的文件路径,磁盘应使用完全相同的驱动器号(避免搭建ag,还原辅助副本的时候使用restore with move/创建文件组或者日志操作的失败)

每个FCI中,SQL Server 实例的 FCI 故障转移是自动执行的;AG的故障转移模式必须是手动,AG同步模式建议异步提交

 

(*)由于跨机房的WSFC,仲裁投票、仲裁模型 的注意事项

默认情况下,故障转移群集中的每个节点都具有投票( 节点的 NodeWeight 属性),引入一个修补程序 (http://support.microsoft.com/kb/2494036(用于将 1 个投票分配给 WSFC 中的特定节点,将 0 个投票分配给其他一些节点),拓扑中的每个节点上都必须安装此修补程序

投票方案:

  • 主数据中心的每个节点有 1 个投票
  • DR数据中心的每个节点有 0 个投票

作为最佳做法,WSFC 的投票总数应为奇数。如果投票节点数目为偶数(上图示例拓扑),应在各自FCI中备机节点(避免使用文件仲裁,管理成本高)

(*)发生dr切换时

如果主数据中心发生停机,正常切换到DR数据中心时,需要对DR重新设置仲裁配置。必须向DR数据中心的每个节点都分配一个投票,而将主数据中心每个节点上的投票都设置为“0”

当主数据中心恢复活动后,还要再次对投票进行调整

--查看仲裁设置

SELECT cluster_name, quorum_type_desc, quorum_state_desc
FROM sys.dm_hadr_cluster;

--查看是否有投票权

SELECT member_name, number_of_quorum_votes
FROM sys.dm_hadr_cluster_members
order by number_of_quorum_votes desc

 

--完全设置

 

 

PowerShell

查看所有节点的当前投票设置

         Get-ClusterNode | fl NodeName, NodeWeight

将某一节点的投票设置为“0

   (Get-ClusterNode "DRNode1").NodeWeight=0

 

 

 

 

 

--注意:

windows故障转移集群+ag环境时,不能再将ag的自动故障转移打开,但可以打开同步模式

由于只能使用windows故障转移,所以避免主机房节点失败,没有正常切换到主机房的备机,需要拉掉dr机房的投票权(避免故障转移到dr,实际上搭ag之前需要拉掉overlap的节点,不允许集群不同实例间出现节点交叉)

The FCI already has automatic failover configured between the nodes.

The current implementation of AG doe not allow a failover outside of the FCI nodes.

详见:

https://blogs.msdn.microsoft.com/arvindsh/2012/09/26/alwayson-availability-group-forced-failover-under-the-hood/

相关文章:

  • Java编程笔试面试题:分析下列程序的执行结果
  • 机器学习常见的优化算法
  • SQL 内连接,外连接(左外连接、右外连接)
  • 进程和任务计划
  • 文件、目录管理
  • centos7安装配置mysql5.6
  • 类的成员和嵌套(建模)
  • vue-组件基础
  • 办公用品管理系统VB——库存数量导出EXCEL,SaveEXCEL
  • 字节、字、bit、byte的关系
  • Timer 控件中的Elapsed事件与tick事件的区别
  • @ConfigurationProperties注解对数据的自动封装
  • Java 中创建子类对象会创建父类对象么?
  • 通过PXE部署系统时报错 0xc000000f
  • RabbitMQ之消息确认机制(事务+Confirm)
  • [NodeJS] 关于Buffer
  • Angular 4.x 动态创建组件
  • CentOS 7 防火墙操作
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • JavaScript的使用你知道几种?(上)
  • JavaScript设计模式与开发实践系列之策略模式
  • JavaScript设计模式之工厂模式
  • Java的Interrupt与线程中断
  • Netty源码解析1-Buffer
  • nodejs调试方法
  • Service Worker
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • Vue官网教程学习过程中值得记录的一些事情
  • vue脚手架vue-cli
  • Zepto.js源码学习之二
  • 测试开发系类之接口自动化测试
  • 好的网址,关于.net 4.0 ,vs 2010
  • 简单实现一个textarea自适应高度
  • 前端js -- this指向总结。
  • 问题之ssh中Host key verification failed的解决
  • 一份游戏开发学习路线
  • 《天龙八部3D》Unity技术方案揭秘
  • 大数据全解:定义、价值及挑战
  • ###C语言程序设计-----C语言学习(6)#
  • ${ }的特别功能
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (+4)2.2UML建模图
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (poj1.3.2)1791(构造法模拟)
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (强烈推荐)移动端音视频从零到上手(下)
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .form文件_一篇文章学会文件上传
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • @Data注解的作用
  • @RunWith注解作用