ORACLE 12C R2 DATAGUARD ——FAR SYNC INSTANCE部署

作者简介:张舒,现就任于北京海天起点技术服务股份有限公司天津办事处,担任数据库工程师,持有11g OCP证书,主要服务于政府部门及银行,具有丰富的一线工作经验。

 

远程同步实例(far sync instance)介绍

本文主要介绍Oracle 12C Data Guard推出的一个特性Far Sync Instance.先看两张结构梗概图:



图一:Typical Oracle Data Guard Configuration



图二:Oracle Data Guard far sync instance Configuration

图一,典型传统的dataguard,为了保证primary数据库的性能通常采用异步传输的方式进行数据同步,而异步这种方式的弊端就是主数据库出现故障有可能就会造成数据的丢失,而数据丢失对于有些行业是万万不能发生的。如果采用sync方式,选择的保护模式有两种:

1.最大保护模式(最大保护模式中,如果备库出现问题那么主库会被关闭,直接影响正常业务,即使采用双备库模式,网络效率瓶颈也是必须考虑的问题)。

2.最高可用模式(代价是备库接收redo写入磁盘I/O和对主库响应所致的性能影响

这两种模式的日志传输方式都会对主库有性能影响。在oracle 12c dataguard中允许sync/noaffirm日志传输方式,也称FastSync,主服务器执行写操作,仅等待确认已在备用数据库上接收到数据,而不是等待已写入磁盘。采用这种方式虽然减少了备库写的时间,但是一旦备库crash,内存中的redo数据还没有写入磁盘,那么也会造成数据丢失。

图二,我们可以发现中间多了一部分,这就是far sync instance,Oracle 12c Dataguard Far Sync Instance(远程同步实例),它的特点如下:

  1. Far Sync Instance(远程同步实例)与主数据库之间是采用同步传输方式,并且作为一个”中转”,它采用最高可用模式,只负责接收然后传递,不进行apply,而且可以放置在与主库距离较近的位置(比如主数据库在天津,备数据库在北京,可以在天津武清配置Far sync instance,甚至就与主库放在同一个机房!),保证了网络传输的高效性。
  2. 另外远程同步实例的优势就是可以确保零数据丢失,在主库出现故障后,同步到far sync instance中的重做日志可继续为备库提供redo传递。而且主库到Far sync instance可以采用SYNC/NOAFFIRM传输方式,根据图中的DEST_3在主库配置了备用目的(alternate destination)如果远程同步实例出现故障,主库将启用备用目录传递redo日志,即使Far sync instance意外断电,主库依然和备库保持通信。
  3. 看到far sync instance,应该会想到cascading dataguard(级联dataguard),级联dataguard这种方式在中间的备库是需要有数据存在和需要apply日志的过程,然后远处的级联接收备库传来的redo日志再一次进行apply。配置far sync instance只占用非常少的磁盘和处理资源,不需要数据文件,不需要apply日志,如果数据量级别非常大,可以节省了存储资源开销和应用日志的时间。
  4. 远程同步实例是Oracle Active Data Guard远程同步功能的一部分,该功能需要Oracle Active Data Guard许可证
  5. 远程同步实例没有用户数据文件,无法打开访问权限,无法运行重做应用程序,也无法在主要角色中运行或转换为任何类型的备用数据库。

配置

环境:

  主库(RAC) Far sync实例 备库
OS Hostname tianjin01,tianjin02 tianjinFS beijing
OS Version OEL6.8 OEL6.8 OEL6.8
DB Version 12.2.0.1 12.2.0.1 12.2.0.1
db_name tianjin tianjin tianjin
db_unique_name tianjin tianjinFS beijing
service_names tianjin tianjinFS beijing
instance_name tianjin1,tianjin2 tianjinFS beijing

Primary database configure

启用primary force logging

在使用DATA GUARD 时,要求使用强制记录日志模式。注:FORCE LOGGING并不比一般的LOGGING记录的日志多,而是数据库在FORCE LOGGING状态下,NOLOGGING选项将无效,因为NOLOGGING将破坏DATAGUARD的可恢复性.FORCE LOGGING强制数据库在任何状态下必须记录日志。

配置redo传输认证

tnsnames.ora 文件的存放路径为 $ORACLE_HOME/network/admin

目的是保持主机间实例的通信,有效的传输重做日志。

(1) tnsnames.ora

(2) tnsping命令解析网络服务名,命令须返回OK.

$ tnsping tianjin

(3) 密码文件

格式:orapw<ORACLE_SID>

far sync instance和standby database要与primary database的密码文件一致

Oracle 12c rac密码文件默认路径为+data/tianjin/password


重命名redo logfile

如果安装RAC时采用了OMF管理,则重命名redo logfile,以便对应standby FS logfile.

查看log file:

注:如果没有采用OMF方式命名,此步骤可以跳过

添加standby logfiles

添加standby logfile 的要求:

(1) 主和备数据库上的日志文件大小应该保持大小一致

(2) 确定备库重做日志文件组的适当数目

Standby logfile数 = (每个线程的logfile数+1)* 线程数

(3) 检查create database时指定的MAXLOGFILES和MAXLOGMEMBERS参数,可以通过trace controlfile出来查看

(4) RAC环境创建standby logfile,指定thread#创建

每个thread的standby logfile数 = 每个thread的logfile数 + 1

检查当前环境的logfile:

根据查询的logfile 信息上文添加standby logfile的要求,添加合理的standby logfile,然后用上面的sql再次查看当前环境的logfile:

修改primary参数文件

备份spfile

create pfile=’/home/oracle/pfile.txt’ from spfile;

修改以下参数,其中tianjin,beijing分别为primary,standby的db_unqiue_name和TNS-Alias:

—以下参数生效需要重启实例,主库以备库角色运行时需要额外设置的参数

打开归档模式

首先确认当前数据库是否是归档模式,如果不是,则打开归档模式。

备份primary database

创建存放备份文件目录:

Standby database configure

配置环境变量

Oracle用户环境变量 vi .bash_profile

配置redo传输认证

(1) listener.ora

配置静态监听:

(2) tnsnames.ora

(3) tnsping命令解析网络服务名,命令须返回OK.

(4) 密码文件

使用主库的密码文件,主库操作时已经将密码文件拷贝到$ORACLE_HOME/dbs下

创建相关目录

参数文件

用primary的pfile加以修改,以保证某些参数与primary保持一致。

修改pfile为需要的standby pfile,并创建spfile.特别注意以下事例的参数设定:

—主、备库日志文件和数据文件存放路径不一致,设定以下参数:

—创建spfile

恢复standby controlfile

恢复数据文件

RAC+ASM到单实例文件系统DG,standby 与primary数据文件存放路径不一致。

查询primary database的数据文件信息:

启动standby到mount阶段,恢复数据文件:

查看standby database log file:

应用日志

应用archive log:

应用redo logfile:

取消应用日志:

打开数据库至read only模式并开始实时复制:

观察日志传输

跟踪primary,standby database的alert log,观察是否有错误发生,也可以看到应用日志的相关信息。

确认standby是否应用日志:

–primary端多切几次日志,观察alert log信息。

–观察主备库日志序列号

–primary端查询v$archived_log视图,确认日志是否被应用:

–primary端查询primary,standby的最大日志序列号是否一致:

Create a Far Sync Instance

创建 far sync instance 和创建物理standby相似,只是在far sync instance中不存在数据文件。

创建相关目录

参数文件

–Primary Database tianjin做以下操作:

–Far Sync Instance tianjinFS

–Physical Standby beijing

创建spfile

为far sync instance创建控制文件

1.主库操作:

—Primary至少处于mount状态

—将主库备份的控制文件拷贝到far sync instance

Scp control01.ctl 到far sync实例的’/home/oracle/’目录

2.恢复控制文件:

3.启动到mount:

创建standby redo log

配置redo传输认证

(1) listener.ora

配置静态监听:

启用监听:

(2) tnsnames.ora

(3) tnsping命令解析网络服务名,命令须返回OK.

(4) 密码文件

使用主库的密码文件,在主库操作时已经cp到 $ORACLE_HOME/dbs/inittianjinFS.ora

主库开启最高可用模式

—开启最高可用模式,原因在文章介绍中说明

验证配置

在创建它之后验证Oracle Data Guard配置,请从配置中的任何数据库查询

V $ DATAGUARD_CONFIG视图。

7.观察日志传输

Primary 切换日志:

Far sync instance:

Standby:

Far sync instance部署完成!

Alternate destination

在执行创建和配置远程同步实例中的步骤之后,实现了转发重做从远程站点到终端standby数据库零数据丢失.但是如果远程同步实例宕机,那么重做日志就无法传递,要使配置在远程同步实例无法访问的情况下保持传输不受影响,可以为备用数据库配置备用重做传输路径.

该部分对备用目的地进行说明和配置.其中涉及参数log_archive_dest_n, log_archive_dest_state_n.

oracle 11.2版本中, 在Log_archive_dest_n中使用备用目的路径需要在这个参数中使用alternate属性和max_failure属性,配置示例:

注:设置DEST_3为备用DEST,当DEST_2不可用,redo通过异步传输方式直接到备库。

oracle 12.2版本开始,Log_archive_dest_n,为远程备用数据库创建备用日志归档目标以及在主动目标失败时接管远程同步实例的首选方法是使用group和priority属性,对group和priority的说明请参阅官方文(https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sbydb/LOG_ARCHIVE_DEST_n-parameter-attributes.html#GUID-99D83167-AA3A-4311-B2A9-6E38A353E33C)

—-17.7和17.14部分

配置示例

—只需要在primary进行配置

配置参数后,shutdown远程同步实例far sync instance,在primary database 的alert日志中显示如下图:

log_archive_dest_2路径失败,根据参数,oracle primary database 会选择备用路径3,绕过远程同步实例,直接与standby database进行传输redo。这极大的保护了日志传输的可靠性。

附:DG BROKER配置12c Far sync instance

oracle Data Guard Broker简介

Oracle Data Guard Broker 是一个分布式管理框架,可自动化和集中化的完成Oracle Data Guard的创建、配置、维护和监视。Data Guard Broker使得配置方便变得更见简单快捷,而且能够实现从单个台主机配置和管理多个数据库,并自动统一代理配置中的所有数据库。可以自动设置重做传输服务和日志应用服务,简化通过sql语句管理的方式。可通过单条命令实现Switchover和Failover的操作,而且通过配置可以指定数据库自动实现Failover,整个过程无须人工干预,避免了突发状况造成的数据损失或者应用停滞。在监控方面也实现了对整个环境运行状况,数据库运行状况,数据同步状态及其他运行时参数的持续监视,提供了统一的更新状态和详细报告。

在使用borker配置far sync instance之前需要使用broker配置好primary database和standby database

参数文件

监听文件中添加

修改数据库参数,开启dg_broker

DG BROKER配置Far sync 实例

1.进入DGMGRL

使配置生效

配置redo传输路线(主库>Far sync>备库):

主库查询:

主库切换日志,查看Far sync及备库日志应用状态

Far sync alter日志显示信息:

备库查询:

数据同步正常。

至此,12c Far sync通过Dg Broker的方式配置完成。

未经允许不得转载:Oracle一体机用户组 » ORACLE 12C R2 DATAGUARD ——FAR SYNC INSTANCE部署

相关推荐