Конфигурация fast-start-failover
Fast Start Failover — функционал автоматического запуска failover в случае необходимости. По умолчанию выключен. Процедура Failover инициируется сервисом DG observer (см. рисунок ниже). Собственно observer — это маленький OCI клиент, встроенный в DGMGRL CLI. Также observer автоматизирует превращение (reinstate) старого primary в standby.
Схема его работы весьма проста: если 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;
Вот и всё, пишите комментарии. Если интересуют подробности, держите ссылку по теме.