存储复制有 同步异步复制技术,数据库复制中也有同步和异步技术之分。
拿存储同步举例,如果生产中心的存储和同城灾备中心的存储采用同步复制技术,那么一旦生产中心的数据损坏,是不是同城灾备中心的数据也同样损坏?那么同城灾备中心可以抵御灾难风险吗?
同步复制技术是不是应对灾难的场景有太多的局限性?
如果同步复制技术只能保护因存储硬件损坏而带来的灾难,那么花费巨资购投入是否值得?
这个要回到数据复制的原理上来看。
1. 基于镜像技术实现的数据复制技术(无论是基于系统层还是存储层)以及基于存储本身Block Copy的技术实现的数据复制技术,都存在逻辑Block错误传导的问题。也就是说一旦发生存储Block错误,那么它一定会传导到备数据中心。本质上是因为这种传输机制跟IO应用没关系,识别不到IO应用层的数据,所以有些数据虽然在应用层看已经是坏掉的数据了,但是存储层完全识别不到,所以正常复制。
但是,这种问题在整个数据中心容灾可防范的灾难列表里面占据的比例非常小。
2. 基于数据库重做日志实现的数据复制技术,不存在这种问题。因为它是应用层的复制,它复制的是数据库层做过的事务,是过程复制,不是结果复制。只要过程没错,那么结果就不会有问题。即使主中心的存储Block发生了错误,但是在灾备中心经过日志回放实现的数据结果不会受到任何影响。所以从这一点上,这种技术相对安全。
3. 如果是人为失误造成的数据损坏,那就是备份技术解决的问题了,不是容灾方案能解决的了(比如DBA的误操作删除了一些数据,无论哪种数据复制技术都会传导到灾备中心,容灾方案没有义务也没有能力来区分DBA的操作到底是不是失误)。
收起楼主的分类是以应用架构分层角度看,还有一种分类方法是物理复制和逻辑复制(比如日志同步的CDC)。数据同步时,可以采用逻辑校验的模式,如果生产中心数据损坏,在读取块时可以检查逻辑错误,不会产生坏快。
同步复制技术如果在同城复制,无法解决城市级故障,如果采用银行业的两地三中心灾备模式,在业务高峰期可能存在异地复制的延迟,这些都可以通过RTO和RPO的参数指标进行解决。
是否值得取决于投入和产出比、对数据重要性的重视度。
收起