Data Guard Broker系列之六:Fast-Start Failover

简介:

Fast-Start Failover

基本概念

Fast-Start Failover是建立在broker基础上的一个快速故障转换的机制,通过fast-start failover可以自动检测primary的故障,然后自动的failover到预先指定的standby上面,这样可以最大化的减少故障时间,提高数 据库的可用性。


结构

Fast-Start Failover是在broker的基础上再增加了一个单独的observer,用来监控primary和standby数据库的状态,一旦primary不可用,observer就会自动的切换到指定的standby上面。


准备工作

  1. 确保broker配置为运行在Max Availability模式。
  2. 在primary和standby机器上都启用flashback database,这个在reinstate failed的数据库的时候要用。
  3. 在运行observer的机器上安装DGMGRL工具,用于启动observer。
  4. 配置tnsname.ora文件,保证observer能正常的连接到primary和standby数据库上面。

配置及启用Fast-Start Failover

在满足上面的条件之后在经过下面少许的配置就可以启用Fast-Start Failover了。

  1. 配置每个数据库Failover的目标,这一步是决定当数据库出问题之后会自动failover到那个standby。
-- 配置torcla failover的目标
edit  database  torcla  set  property  ' FastStartFailoverTarget ' = ' torclb ' ;
-- 配置torclb failover的目标
edit  database  torclb  set  property ' FastStartFailoverTarget ' = ' torcla ' ;
  1. 设定FastStartFailoverThreshold值,这个设置是决定了primary坏了多长时间之后会执行自动的failover操作,这里我们设置的是30s。
EDIT  CONFIGURATION  SET  PROPERTY  FastStartFailoverThreshold  =  30 ;
  1. 启用Fast-Start Failover。
DGMGRL ENABLE  FAST_START  FAILOVER ;
Enabled .
  1. 启动observer。
oracle @ orainst [ torcla ]:~
$
dgmgrl  sys / 12345 @ torcla . mycompany
DGMGRL for Linux Version 10.2.0.2.0  -  Production
 
Copyright ( c ) 2000 2005 Oracle All  rights  reserved .
 
Welcome  to  DGMGRL type " help for  information .
Connected .
DGMGRL start  observer ;
observer  started
  1. 现在可以看看我们环境的状态了。
DGMGRL show  configuration  verbose
 
Configuration
  
Name :                 FSF
  
Enabled :              YES
  
Protection Mode :      MaxAvailability
  
Fast - Start  Failover ENABLED
  
Databases :
    
torcla  -  Primary  database
    
torclb  -  Physical  standby  database
          - 
Fast - Start  Failover  target
 
Fast - Start  Failover
  
Threshold 30  seconds
  
observer :   orainst . desktop . mycompany . com
 
Current status for " FSF " :
SUCCESS

Fast-Start Failover的管理

Fast-Start Failover的工作过程

在启用了fast-start failover和observer之后,broker会来监控primary和standby数据库的状态,一旦primary数据库出现故障,observer会根据一定的程序来执行自动的failover操作。

  1. 当发生下列情形是observer会尝试启动failover操作
    • observer和primary数据库之间连接出现故障时
    • 当primary数据库故障或者是RAC环境中所有instance都故障时
    • 执行SHUTDOWN ABORT之后,特别注意正常的SHUTDOWN操作(NORMAL,IMMEDIATE,TRANSACTIONAL)不会引发failover操作
    • 数据库文件OFFLINE

      除了最后一个数据库文件OFFLINE的情形,其他的情况下observer都会尝试在FastStartFailoverThreshold制定的时间之内重新连接数据库,如果还是无法连接之后才会执行自动failover操作。

  2. 在FastStartFailoverThreshold指定的时间内重新连接数据库,在RAC环境中会尝试连接其他的instance。
  3. 尝试时间结束后,observer将确定目标standby可用。下面的这些情形会导致failover失败
    • fast-start failover没有启用
    • observer无法连接到standby数据库
    • standby与observer中记录的状态不一致
    • observer在primary fail的时候正好没有运行,再次启动之后只能找到一个standby
    • 目标standby没有和primary完成同步
    • 目标standby是逻辑standby时,在V$DATABASE中显示LOADING DICTIONARY时
    • 目标standby还能和primary正常通讯时
    • 在V$DATABASE的列FS_FAILOVER_STATUS中显示了其他无法进行failover操作时
    • 有手工failover正在进行时
  4. 执行failover操作,使目标standby变成新的primary。
  5. reinstate之前失败的primary

下面来个实际的failover例子.

先看看当前的primary,确定是torcla

DGMGRL show  configuration
 
Configuration
  
Name :                 FSF
  
Enabled :              YES
  
Protection Mode :      MaxAvailability
  
Fast - Start Failover ENABLED
  
Databases :
    
torcla  -  Primary  database
    
torclb  -  Physical  standby  database
          - 
Fast - Start  Failover target
 
Current  status  for  " FSF " :
SUCCESS

然后登录到torcla上,执行一个SHUTDOWN ABORT命令

SYS @ torcla shutdown  abort
ORACLE  instance  shut down .

然后在observer里面我们可以看到自动failover了

DGMGRL start  observer ;
observer  started
 
06 : 08 : 24.47    Tuesday September 01 2009
Initiating  fast - start  failover  to  database  " torclb " ...
Performing  failover  NOW please wait ...
Failover  succeeded new  primary  is  " torclb "
06 : 08 : 33.49    Tuesday September  01 2009

再看此时的状态,primary已经换成torclb了,不过此时torcla是不可用的

DGMGRL show  configuration
Configuration
  
Name :                 FSF
  
Enabled :              YES
  
Protection Mode :      MaxAvailability
  
Fast - Start  Failover ENABLED
  
Databases :
    
torcla  -  Physical  standby  database ( disabled )
          - 
Fast - Start  Failover target
    
torclb  -  Primary  database

Current  status  for  " FSF " :
Warning ORA - 16608 one  or  more  databases  have  warnings

再将torcla启动到mount,接着就能看到observer会自动的reinstate torcla

DGMGRL start  observer ;
observer  started
 
06 : 11 : 13.45    Tuesday September  01 2009
Initiating  reinstatement  for  database  " torcla " ...
Reinstating  database  " torcla " please  wait ...
Operation  requires  shutdown  of  instance  " torcla on  database  " torcla "
Shutting  down  instance  " torcla " ...
ORA - 01109 database  not  open
 
Database  dismounted .
ORACLE  instance  shut down .
Operation  requires  startup  of  instance  " torcla on  database  " torcla "
Starting  instance  " torcla " ...
ORACLE  instance  started .
Database  mounted .
Continuing  to  reinstate  database  " torcla "  ...
Reinstatement  of  database  " torcla succeeded
06 : 12 : 20.07    Tuesday September 01 2009

查看Fast-Start Failover状态

通过SHOW CONFIGURATION VERBOSE命令可以查看Fast-Start Failover的基本运行状态

DGMGRL SHOW  CONFIGURATION  VERBOSE
 
Configuration
  
Name :                 FSF
  
Enabled :              YES
  
Protection Mode :      MaxAvailability
  
Fast - Start  Failover ENABLED
  
Databases :
    
torcla  -  Primary  database
    
torclb  -  Physical  standby  database
          - 
Fast - Start  Failover  target
 
Fast - Start  Failover
  
Threshold 30  seconds
  
observer :   orainst . desktop . mycompany . com
 
Current status for " FSF " :
SUCCESS

要查看Fast-Start Failover更多的信息就要查看V$DATABASE视图中的相关的列了。

FS_FAILOVER_STATUS这个列显示了Fast-Start Failover的状态,通过查看这个列我们可以知道数据库时处于什么状态之中,详细的状态信息在 这里FS_FAILOVER_CURRENT_TARGET当前数据库的failover的目标数据库 FS_FAILOVER_THRESHOLD执行自动failover的时间超时值 FS_FAILOVER_observer_PRESENT是否启动了observer,通过查看这个列我们可以知道是否有observer在监控着这个数据库 FS_FAILOVER_observer_HOST监控此数据库的observer所在的位置
SYS @ torclb col  FS_FAILOVER_STATUS  for  a25
SYS @ torclb col  FS_FAILOVER_CURRENT_TARGET  for  a10
SYS @ torclb col  FS_FAILOVER_THRESHOLD  for  999
SYS @ torclb col  FS_FAILOVER_observer_PRESENT  for  a4
SYS @ torclb col  FS_FAILOVER_observer_HOST  for  a30
SYS @ torclb select  FS_FAILOVER_STATUS , FS_FAILOVER_CURRENT_TARGET ,
FS_FAILOVER_THRESHOLD , FS_FAILOVER_observer_PRESENT ,
FS_FAILOVER_observer_HOST  from v $ database ;
 
FS_FAILOVER_STATUS          FS_FAILOVER_CURRENT_TARGET  FS_FAILOVER_THRESHOLD  FS_FAILOVER_observer_PRESENT  FS_FAILOVER_observer_HOST
-----------------------
-- ---------- --------------------- ---- ------------------------------
SYNCHRONIZED                torclb                           30  YES    orainst . desktop . mycompany . com

禁用Fast-Start Failover

禁用Fast-Start Failover的命令为

DISABLE  FAST_START  FAILOVER   [ FORCE ]

加上FORCE之后将会强行在执行DISABLE命令的数据库以及这个数据库可连通的其他数据库上面上禁用Fast-Start Failover,而其他无法连接上的数据库将保持原来的状态;不加FROCE时如果有那个数据库暂时无法连接的话那么DISABLE操作将会失败。所以 在当primary和standby数据库的网络连接良好的情况下要使用不带FORCE的命令。

通常需要使用FORCE的情形

  • 当因为网络问题造成primary无法和observer及那些已完成同步的standby通讯时,primary将会停止工作,如果 primary的恢复时间可期,且想要primary继续工作的话就需要使用FORCE选项暂时在primary上禁用fast-start failover,不过之前一定要检查看数据库有没有自动failover。
  • 当primary和standby没有完成同步的时候想要手工的执行failover的命令,在fast-start failover启用的时候是无法执行的,这时候也需要使用FORCE选项强行禁用fast-start failover。
  • 在fast-start failover失败之后还想将数据库failover到其他可用的standby上时也需要先使用FORCE强制禁用fast-start failover然后在手工进行failover操作。
  • 如果确定有问题的primary可以很快的恢复,此时不想让fast-start failover自动failover,也可以使用FORCE选项强行禁用fast-start failover。

Observer管理

启用observer的操作很简单,使用DGMGRL连接到数据库,然后执行START OBSERVER命令就行了。

要启动observer的话必须使用SYS连接到DGMGRL,同一时间只能启动一个observer,如果尝试启动多个observer将会收到这样的消息

ORA - 16647 could  not  start  more  than  one  observer

要停止一个observer的话只需要用DGMGRL连接到数据库,然后执行STOP OBSERVER命令就行了。

要确定一个数据库是否在observer的监视中必须要去查看V$DATABASE视图中的 FS_FAILOVER_OBSERVER_PRESENT和FS_FAILOVER_OBSERVER_HOST。只有当 FS_FAILOVER_OBSERVER_PRESENT为YES的时候才说明这个数据库时处于observer的监控之中。

同时数据库是否有observer监视这个信息我们也可以从DGMGRL中查看到

DGMGRL show  database  torcla  statusreport
STATUS REPORT
       
INSTANCE_NAME     SEVERITY  ERROR_TEXT
                   *      
ERROR ORA - 16820 Fast - Start  Failover  observer  is  no  longer  observing  this  database

在启动observer的时候,observer会自动的在当前目录中生成一个默认名字为fsfo.dat的二进制文件,这个文件里面保存了 fast-start failover的配置信息,同时也包含了到primary和standby的连接方式。也可以在启动observer的时候使用FILE参数指定配置文 件的位置,命令如下

START  OBSERVER  [ FILE =< observer  configuration  file >];

参考至:http://www.dbabeta.com/2009/learn-data-guard-broker_fast-start-failover.html

如有错误,欢迎指正

邮箱:czmcj@163.com

作者:czmmiao  文章出处:http://czmmiao.iteye.com/blog/2124883
相关文章
|
18天前
Failed to start LVS and VRRP High Availability Monitor.
Failed to start LVS and VRRP High Availability Monitor.
20 1
|
Oracle 关系型数据库 Linux
12c Data Guard Broker 配置
12c Data Guard Broker 配置,18c Data Guard Broker 配置
1822 0
|
Oracle 关系型数据库 数据库