为了验证异地机房的灾备能力,需要定期在异地机房进行演练。为防止演练影响到生产系统,为演练单独设置一个子网段。正常期间子网段与大网段互通,演练期间断开,形成网络孤岛。演练期间,异地机房仍要提供灾备能力。 孤岛演练要求在主节点上进行,这样才有效验证灾难发生时这些主节点可以提供服务。考虑到演练期间存在灾备切换的可能,演练期间将备节点提升为主节点接入到主机房,继续提供灾备能力。另外,为了减少演练期间对生产系统造成影响,会断开演练环境的网络,形成网络孤岛。

孤岛演练方案的关键设计
异地机房与同城机房类似,正常情况下两个备节点只启动DB进程,不启动管理进程。灾难发生时,本地机房和同城机房均不可用,由人工切换到异地机房。
元数据信息存储在管理节点RDB上,与运维平台的的DB分离。主备复制根据配置表仅复制管理数据,不复制运维平台监控所产生的动态数据。
演练开始前先进行主备切换,原备节点升级为新主节点,继续接通主中心提供灾备能力。
然后进行网络隔离,演练区的原主节点构成一个独立的分布式数据库系统,提供演练服务。特殊之处,管理节点在网络隔离后都在演练区,隔离后没有管理节点接入主中心。
由于演练期间异地机房没有管理节点接入主机房,此时主机房的元数据变更将不能及时备份到异地机房,发生灾备切换时存在元数据变更丢失的问题。因此演练期间不允许在主机房执行影响元数据的变更操作,如DDL、数据重分布和数据扩容等。如果有紧急的元数据变更操作,必须在两个机房同时执行。
演练机房也禁止此类元数据修改操作。演练机房如果变更元数据,这期间发生灾备切换时,元数据与主机房也是不一致的。为进一步防止此类异常情况,演练区停止原备管理节点,只使用原主管理节点提供演练服务。这样至少仍有一个节点的元数据在演练期间不会被修改。
演练结束后,恢复被停止的管理节点,主备关系切回,主节点恢复与主机房的复制关系,通过主管理节点DB恢复备管理节点DB的数据。




