对于数据库层面的数据复制技术来讲,最为相近的应该是oracle dg和db2 hadr了,都属于日志方式的复制。但是在复制的具体原理和细节机制以及配置上肯定会有一些差异点,欢迎大家就自己知道的一些东西贡献出自己的理解。
有一篇文章关于DB2 HADR三种日志复制模式写的非常好,推荐给大家:
https://www.ibm.com/developerworks/cn/data/library/techarticles/dm-1010baosf/
oracle的dataguard同步方式有两种,一种是同步,一种异步。下面先来说下DG的原理:
当用户在主库提交数据的时候,会在sga的redo缓冲区中首先记录redo信息,在提及操作的时候lgwr会将redo数据写入redo数据文件中,那么这个时候lns进程会实时的将redo数据从主库的redo缓冲区传送到备库,在备库使用rfs接受数据,传入standby logfile中,进而应用redo数据(sql apply)。在应用完成后rfs将信息返回主库进程,告知该redo条目已经在备库应用完毕,lgwr收到lns的确认消息,从而提示提交成功。
在最高可用性中,如果主库收不到备库应用的确认消息,那么会通过net_timeout值超时,继续完成本次操作,那么lns进程将不会在获得sga中的重做数据,只有当下次日志switch的时候才主动去尝试获得lns数据,如果期间还是没有和备库完成通信,当超过net_timeout参数的时候会继续停止,主机事务也继续完成,但当存在于最大保护模式下,那么必须等到备库应用redo的确认消息,那么就会停止数据库的运行操作。
收起