Использовал дистрибутивы СУБД MySQL и Oracle:
- MySQL Community Server 5.6.16 (Windows x86)
- Oracle DB 11g Release 2 v11.2.0.1 (Windows x64)
Использовал дистрибутивы Oracle GoldenGate:
- Oracle GoldenGate V11.2.1.0.1 for MySQL 5.x on Windows 2003, 2008
- Oracle GoldenGate V11.2.1.0.3 for Oracle 11g 64bit on Windows 2003, 2008 (64bit)
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.