Репликация данных из MySQL в Oracle используя Oracle GoldenGate

Использовал дистрибутивы СУБД MySQL и Oracle:

  • MySQL Community Server 5.6.16 (Windows x86)
  • Oracle DB 11g Release 2 v11.2.0.1 (Windows x64)

Использовал дистрибутивы Oracle GoldenGate:

A. Установка и настройка OGG для сервера-источника MySQL (SOURCE)

A1. Подготовка сервера MySQL для развертывания OGG

•    Движок хранения данных (storage engine) только InnoDB
•    В файле конфигурации сервера MySQL (my.cnf) должны быть указаны параметры бинарных логов:
log-bin – этот параметр определяет место размещения бинарных журналов и необходим для OGG.
log-bin-index – этот параметр определяет место размещения индексов бинарных журналов. По умолчанию та же директории, где и бинарные журналы.
max_binlog_size – задается максимальный размер журнального файла в байтах, при достижения предела, все записи будут писаться в новый журнальный файл.
binlog_format – формат бинарных журналов (ROW, STATEMENT, MIXED). Extractor будет работать только с журналами в формате ROW, остальные форматы приведут к аварийному завершению.

Пример:
binlog_format=row
log-bin=»d:/MySQL DB/mybinlogs/uapbin»
log-bin-index=»d:/MySQL DB/mybinlogs/uapbin.index»
log-error=»d:/MySQL DB/mybinlogs/uapbin.err»
max_binlog_size=20971520

•    Остальные параметры MySQL сервера настраиваются индивидуально.

A2. Установка OGG для MySQL

1.    На одном из дисков, который выделяем под файлы базы данных и для хранения trail-файлов, создаем директорию OGG11MGR. Например, D:\OGG11MGR.
2.    Разархивируем файлы дистрибутива из архива дистрибутива в созданный каталог.
3.    В директории запускаем консоль ggsci.exe и в ней выполняем команду:
ggsci> CREATE SUBDIRS

После чего в директории C:OGG11MGR появятся рабочие каталоги: dirpcs, dirout, dirtmp, dirchk, dirdat, dirdef, dirrpt, dirsql.
4.    Из директории C:OGG11MGR копируем файлы category.dll, ggsmsg.dll в c:WindowsSystem32.
5.    Теперь зададим собственное имя для менеджера процессов OGG. Для этого запустим ggsci и выполним команду:
ggsci> EDIT PARAMS ./GLOBALS

После чего откроется текстовый редактор, где будет предложено создать новый файл, следует согласиться и прописать в файле параметр:
MGRSERVNAME OGGMGR1

OGGMGR1 – уникальное имя менеджера процессов.
Сохранить изменения в файле и закрыть его.
6.    Далее создаем экземпляр OGG (управляющий процесс, который создает OGG процессы, выделяет номера портов и выполняет обслуживание файлов). Для этого вызовем консоль и выполним:
ggsci> EDIT PARAMS MGR

откроется текстовый редактор, где будет предложено создать новый файл, следует согласиться и прописать в файле следующие параметры:
PORT 7809
DYNAMICPORTLIST 7810-7820, 7830
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 4, WAITMINUTES 4
STARTUPVALIDATIONDELAY 5
PURGEOLDEXTRACTS *

,где PORT – TCPIP порт для менеджера процессов OGG, по которому он взаимодействует с удаленными процессами. Используйте порт по умолчанию, если это возможно.
DYNAMICPORTLIST – список доступных портов, по которым локальные процессы OGG могут связываться с удаленными процессами OGG на других машинах.
AUTOSTART – параметр, который позволяет автоматически запускать процессы OGG после запуска менеджера процессов.
AUTORESTART – параметр, для автоматического перезапуска процессов OGG при сбоях по сети, что может вызвать прерывание чтения транзакционных журналов. RETRIES – максимальное количество перезапусков, WAITMINUTES – время ожидания в минутах, от аварии до перезапуска.
STARTUPVALIDATIONDELAY – сколько секунд ожидать, до проверки состояния процесса OGG. И если после этого времени процесс не ответил, то регистрировать ошибку.
PURGEOLDEXTRACTS – позволяет очищать обработанные файлы для того, чтобы они не потребляли много дискового места.
7.    Сохранить изменения в файле и закрыть его.
8.    Настроим менеджер процессов как службу Windows. Для этого в директории C:OGG11MGR вызовем утилиту install c опцией addservice (добавляет менеджер в качестве сервиса с именем указанным в MGRSERVNAME параметре в файле GLOBALS, если таковой существует, или по умолчанию GGSMGR):
cmd> install addservice

После чего проверяем созданную нами (OGGMGR1) службу в списке служб Windows и настраиваем для нее автоматический запуск.
9.    Запускаем менеджер процессов (службу OGGMGR1) в списке служб или же в консоли ggsci:
ggsci> start manager

10.    Инсталлируем менеджер событий (addevents — добавляет OGG события в диспетчере событий Windows):
cmd> install addevents

11.    На этом установка и настройка OGG на источнике (MySQL) завершена. Далее рассмотрим установку и настройку на целевой базе Oracle.

B. Установка и настройка OGG для целевого сервера Oracle (TARGET)

1.     На одном из дисков, который выделяем под файлы базы данных и для хранения trail-файлов, создаем директорию OGG11MGR. Например, D:\OGG11MGR.
2.     Разархивируем файлы дистрибутива из архива в созданный каталог.
3.     В директории запускаем консоль ggsci.exe и в ней выполняем команду:
ggsci> CREATE SUBDIRS

После чего в директории D:\OGG11MGR появятся следующие каталоги: dirpcs, dirout, dirtmp, dirchk, dirdat, dirdef, dirrpt, dirsql.
4.     Из директории D:\OGG11MGR копируем файлы category.dll, ggsmsg.dll в c:\Windows\System32.
5.     Теперь зададим собственное имя для менеджера процессов OGG. Для этого запустим ggsci и выполним команду:
ggsci> EDIT PARAMS ./GLOBALS

После чего откроется текстовый редактор, где будет предложено создать новый файл, следует согласиться и прописать в файле параметр:
MGRSERVNAME OGGMGR2

OGGMGR2 – уникальное имя менеджера процессов.
Сохранить изменения в файле и закрыть его.
6.     Далее конфигурируем диспетчер процессов OGG (управляющий процесс, который создает OGG процессы, выделяет номера портов и выполняет обслуживание). Для этого вызовем консоль и выполним:
ggsci> EDIT PARAMS MGR

откроется текстовый редактор, где будет предложено создать новый файл, следует согласиться и прописать в файле параметр:
PORT 7809
DYNAMICPORTLIST 7810-7820, 7830
AUTOSTART REPLICAT *
AUTORESTART REPLICAT *, RETRIES 4, WAITMINUTES 4
STARTUPVALIDATIONDELAY 5
PURGEOLDEXTRACTS *

,где PORT – TCP\IP порт для менеджера процессов OGG, по которому он взаимодействует с удаленными процессами. Используйте порт по умолчанию, если это возможно.
DYNAMICPORTLIST – список доступных портов, по которым локальные процессы OGG могут связываться с удаленными процессами OGG на других машинах.
AUTOSTART – параметр, который позволяет автоматически запускать процессы OGG после запуска менеджера процессов.
AUTORESTART – параметр, для автоматического перезапуска процессов OGG при сбоях по сети, что может вызвать прерывание чтения транзакционных журналов. RETRIES – максимальное количество перезапусков, WAITMINUTES – время ожидания в минут, от аварии до перезапуска.
STARTUPVALIDATIONDELAY – сколько секунд ожидать, до проверки состояния процесса OGG. И если после этого времени процесс не ответил, то регистрировать ошибку.
PURGEOLDEXTRACTS – позволяет очищать обработанные файлы для того, чтобы они не потребляли много дискового места.
7.     Сохранить изменения в файле и закрыть его.
8.     Настроим менеджер процессов как служба Windows. Для этого в директории C:\OGG11MGR вызовем утилиту install c опцией addservice (добавляет менеджер в качестве сервиса с именем указанным в MGRSERVNAME параметре в файле GLOBALS, если таковой существует, или по умолчанию GGSMGR):
cmd> install addservice

После чего проверяем созданную нами (OGGMGR2) службу в списке служб Windows и настраиваем для нее автоматический запуск.
9.     Запускаем менеджер процессов (службу OGGMGR2) в списке служб или же в консоли ggsci:
ggsci> start manager

10. Инсталлируем менеджер событий (addevents — добавляет OGG события в диспетчере событий Windows):
cmd> install addevents

На этом установка и настройка OGG на целевом сервере (Oracle) завершена. Далее приступим к созданию самой схемы репликации.

C. Создание OGG-схемы репликации MySQL-to-Oracle

* все настройки выполняются из консоли ggsci.

C1. На сервере источнике (SOURCE — MySQL) заходим в консоль ggsci:
1.    Создаем группу захватчика (extract), например, с именем EXT01:
ggsci> ADD EXTRACT EXT01, TRANLOG, BEGIN NOW

TRANLOG – указывает, что в качестве источника данных будут выступать транзакционные логи.
BEGIN NOW – начать захват данных сразу после запуска extract.
2.    Создаем канал для передачи данных в файлы с названием ua:
ggsci> ADD EXTTRAIL D:\OGG11MGR\dirdat\ua, EXTRACT EXT01, MEGABYTES 10

MEGABYTES — допустимый размер файлов.
3.    Редактируем файл конфигурации извлечения данных:
ggsci> EDIT PARAM EXT01

В отрывшийся файл добавляем параметры подключения к источнику и извлечения данных, указывая нужные для репликации таблицы:
extract EXT01
cachemgr cachesize 128M
dboptions host localhost, connectionport 3306
sourcedb 2ceh_2otd_fms2_realtime_db, userid ggdirector, password **********
TRANLOGOPTIONS  ALTLOGDEST «d:\MySQL DB\mybinlogs\uapbin.index»
discardfile D:\OGG11MGR\dirrpt\EXT01.dsc, purge
exttrail D:\OGG11MGR\dirdat\ua
table 2ceh_2otd_fms2_realtime_db.CONNECTION_PLCS;
table 2ceh_2otd_fms2_realtime_db.PLC11_ALL_DATA_REALTIME;
table 2ceh_2otd_fms2_realtime_db.PLC11_FAILS_REALTIME;
table 2ceh_2otd_fms2_realtime_db.PLC12_ALL_DATA_REALTIME;
table 2ceh_2otd_fms2_realtime_db.PLC12_FAILS_REALTIME;
table 2ceh_2otd_fms2_sortirovka.data;

cachemgr cachesize – задаем размер кэша памяти,к оторый может использовать extract\pump\replicat. По умолчанию на Win XP OGG определяет его 1Гб, на Win 7 x64 = 64Гб.
dboptions host, connectionport, sourcedb, userid, password – это опции соединения с базой данных соотвественно – имя хоста, порт (на котором база работает), имя базы, логин и пароль пользователя (под которым будут читаться данные).
TRANLOGOPTIONS  ALTLOGDEST – параметр для указания расположения файла индексов бинарных логов MySQL.
Discardfile – параметр, указывающий путь к отчет ошибок при сбоях.
Table – указывает на таблицу, которая будет включена в репликацию.

Затем сохраняем изменения.
3.    Конфигурируем группу DATA PUMP EXTRACT
ggsci> ADD EXTRACT PUMP01, EXTTRAILSOURCE D:\OGG11MGR\dirdat\ua, BEGIN NOW

BEGIN NOW – начать захват данных сразу после запуска pump
4.    Создаем канал для передачи данных удаленно (на target)
ggsci> ADD RMTTRAIL D:\OGG11MGR\dirdat\ua, EXTRACT PUMP01, MEGABYTES 10

RMTTRAIL – задает полный путь трэйл-файлам, с которых осуществляется накат данных на целевую базу.
MEGABYTES — допустимый размер файлов.
5.    Редактируем файл конфигурации передачи/хранения данных:
ggsci> EDIT PARAM PUMP01

В файл добавляем параметры извлечения:
extract PUMP01
cachemgr cachesize 128M
dboptions host localhost, connectionport 3306
sourcedb 2ceh_2otd_fms2_realtime_db, userid ggdirector, password *******
discardfile D:\OGG11MGR\dirrpt\PUMP01.dsc, purge
rmthost serv01.test.int, mgrport 7809
rmttrail D:\OGG11MGR\dirdat\ua
table 2ceh_2otd_fms2_realtime_db.CONNECTION_PLCS;
table 2ceh_2otd_fms2_realtime_db.PLC11_ALL_DATA_REALTIME;
table 2ceh_2otd_fms2_realtime_db.PLC11_FAILS_REALTIME;
table 2ceh_2otd_fms2_realtime_db.PLC12_ALL_DATA_REALTIME;
table 2ceh_2otd_fms2_realtime_db.PLC12_FAILS_REALTIME;
table 2ceh_2otd_fms2_sortirovka.data;

cachemgr cachesize – задаем размер кэша памяти,к оторый может использовать extract\pump\replicat. По умолчанию на Win XP OGG определяет его 1Гб, на Win 7 x64 = 64Гб.
dboptions host, connectionport, sourcedb, userid, password – это опции соединения с базой данных соотвественно – имя хоста, порт (на котором база работает), имя базы, логин и пароль пользователя (под которым будут читаться данные).
TRANLOGOPTIONS  ALTLOGDEST – параметр для указания расположения файла индексов бинарных логов MySQL.
Discardfile – параметр, указывающий путь к отчет ошибок при сбоях.
Rmthost – имя или ip удаленного хоста.
Mgrport – порт, на котором работает удаленный агент OGG.
Table – указывает на таблицу, которая будет включена в репликацию.

Затем сохраняем изменения.

C2. Далее на целевом сервере (TARGET — Oracle) запускаем консоль ggsci:

1. Создаем группу репликации, например, REP01:
ggsci> ADD REPLICAT REP01, EXTTRAIL D:\OGG11MGR\dirdat\ua, BEGIN NOW, NODBCHECKPOINT

EXTTRAIL – для replicat значение этого параметра соответствует значению RMTTRAIL (для pump).
BEGIN NOW — начать захват данных сразу после запуска rep01.
NODBCHECKPOINT – не будет хранить контрольную точку в целевой базе данных.

2. Редактируем файл конфигурации репликации
ggsci> EDIT PARAM REP01

В файл добавляем параметры подключения к базе Oracle и применения полученных данных:
replicat REP01
cachemgr cachesize 128M
SETENV (NLS_LANG=»AMERICAN_AMERICA.CL8MSWIN1251″)
discardfile D:\OGG11MGR\dirrpt\REP01.dsc, purge
assumetargetdefs
userid ggDirector@ORCL, password ********
map 2ceh_2otd_fms2_realtime_db.CONNECTION_PLCS, target UAPOGG.connection_plcs, ignoredeletes, ignoretruncates;
map 2ceh_2otd_fms2_realtime_db.PLC11_ALL_DATA_REALTIME, target UAPOGG.plc11_all_data_realtime, ignoredeletes, ignoretruncates;
map 2ceh_2otd_fms2_realtime_db.PLC11_FAILS_REALTIME, target UAPOGG.plc11_fails_realtime, ignoredeletes, ignoretruncates;
map 2ceh_2otd_fms2_realtime_db.PLC12_ALL_DATA_REALTIME, target UAPOGG.plc12_all_data_realtime, ignoredeletes, ignoretruncates;
map 2ceh_2otd_fms2_realtime_db.PLC12_FAILS_REALTIME, target UAPOGG.plc12_fails_realtime, ignoredeletes, ignoretruncates;
map 2ceh_2otd_fms2_sortirovka.data, target UAPOGG.sortirovka_data, ignoredeletes, ignoretruncates;

cachemgr cachesize – задаем размер кэша памяти, который может использовать extract\pump\replicat. По умолчанию на Win XP OGG определяет его 1Гб, на Win 7 x64 = 64Гб.
dboptions host, connectionport, sourcedb, userid, password – это опции соединения с базой данных соотвественно – имя хоста, порт (на котором база работает), имя базы, логин и пароль пользователя (под которым будут читаться данные).
Discardfile – параметр, указывающий путь к отчет ошибок при сбоях.
Assumetargetdefs – указывает на то, что структура таблиц источника и целевой базы схожи.
SETENV  — задаем переменную окружения Windows, например для кодировки NLS_LANG.
Map, target – указывает какой таблице источника соответствует таблицу целевой базы.

Сохраняем изменения.

C3. После того, как элементы репликации созданы, запустим их в следующем порядке:
На сервере источнике:
ggsci> start EXT01
ggsci> start PUMP01

На целевом сервере:
ggsci> start REP01

Проверим с помощью команды состояние элементов репликации:
ggsci> info <>

<> — имя элемента репликации, например info EXT01

Если все в порядке (все элементы в состоянии Running), тогда ждем изменений в реплицируемой таблице, и смотрим на целевой базе, как туда записались данные. Иначе смотрим ошибки в файле ggserr.log (корневая папка) или файлах .rpt в каталоге D:\OGG11MGR\dirrpt.

Реклама