同城容灾双活中,企业常会遇到以下问题,如:
1、采用哪种灾备技术实现灾备主库和备端的数据复制?
2、如何实现主库故障时,备端数据中心业务的即时切换?
3、如何保障数据中心访问的连续性以及数据、业务安全?
英方i2CDP(Continuous Data Protection) 将变化的数据实时复制到灾备服务器的同时,把数据的变化以日志方式记录下来。在系统故障时根据数据变化日志,快速定位需要恢复的时间点,将数据一键恢复到异常点之前,保证数据的安全性和业务连续性。
i2Availability 应用级的高可用保护软件。在数据层能实现实时捕获生产数据并复制到灾备服务器 ; 应用层实现实时监控运行状态,若出现异常 ( 如服务异常停止、网络异常、硬件故障、系统宕机 ) 导致业务不可达时,将应用切换到灾备服务器上,通过应用接管实现业务的连续。
Windowscluster要求同一个cluster中的所有windows版本都是相同的,这样就出现一个问题,当我们要将对windows进行升级时,(例如从windows2008R2升级到windows2012)不得不搭建一套新的windowscluster。你可以选择使用新的硬件搭建,或者将现有windowscluster中的节点一台一台的evict掉,重装/升级系统后加入到新的windowscluster中。具体的cluster升级方案我就不在这里讨论。马上进入主题:sqlserverAlwaysOnAvailabilityGroup(后文简称为AG)的一个要求是:所有的replica都要求隶属于同一个windowscluster。所以当我们对windowscluster进行升级时,无法在新的windowscluster和现有的windowscluster之间建立AG。那么在迁移过程中会有一段时间内AG无法对外提供服务。从数据库的角度上说,我们需要做下面的事情接下来停止应用并删除cluster1中的Listener,确保没有外界来接使用SQLSERVERBackupdatabaseBackuptaillog将备份文件copy到新的服务器Restore到各个服务器然后重新建立AG创建Listener重启应用我们需要将数据库备份并还原到新的primaryreplica和secondaryreplica。相应的downtime时间就是1+2+3+4+5+6+7+8想要的时间。或许你想到了在新旧cluster之间创建一个mirroring,但遗憾的是,创建了AG的数据库是不再允许创建mirroring的那应当如何进行迁移呢从SQLServer2012SP1开始,允许在两套不同的windowscluster之间创建AG。下面用一个例子说明一下有一个三个节点的windowscluster,windows版本为Windows2008R2Domain:liweiyin3labClustername:cluster1Server002Server003Server004Listenername:Listener1三个节点上装有SQLServer2012SP1的standalone实例。均为默认实例。之间建立了AG拓扑图如下:现在创建一套两个节点的windows2012的windowsclusterDomain:liweiyin3labClustername:cluster2Server005Server006对cluster1上的AG数据库进行备份,包含fulldatabasebackup和logbackup两个cluster中间创建AG:将第一步得到的文件在cluster2的节点上进行还原,指定为withnorecovery接下来在cluster2的三个数据库上执行下面的语句ALTERSERVERCONFIGURATIONSETHADRCLUSTERCONTEXT='cluster1liweiyin3lab'这条语句执行完毕后,这台数据库的clustercontext就会切换为cluster1了。这个结果可以从下面的DMV中检查到selectcluster_namefromsysdm_hadr_cluster接下就可以在cluster1和cluster2之间建立AG。我们可以使用UI或者T-SQL语句。需要注意的是,请将cluster2中的至少一个SQLServer的同步模式设置为Synchronouscommit,以保证迁移是没有数据损失的。这样,我们就建立了一套既包含win2008R2,也包含win2012的AG环境了。并且也可以正常地向外界提供服务,整个流程不需要downtime但需要注意的是,这种情况下是不允许在两个cluster之间进行failover的。相应的提示信息如下AnattempttofailoverorcreateanavailabilitygroupfailedThisoperationisnotsupportedwhenAlwaysOnAvailabilityGroupsisrunningunderaremoteWindowsServerFailoverClustering(WSFC)clustercontextUnderaremoteclustercontext,failingoverorcreatingavailabilitygroupsarenotsupported接下来停止应用并删除cluster1中的Listener,确保没有外界来接使用SQLSERVER在Cluster1将AG进行offline *** 作ALTERAVAILABILITYGROUPdbNameoffline将cluster2中所有sqlserver的CLUSTERCONTEXT切换回来ALTERSERVERCONFIGURATIONSETHADRCLUSTERCONTEXT=local在cluster2中重新创建AG在cluster2中创建新的listener重启应用这样所涉及的downtime就是5+6+7+8+9+10和之前的解决方案相比,省去了backup,文件copy和restore的时间。其余的 *** 作都是句 *** 作,很大程度地减少了downtime。更多信息===迁移之前,Cluster2中的sqlserver不允许创建任何AG。迁移之前需要授予cluster2中的sqlserver启动账号访问cluster1注册表的权限ChangetheHADRClusterContextofServerInstance(SQLServer)
异地多活(异地双活)是最近业界讨论比较多的话题,特别是前一阵子支付宝机房光纤故障和携程网数据库丢失之后,更加唤起了技术人员们对异地容灾的考虑。
而异地多活比异地容灾更高一级,因为异地容灾仅仅是一个冷备的概念,而异地多活却是指有两个或者多个可以同时对外服务的节点,任意一个点挂了,也可以迅速切换到其他节点对外服务,节点之间的数据做到准实时同步。
网上看了很多技术分享,总结了以下实践经验:
1 如果业务量不大,没必要做异地多活,因为异地多活需要的运维资源成本、开发成本都非常高;
2 注意机房间的延时问题,延时大的可能达到100ms以上,如果业务需要多次跨机房请求应用的话,延迟的问题会彻底放大;
3 跨机房的专线很大概率会出问题,要做好运维或者程序层面的容错;
4 不能依赖MySQL双写,必须有适应自身业务的跨机房消息同步方案;
5 MySQL或者其他存储的数据同步问题,在高延时和较差的网络质量的情况下,考虑如何保证同步质量;
6 核心业务和次要业务需要分而治之,异地多活的业务形式越简单越好,甚至可以只做核心业务;
7 异地多活的监控、部署、测试等流程也要跟上;
8 在业务允许的情况下,考虑用户分区,特别是游戏、邮箱业务比较容易做到;
9 控制跨机房消息体大小,越小越好;
10 考虑使用docker等容器虚拟化技术,提高动态调度能力
以上就是关于在同城容灾双活中,企业都会遇到哪些困惑全部的内容,包括:在同城容灾双活中,企业都会遇到哪些困惑、SqlServer 2012 Cluster 可以实现双活吗、oracle adg可以做双活吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)