数据库高可用部署方案
一、DataGuard介绍
DataGuard是ORACLE公司推出的一种高可用性数据库方案,最主要功能是冗灾、数据保护、故障恢复等。它是在主节点与备用节点间通过日志同步来保证数据的同步,可以实现数据库快速切换与灾难性恢复。Data Guard只是在软件上对数据库进行设置,并不需要额外购买任何组件。用户能够在对主数据库影响很小的情况下,实现主备数据库的同步。而主备机之间的数据差异只限于在线日志部分,因此被不少企业用作数据容灾解决方案。DataGuard可分为物理standby和逻辑standby:
1.物理standby
主备库之间物理结构逻辑结构保护一致。通常情况下备用库通过主库传输过来的归档日志做恢复。物理standby等同于生产库。物理standby能以read only方式打开(或者在flashback数据库下以"读写方式打开")。物理standby一旦以"读写"方式打开,备用库将不会从主数据库接受重做数据。只有当备库flashback到过去的点,当备用库flashback到"读写"打开时间点前的状态时,DataGuard会自动同步备库与主库,才能恢复standby角。
2.逻辑standby
只保证逻辑结构与主库一致。备用库要处于打开状态,通过从主库归档日志文件中提取出来的SQL语句做恢复。逻辑备库通过执行SQL语句来更新。DataGuard转换日志文件中的数据为SQL语句,然后在逻辑standby上执行SQL语句,因为逻辑standby是通过SQL语句来实现数据同步,那么在同步期间其必须保持打开状态。
流程图如下:
当然我们主要采用的是物理standby方式。Dataguard创建好后,主备有三种保护模式:
1.最大保护
这种模式主备库之间数据是同步的。即主库提交的同时,备库会做相应的恢复。最大限度的保证了数据完整性不允许数据的丢失。如果主备库之间网络,或者备库出现问题会直接影响主库操作。导致主库宕机。
2.最大可用性
这种模式和"最大保护"基本上差不多。正常情况下,主备库之间是同步的。当网络或者备库出现问题时,不会影响到主库的宕机,主库会自动转换库"最大性能"模式,等待备库可用时,将归档传输到备库做恢复。可以把这种模式理解为"最大保护"和"最大性能"两种模式的中间体。
3.最大性能
这种模式保证主库性能最大化,主备库之间数据是异步传输。即,主备日志归档以后才会传输到备用库,在备库上使用归档日志文件做恢复操作。
二、安装环境
1.设备列表
项目列表
主库
备库
操作系统:
都是redhat6.4
都是redhat6.4
oracle软件版本:
oracle 11.2.0.3.0
oracle 11.2.0.3.0
IP地址:
192.168.18.5
192.168.18.6
db_unique_name:
prim
stby
主机名:
rh01
rh02
2.重要步骤思路
1、Oracle软件版本需一致,主库为正常数据库,备库为Oracle软件。
2、主库在rman下备份控制文件及归档文件,并拷贝到备库相同目录下。
3、拷贝主库a文件及密码文件到备库,并在备库里修改相应参数。
4、备库在rman下执行duplicate命令,利用从主库备份的控制文件及归档文件来建库。
三、在主库的准备工作
1.系统准备
安装Linux操作系统redhat6.4_64位,取主机名:rh01,ip地址:192.168.18.5,并执行service iptables stop命令关闭防火墙,因为是在内网环境,无需开启防火墙。并安装Oracle11g 64位的数据库。
2.开启归档模式和强制记录日志模式
登录数据库,如果发现数据库未开启,就执行
SQL>startup;
查看是否处于归档模式,如果未归档,则重新关闭Oracle,并将Oracle切换到mount状态下执行修改归档模式。
SQL>alter database archivelog;
SQL>alter database open;
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival            Enabled
Archive destination            /opt/oracle/oradata/archive
Oldest online log sequence    57
Next log sequence to archive  0
Current log sequence          59
开启强制记录日志模式。
linux安装oracle 11gSQL> alter database force logging;
Database altered.
检查:
SQL>select force_logging from v$database;(应为YES)
3.添加standby日志文件