Настройка репликации GoldenGate из Active Data Guard база данных

imageВ GoldenGate 12.1.2.1 появилась возможность реплицировать данные, подключившись к Active Data Guard (ADG) экземпляру. В отличие от режима ALO этот режим обеспечивает Real-Time репликацию. Плюс ADG дает возможность вообще не создавать подключение к источнику – достаточно подключения к экземпляру ADG.

Давайте посмотрим, как это работает. Сначала нам нужно создать экземпляр ADG.

Создаем базу данных ADG

1. Включаем принудительное логгирование всех изменений и архивирование журналов

2. Настраиваем параметры на основной (primary database):

3. На primary создаем standby logs (они будут нужны, когда наш primary станет standby при смене ролей)

3. Делаем резервную копию базы данных

4. Делаем копию управляющих файлов и файла параметров для standby

5. Редактируем файл параметров

6. Копируем файл паролей

7. Создаем серверный файл параметров

8. Копируем управляющий файл

9. Запускаем базу данных

10. Восстанавливаем базу данных

11. Запускаем накат изменений

12. Запускаем standby в режиме Active Dataguard. Для этого на целевой базе выполняем следующие команды:

13. Пересоздадим standby redo на резервной системе

15. (Опционально) Включаем брокера. Для этого на основной и резервной базе выполняем команду

16. В listener создаем для брокера сервисы

17. Сбросим значение LOG_ARCHIVE_DEST_2 на primary и standby, чтобы Data Guard Broker мог ими управлять автоматически.

18. Создаем конфигурацию

20. Включаем конфигурацию

21. Попробуем переключиться на резервную систему

22. …. и назад

Настраиваем GoldenGate для захвата изменений из ADG

Захватывать изменения из ADG может только классический Extract. Связано это с тем, что Integrated Extract создаем объекты внутри базы данных, а в ADG это делать нельзя. Если нужно получать изменения в Real Time с помощью Integrated Extract, то нужно использовать downstream режим.

1. Создаем Alias для подключения к ADG

2. Создаем файл параметров для GoldenGate Extract

3. Добавляем Extract

4. Запуска захват изменений

start cab

5. После этого мы получаем вот такой вывод в report-файле GoldenGate

Переключение на резеверную систему

Давайте посмотрим, что будет происходить при переключение GoldenGate на резервную систему.

Switchover

Подключаем к Data Guard Broker, смотрим текущуб конфигурацию и запускаем переключение

dgmgrl

Все нормально – можем запускать переключение:

В результате  GoldenGate Extract падает с ошибкой, чего и следовало ожидать

Попытка повторно стартануть процесс приведет к ошибке, что тоже предсказуемо.

В реальной системе нам нужно будет корректно перемонтировать файловую систему на новый standby и запускать захват изменений. В моем случае обе базы данных на одном и том же сервере, поэтому мне достаточно было поменять строку коннекта, чтобы она указывала на новый standby и перезапустить процессы.

Failover

Давайте выполним аварийное переключение на резервную систему

В результате GoldenGate падает с ошибкой

Последующие попытки запуска будет оканчиваться неудачей

Запустим переинициализацию с помощью flashback.

А затем перенастроим GoldenGate Extract, чтобы он смотрел на новую резервную базу. Я также установил текущий SCN:

Согласно документации еще нужно использовать параметр TRANLOGOPTIONS USEPREVRESETLOGSID, но у меня и без него заработало.

Какие были проблемы при настройке

Я тестировал на Oracle Database 12.1.0.2 и GoldenGate 12.2. Судя по всему, связка еще не очень отлаженная, да и документация оставляет желать лучшего. Итак, что я встретил:

Проблема 1. В документации есть вот такой заголовок “Configuring Integrated Extract for ADG Mode”. На самом деле GoldenGate не может работать в режиме ADG (Only) Mode в случае интегрированного Extract. Если мы все-таки попробуем это сделать, то получим ошибку

ERROR   OGG-10144  (cab.prm) line 7: Parameter [MINEFROMACTIVEDG] is not valid for this configuration.

Решение 1. Переключить GoldenGate в классический режим

Проблема 2. При захвате изменений на ADG я получил ошибку

У меня этот запрос возвращает 2:

Если посмотреть поглубже, то становится понятно в чем проблема

Решение 2. Добавлять standby log с явным указанием thread. Вот так

Заключение

Режиме захвата изменений непосредственно из ADG довольно интересен. С одной стороны он полностью real-time, с другой – нагрузка на источник полностью отсутствует – грузим только сервер с ADG. Сопровождать GoldenGate в режиме работы с ADG довольно легко – с downstream немного сложнее.

Но есть и обратная сторона медали: режим с ADG – это классический режим, а значит более ограничен по функционалу.

2 Comments

  1. Здравствуйте, Александр.
    Подскажите, какой патч требуется для реализации register extract scn … share … для gg 12.2 ? Получаю такую ошибки при регистрации экстракта (платформа AIX)
    GGSCI (xxx as ggadmin@goldwhs) 6> REGISTER EXTRACT ext1 DATABASE SCN 9670285641855 SHARE AUTOMATIC
    xxx ERROR OGG-08238 ERROR: This database does not have the required patch to support a SHARE clause. Remove the SHARE clause.

    С уважением,
    Василий

    • Список рекомендованных патчей приведен на сайте поддержки Oracle GoldenGate — Oracle RDBMS Server Recommended Patches (Doc ID 1557031.1)

Comments are closed.