Data Guard 与Straem流复制的介绍,两者异同

来源:互联网 发布:淘宝神笔保存后在哪里 编辑:程序博客网 时间:2024/05/22 10:27
 

Data Guard

 Data Guard是通过冗余数据来提供数据保护的。Data Guard通过日志同步机制保证冗余数据和主数据之间的同步,这种同步可以是实时,延时,同步,异步多种形式。Data Guard常用于异地容灾和小企业的高可用性方案,虽然可以在Standby机器上执行只读查询,从而分散Primary数据库的性能压力,但是Data Guard绝不是性能解决方案。

 在Data Guard环境中,至少会有两个数据库,一个数据库处于Open状态,对外提供服务,这个数据库叫作Primary Database。第二个数据库处于恢复状态,叫做Standby Database。运行时Primary Database对外提供服务,用户在Primary Database上进行操作,操作被记录在联机日志和归档日志中,这些日志通过网络传递给Standby Database.这些日志会再Standby Database中重演,从而实现同步。

 如果因为一场原因导致Primary Database不可用,可把Standby Database强制切换为Primary Database。

 Data Guard架构可以按照功能分为三部分:日志发送,日志接收,日志应用。

Stream Replication流复制

 Stream是Oracle的消息队列(也叫Oracle Advanced Queue)技术的一种扩展应用。Oracle的消息队列和读者已知的其他队列产品功能类似,都是通过发布/订阅的方式来解决事件管理。流复制只是基于它的一个数据共享技术,但是也可以被用作一个可灵活定制的高可用性方案。它可以实现两个数据库之间数据库级,Schema级,Table级的数据同步,并且这种同步可以是双向的。Oracle Stream也是通过数据冗余来提供高可用性。

 Oracle高级复制(Oracle Advanced Replication)和流复制(Stream Replication)是从名称和功能上都很相似的两种技术,但是前者是基于触发器的,后者是基于日志挖掘技术,不能混为一谈。

 Stream环境配置好后,在source database上会有一个捕获进程(Capture Process),该进程利用Logminer技术葱日志中提取DDL,DML语句,这些语句用一种特殊的格式表达,叫做逻辑变更记录(Logical Change Record,LCR)。源数据库上的一个DML语句可能对应着若干个LCR记录。这谢谢LCR会保存到source database的本地发送队列中。然后传播进程(Propagation Process)把这些记录通过网络发送到Target Database的接收队列。而在Target Database上会有一个应用进程(Apply Process),这个进程从本地的接收队列中取出LCR记录,然后再本地应用,实现数据同步。

 Stream前需确定复制集,如只选择某些用户下得数据,决定复制站点,如小型机的数据复制到一台PC Server。决定LCR是本地捕获还是下游捕获,本地捕获从联机日志和归档日志获得数据,异地捕获只能从归档日志获得数据,所以本地捕获可以在灾难发生时保护更多的数据,但会占用少许生产环境的资源。


Data Guard与Stream对比

 Stream与Data Guard类似,都是有三个功能模块,日志传送,日志接收,日志应用。

 1.Stream用到了LCR,是逻辑上的同步。Data Guard是物理的同步。
 2.Stream主要是为了数据共享,Data Guard主要为了提高灾难恢复和高可用性。
 3.Stream可以多方向同步,Data Guard只能是单向(从Primary->Standby)
 4.前者数据粒度可以是数据库,Schema,Table三个级别,后者只有数据库级别。
 5.前者支持一种平台间的同步,后者必须同种平台。
 6.前者参与复制的每个数据库都可以读写,后者只有Primary数据库可读写,Standby最多只能够读。
 7.前者支持Oracle和非Oracle数据库间的同步,后者只能是Oracle数据库间。
 8.前者复制对象有数据类型的限制,后者没有。

原创粉丝点击