1. 程式人生 > >RAC Failover三種方式

RAC Failover三種方式

1、Client-Side Connect Time Failover
1.1)在使用者端tnsname中配置了多個地址,使用者發起連線請求時,會先嚐試連線地址表中的第一個地址,如果這個連線嘗試失敗,則繼續嘗試使用第二個地址,直至連線成功或者遍歷了所有的地址。
1.2)這種Failover的特點是:在建立連線那一時刻起作用,一旦連線建立之後,節點出現故障都不會作處理,從而客戶端的表現就是會話斷開,使用者程式必須重新建立連線。
啟用該方法:在客戶端tnsname.ora中新增FAILOVER=ON條目,因為這個引數預設值就是為NO,所以即使客戶端不加該條目,也有這種Failover功能。
XFF_F =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.21)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.22)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = devdb)
    )
  )
2、TAF(Transparent Application Failover)
2.1)在連線建立以後、應用系統執行過程中,如果某個例項發生故障,連線到這個例項上的使用者會被自動遷移到其他的健康的例項上。對於應用程式而言,這個遷移過程是透明的,不需要使用者的介入,當然在遷移過程中,未提交的事物會回滾。
2.2)與Client-Side Connect Time Failover比較起來,就是多了FAILOVER_MODE這一配置項,該配置項包含4個子專案
2.2.1)METHOD:可選值有BASIC和PRECONNECT
BASIC是指在感知到節點故障時才建立到其他例項的連線
PRECONNECT是在最初建立連線時就同時建立到所有例項的連線,當發生故障時,立刻就可以切換到其他鏈路上。
2.2.2)TYPE:可選值有SESSION和SELECT
兩者的區別在於對select語句的處理,select表示如果發生故障遷移,正在執行的select語句將在新的節點上繼續返回後續結果集;而session表示重新執行該select查詢返回全部的結果。
2.2.3)DELAY表示重試間隔時間
2.2.4)RETRIES表示重試次數
XFF_T =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.21)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.22)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = devdb)
      (FAILOVER_MODE =
        (TYPE = SELECT)
        (METHOD = BASIC)
        (RETRIES = 180)
        (DELAY = 5)
      )
    )
  )
3、Server-Side TAF
3.1)Server-Side TAF具有TAF的所有特點
3.2)這種TAF是在伺服器上配置,不需要在客戶端進行相關配置,如果修改一個引數,不需要在所有的tns上修改,而只要修改伺服器中的service即可
使用者有兩種角色可以選擇
PREFERRED:首選例項,會優先選擇擁有這個角色的例項提供服務
AVAILABLE:後備例項,當PREFERRED例項不可用時,才會轉到AVAILABLE例項上
XFF_RAC =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.21)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.22)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XFF)
    )
  )