存储层面的复制技术基本以存储块为单位进行的数据复制,假设数据块发生了逻辑错误,那么存储是无法检测到的,它会继续将坏的数据块儿同步到灾备端,如果因此数据库发生宕机,那么灾备端的数据库也同样无法正常启动。
无论复制方式是同步、异步、双活还是连续性数据保护,都是基于存储数据块级别的复制技术,复制源端在可读时,会将块中的数据原样的拷贝一份至目标端,当源端数据出现误删、误改、磁区退化数据异变、数据库事物层逻辑错误等数据逻辑性错误时,复制目标端无法检测到这些错误,依旧复制“错误”的数据,导致两份副本都无法正常使用。
所以要设置多层次的防范机制,保障数据的可靠性和安全性,存储双活技术只是其中的一个层次,要辅以备份技术、数据库复制技术,连续性数据保护,建立了完善的数据保障体系。
( 1 )备份系统按照一定的时间频率对数据库做全量和增量备份,在遇到数据逻辑错误时,通过恢复将数据回退到最后一个备份版本。如 TSM 、 NBU 、 COMMVAULT 。
( 2 )数据库复制技术有实时同步、准同步、异步等方式,保障主数据库逻辑错误无法正常运行时,切至备数据库,回退到备库前一个日志 COMMIT 后的版本。如 DB2 HADR 、 ORACLE ADG 、 MYSQL 主从复制等。
( 3 )连续性数据保护技术也是准 / 实时对存储数据块做快照,源端数据无法继续使用时,通过快照回退至前一个数据可用版本。如 CDP 。
为了不影响源端数据的访问性能或者单个系统无法满足需求时,可以考虑多种方式结合,比如备份系统在备份超大数据库时,没有充足的带宽或者备份时间窗口,可以用数据库的异步复制方式来做为备份方式的补充;连续性数据保护技术需要通过 LVM 镜像源端数据,增加了写延迟,可以通过数据库准实时同步或者异步的方式复制数据到备库节点,备库节点的后端存储为连续性数据保护的存储节点,如 DB2 HADR+CDP 的组合。
收起理解你说的情况是,数据库的数据还是正确的,但是写到存储上时,这个数据就发生错误了,而且这个错误没有被检测出来;数据存入磁盘时都有检验算法,除非这个逻辑错误又错的正好逃过校验算法,个人感觉这个问题不要考虑太多了。
收起无论是adg数据库复制技术还是存储复制技术都无法预防逻辑错误,预防逻辑错误最好的办法就只能是通过备份,当出现逻辑错误的时候,通过备份数据及备份的日志文件进行数据回滚,回滚到逻辑错误前的时间段数据。
收起