Конфигурация fast-start-failover | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
C++ Developer. Professional
-5%
Scala-разработчик
-8%
Backend-разработчик на PHP
-9%
Алгоритмы и структуры данных
-9%
Team Lead
-6%
Архитектура и шаблоны проектирования Golang Developer. Professional
-5%
HTML/CSS
-11%
C# ASP.NET Core разработчик
-5%
Kotlin Backend Developer
-8%
iOS Developer. Professional
-8%
Java Developer. Professional Web-разработчик на Python MS SQL Server Developer Android Developer. Basic Разработчик программных роботов (RPA) на базе UiPath и PIX Microservice Architecture Unity Game Developer. Basic Разработчик голосовых ассистентов и чат-ботов React.js Developer Node.js Developer Интенсив «Оптимизация в Java» Супер-практикум по использованию и настройке GIT Symfony Framework Java Developer. Basic Unity Game Developer. Professional Супер-интенсив Azure
Инфраструктура
Инфраструктурная платформа на основе Kubernetes
-6%
Экспресс-курс «IaC Ansible»
-10%
Administrator Linux.Basic
-10%
Мониторинг и логирование: Zabbix, Prometheus, ELK
-10%
Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
Administrator Linux. Professional
-6%
Экcпресс-курс «ELK»
-10%
Экспресс-курс по управлению миграциями (DBVC)
-10%
Базы данных Network engineer Cloud Solution Architecture Highload Architect Разработчик голосовых ассистентов и чат-ботов VOIP инженер Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив "Tarantool"
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Конфигурация 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;

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

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

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