Конфигурация fast-start-failover

SUBD_Deep_4.6_site-5020-c7a1b8.png

Fast Start Failover — функционал автоматического запуска failover в случае необходимости. По умолчанию выключен. Процедура Failover инициируется сервисом DG observer (см. рисунок ниже). Собственно observer — это маленький OCI клиент, встроенный в DGMGRL CLI. Также observer автоматизирует превращение (reinstate) старого primary в standby.

clipboard02-5020-bf88ac.png

Схема его работы весьма проста: если observer и standby одновременно потеряли связь с primary, но видят друг друга — инициируется failover. После появления в поле видимости старого primary observer автоматически пытается превратить его в standby.

Располагать этот сервис рекомендуется на третьей площадке (если считать, что площадка primary — первая, а standby — вторая), лучше всего на площадке, где расположены клиенты.

Далее приведу настройки, которые нужно выполнить.

Сервера:

— oracle-1 10.10.0.20 — PRIMARY; — oracle-2 10.10.0.21 — STANDBY; — oracle-observer 10.10.0.22 — установлен oracle-client.

Настройка tnsnames.ora:

$ORACLE_HOME/network/admin/tnsnames.ora
ORA_MASTER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oracle-1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORA_DGMGRL)
    )
  )

ORA_STBY =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracle-2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORA_DGMGRL)
    )
  )

Tns настраивается на всех 3-х серверах.

Создание standby

Скопировать orapw:

scp oracle-1://opt/app/oracle/12.2.0.1/database/dbs/orapwORA ./

Создать pfile и перенести его на standby на PRIMARY: ```oracle-sql CREATE PFILE='/tmp/init.ora' from spfile;

Прописать листенер для Data Guard:
```oracle-sql
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = ORA_DGMGRL)
      (ORACLE_HOME = /opt/app/oracle/12.2.0.1/database)
      (SID_NAME = ORA)
    )
  )

Стартовать инстанс:

export ORACLE_SID=<SID>
# sqlplus / as sysdba
SQL> STARTUP pfile='/tmp/init.ora';

Запустить rman и законнектиться к обеим базам:

rman auxiliary sys/<PASS>@ORA_STBY target sys/<PASS>@ORA_MASTER

rman> DUPLICATE TARGET DATABASE
  FOR STANDBY
  DORECOVER;

Создаём конфигурацию Data Guard:

dgmgrl /

DGMGRL> CREATE CONFIGURATION ORA_dg_fl AS PRIMARY DATABASE IS ORA1 
CONNECT IDENTIFIER IS ORA_MASTER;

DGMGRL> ADD DATABASE ORA2 AS CONNECT IDENTIFIER IS ORA_STBY;
DGMGRL> SHOW CONFIGURATION;

DGMGRL> EDIT CONFIGURATION SET PROPERTY faststartfailoverthreshold = 60
DGMGRL> EDIT CONFIGURATION SET PROPERTY operationtimeout = 60
DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MaxAvailability
DGMGRL> EDIT DATABASE ORA1 SET PROPERTY standbyfilemanagement = AUTO
DGMGRL> EDIT DATABASE ORA2 SET PROPERTY standbyfilemanagement = AUTO

DGMGRL> EDIT DATABASE ORA2 SET PROPERTY transportdisconnectedthreshold = 60
DGMGRL> EDIT DATABASE ORA2 SET PROPERTY transportlagthreshold = 60
DGMGRL> EDIT DATABASE ORA2 SET PROPERTY applylagthreshold = 60
DGMGRL> EDIT DATABASE ORA2 SET PROPERTY FastStartFailoverTarget = ORA1
DGMGRL> EDIT DATABASE ORA1 SET PROPERTY FastStartFailoverTarget = ORA2
DGMGRL> EDIT DATABASE ORA1 SET PROPERTY faststartfailoverlaglimit = 60
DGMGRL> EDIT DATABASE ORA1 SET PROPERTY logxptmode = SYNC
DGMGRL> EDIT DATABASE ORA2 SET PROPERTY logxptmode = SYNC

DGMGRL> ENABLE CONFIGURATION;
DGMGRL> enable fast_start failover

Включаем обсервер: dgmgrl -logfile $HOME/observer.log sys/<PASS>@ORA_MASTER "start observer" & Проверяем, что конфигурация включилась и работает:

DGMGRL> SHOW CONFIGURATION;
DGMGRL> SHOW database ORA1;
DGMGRL> SHOW database ORA2;

Вот и всё, пишите комментарии. Если интересуют подробности, держите ссылку по теме.

Автор
0 комментариев
Для комментирования необходимо авторизоваться