目前公司有一套核心交易数据库配置了AlWaysON,SQL 2012版本, 1主4从, 其从库(8,14, 8.15) 这2台只读的从数据库服务器, 后台程序和wms等不少程序,都是直接配置IP链接这个2个机器,并且这2台机器已通过保,若是其中一天机器出现故障,不能使用,怎么处理?数据库
这2台机器都有不少程序只读查询操做,一旦一台挂了,起不来(虽然几率很低), 连故障服务器的程序,IP要改,同时程序要重启, 这些程序和服务,还不少,很容易漏。一旦出现故障,至少按小时算业务才能恢复,波及的面很广,确定一级事故,其余最大的老板确定会知道。windows
本身咨询了其余同行他们的作法:服务器
1,用域名替换IP,当IP的服务器有问题,修改DNS服务器就能够框架
2,使用相似的MyCAT中间件,目的读库有故障漂移到其余读库中运维
3,使用硬件,如携程他们的A10,能够作相关的分发测试
4,可使用SQL AlwaysON的只读路由,让程序连主库,在主库作只读路由分发到读库spa
的确这些方法都能解决前面提到的读库故障转移:中间件
1,用域名替换IP,同行能用,可是和他们这边的开发和运维聊了后,说这个域名替换IP的方案不可靠, 由于如今咱们程序用域名,有时就出现莫名其妙的延迟问题,如今运维的技术只能哈哈,没法保证。 这个方案不行路由
2,使用中间件来作故障转移,和相关的框架开发,领导聊了,结论:没人没时间,不稳定,并且须要大量的测试,作不了。 这个方案不行开发
3,购买A10这样的硬件,贵,咱们提也会被公司否。 这个方案不行
4,利用AlwaysON的只读路由, 本身也想了,如今由于主库的压力大查读库的,变成了先要到主库作一次路由分发,主库压力会更大,并且路由没法指定到那个机器,不能作流量控制。 这个方案不行
这一看市面上通用的方法一个也不适合咱们,只能祈祷这2台服务器不出故障,即便出故障,也能重启后就行了。 真的只有这样的吗? 还有其余办法解决这个难题:
这个问题一直困扰,怎么解决,没有其余办法了,看起来全部的办法都不是很好的,只能留下一个笨办法
比较好方案: 找到所有连这2台的程序配置文件和须要重启的服务,预先找到所有,一旦有故障起不来, 当即批量修改和重启。 这样就能够了
可是这个方案我一直想找开发和测试聊,看看可否作出个“故障预案“,一直没有去作。
公司一部分的数据库有MySQL,在配置keepalived,MHA,和MMM,大量的使用了虚IP,在CentOS里配置虚IP结合这些开源的组件,的确很方便,在Windows里是否也能够利用这虚IP,若是哪天8.15这个数据库服务器挂了,是否也能够虚IP
本身想了想,windows里加虚IP,就是直接加个IP就能够了。若是真的8.15挂了,我把8.15的IP加到8.14服务器,是否可行?
又出现问题:
windows的故障转移集群和AlwaysON ,连的是8.15,把IP加到8.14是对现有的集群有影响。
后来想了想:
若是真的是8.15集群出故障,启动不来,不是能够把8.15踢出故障转移集群和AlwaysON,再添加IP到8.14不就行了。
这几天测试了一下这个流程,的确是能够的。
(8.15, 8.14) 这2台读库服务器,出现故障,没法起来时,把故障的服务器踢出故障转移集群和AlwaysON,再添加新IP到其余读服务器上,同时前提在各读库服务器加上统一的帐户和密码。这样,虽然不能作到无缝切换,
但也能最大程度上减小故障时间,等后面条件成熟了,能够用其余办法。
目前8.15和8.14由于服务器过保,目前也准备用这个方案来作服务器替换,用这个加虚IP的方法下架旧服务器和上架新服务器。目前正在测试,等切换完后,再介绍一下切换过程。
但愿对你们解决问题思路上有些启发,天无绝人之路,只要你用心,会有收获,有时收获还不少!!