加入收藏 | 设为首页 | 会员中心 | 我要投稿 广西网 (https://www.guangxiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

DataSync 异构数据同步

发布时间:2020-12-31 04:20:47 所属栏目:站长百科 来源:网络整理
导读:RAC,?Data?Gurad,?Stream?是Oracle?高可用性体系中的三种工具,每个工具即可以独立应用,也可以相互配合。?他们各自的侧重点不同,适用场景也不同。 RAC?它的强项在于解决单点故障和负载均衡,因此RAC?方案常用于7*24?的核心系统,但RAC?方案中的数据只有

??Primary?Database默认使用ARCH进程,如果使用LGWR进程必须明确指定。使用LGWR?SYNC方式时,可以同时使用NET_TIMEOUT参数,这个参数单位是秒,代表如果多长时间内网络发送没有响应,LGWR?进程会抛出错误。?示例如下:

alter?system?set?log_archive_dest_2?=?‘SERVICE=ST??LGWR??SYNC??NET_TIMEOUT=30‘?scope=both;

?

1.3?使用LGWR进程的ASYNC?方式

使用LGWR?SYNC方法的可能问题在于,如果日志发送给Standby?Database过程失败,LGWR进程就会报错。也就是说Primary?Database的LGWR?进程依赖于网络状况,有时这种要求可能过于苛刻,这时就可以使用LGWR?ASYNC方式。?它的工作机制如下:

1)?Primary?Database?一段产生Redo?日志后,LGWR?把日志同时提交给日志文件和本地LNS?进程,但是LGWR进程只需成功写入日志文件就可以,不必等待LNSn进程的网络传送成功。

2)?LNSn进程异步地把日志内容发送到Standby?Database。多个LNSn进程可以并发发送。

3)?Primary?Database的Online?Redo?Log?写满后发生Log?Switch,触发归档操作,也触发Standby?Database对Standby?Database对Standby?Redo?Log?的归档;然后触发MRP或者LSP?进程恢复归档日志。

?

因为LGWR进程不会等待LNSn进程的响应结果,所以配置LGWR?ASYNC方式时不需要NET_TIMEOUT参数。示例如下:

alter?system?set?log_archive_dest_2?=?‘SERVICE=ST??LGWR??ASYNC?‘?scope=both;

?

2.?日志接收(Redo?Receive)

Standby?Database?的RFS(Remote?File?Server)进程接收到日志后,就把日志写到Standby?Redo?Log或者Archived?Log文件中,具体写入哪个文件,取决于Primary?的日志传送方式和Standby?database的位置。如果写到Standby?Redo?Log文件中,则当Primary?Database发生日志切换时,也会触发Standby?Database上的Standby?Redo?Log?的日志切换,并把这个Standby?Redo?Log?归档。?如果是写到Archived?Log,那么这个动作本省也可以看作是个归档操作。

在日志接收中,需要注意的是归档日志会被放在什么位置:

1)?如果配置了STANDBY_ARCHIVE_DEST?参数,则使用该参数指定的目录。

2)?如果某个LOG_ARCHIVE_DEST_n?参数明确定义了VALID_FOR=(STANDBY_LOGFILE,*)选项,则使用这个参数指定的目录。

3)?如果数据库的COMPATIBLE参数大于等于10.0,则选取任意一个LOG_ARCHIVE_DEST_n的值。

4)?如果STANDBY_ARCHIVE_DEST?和?LOG_ARCHIVE_DEST_n?参数都没有配置,使用缺省的STANDBY_ARCHIVE_DEST参数值,这个缺省值是$ORACLE_HOME/dbs/arc.

?

3.?日志应用(Redo?Apply)

日志应用服务,就是在Standby?Database上重演Primary?Database日志,从而实现两个数据库的数据同步。?根据Standby?Database重演日志方式的不同,可分为物理Standby(Physical?Standby)?和?逻辑Standby(Logical?Standby)。

Physical?Standby?使用的是Media?Recovery?技术,在数据块级别进行恢复,这种方式没有数据类型的限制,可以保证两个数据库完全一致。?Physical?Standby数据库只能在Mount?状态下进行恢复,也可以是打开,但只能已只读方式打开,并且打开时不能执行恢复操作。

Logical?Standby?使用的是Logminer?技术,通过把日志内容还原成SQL?语句,然后SQL引擎执行这些语句,Logminer?Standby不支持所有数据类型,可以在视图DBA_LOGSTDBY_UNSUPPORTED?中查看不支持的数据类型,如果使用了这种数据类型,则不能保证数据库完全一致。?Logical?Standby数据库可以在恢复的同时进行读写操作。

?

Standby数据库的相关进程读取接收到的REDO数据(可能来自于Standby端的归档文件,也可能来自于Standby?Redologs),再将其写入Standby数据库。保存之后数据又是怎么生成的呢?两种方式:物理Standby通过REDO应用,逻辑Standby通过SQL应用

?

根据Redo?Apply发生的时间可以分成两种:?

一种是实时应用(Real-Time?Apply),?这种方式必须Standby?Redo?Log,每当日志被写入Standby?Redo?Log时,就会触发恢复,使用这种方式的好处在与可以减少数据库切换(Switchover?或者Failover)的时间,因为切换时间主要用在剩余日志的恢复上。?

另一种是归档时应用,这种方式在Primary?Database发生日志切换,触发Standby?Database?归档操作,归档完成后触发恢复。?这也是默认的恢复方式。

?

如果是Physical?Standby,可以使用下面命令启用Real-Time:

Alter?database?recover?managed?standby?database?using?current?logfile;

?

如果是Logical?Standby,可以使用下面命令启用Real-Time:

Alter?database?start?logical?standby?apply?immediate;

?

查看是否使用Real-Time?apply:

Select?recovery_mode?from?v$archive_dest_status;

?

?

SQL> set wrap off
SQL> select process,status,thread#,sequence#,client_pid from v$managed_standby;

PROCESS?? STATUS????????? THREAD#? SEQUENCE# CLIENT_PID
--------- ------------ ---------- ---------- -----------------------------------

ARCH????? CONNECTED???????????? 0????????? 0 240
ARCH????? CONNECTED???????????? 0????????? 0 196
ARCH????? CONNECTED???????????? 0????????? 0 1944
ARCH????? CONNECTED???????????? 0????????? 0 3956
MRP0????? WAIT_FOR_LOG????????? 1????? 30843 N/A
RFS?????? RECEIVING???????????? 1????? 30838 2620
RFS?????? RECEIVING???????????? 1????? 30837 2612
RFS?????? RECEIVING???????????? 1????? 30833 2652
RFS?????? ATTACHED????????????? 1????? 30841 2628
RFS?????? ATTACHED????????????? 1????? 30835 2604
RFS?????? ATTACHED????????????? 1????? 30842 2608

已选择11行。?

?

?

二.?数据保护模式

Data?Guard?允许定义3钟数据保护模式,分别是最大保护(Maximum?Protection),最大可用(Maximum?Availability)和?最大性能(Maximum?Performance)。

?

1.?最大保护(Maximum?Protection)

(编辑:广西网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!