Перенос перенос базы данных средства мониторинга Zabbix 2.4 из MySQL на Oracle Database 11.2.0.4.
Zabbix поддерживает работу с базами данных MySQL, PostgeSQL, Oracle и некоторыми другими СУБД.
Ранее мы использовали Zabbix совместно с MySQL, но база данных стала сильно разрастаться, а мы более компетентны в БД Oracle, по этой причине и решили перенести БД Zabbix-а под Oracle, там нам проще управлять БД.
Итак, мы имеем Zabbix-server 2.4.7 работающий под Debain в связке с MySQL. Требуется получить работающий Zabbix, хранящий данные в Oracle Database.
Сначала подготовим БД для Zabbix:
1. Создаем БД с параметрами кодировки
NLS_CHARACTERSET = AL32UTF8
NLS_NCHAR_CHARACTERSET = UTF8
NLS_NCHAR_CHARACTERSET = UTF8
2. Создаем табличное пространство для данных
3. Создаем пользователя ZABBIX указав по умолчанию ранее созданное табличное пространство.
create user ZABBIX
default tablespace ZABBIX
temporary tablespace TEMP
profile DEFAULT
identified by pass_word
;
-- Grant/Revoke role privileges
grant connect to ZABBIX;
grant resource to ZABBIX;
-- Grant/Revoke system privileges
grant create any directory to ZABBIX;
grant drop any directory to ZABBIX;
grant unlimited tablespace to ZABBIX;
default tablespace ZABBIX
temporary tablespace TEMP
profile DEFAULT
identified by pass_word
;
-- Grant/Revoke role privileges
grant connect to ZABBIX;
grant resource to ZABBIX;
-- Grant/Revoke system privileges
grant create any directory to ZABBIX;
grant drop any directory to ZABBIX;
grant unlimited tablespace to ZABBIX;
4. Создаем объекты схемы, скрипт для создания таблиц можно взять с оффициального сайта zabbix, скачав исходники.
Скрипт находится в каталоге database/oracle/schema.sql. Нужно выполнить только создание обьектов схемы, внешние ключи создавать пока не нужно.
5. Загружаем данные из MySQL в Oracle. Это можно сделать несколькими способами. Я пользовался следующим методом:
- делаем бекап средствами mysql (mysqldump). Бекапим все таблицы, кроме таблиц hystory* и trends*.
- заменяем в бекапе символы переноса \r\n на '|| chr(13) || chr(10) ||' и двойной слэш "\\" на одинарный "\". С этой проблемой я столкнулся уже после того как загрузил данные.
- загружаем данные в oracle через sqlplus. Поскольку mysql делает бекап как текстовый файл с операторми insert, то с этим проблем нет.
SQL> Set define off;
SQL> Set nls_lang=American_america.al32UTF8 --очень важно, иначе будут проблемы с кириллицей
SQL> @<Имя скрипта бекапа>;
SQL> Set nls_lang=American_america.al32UTF8 --очень важно, иначе будут проблемы с кириллицей
SQL> @<Имя скрипта бекапа>;
- загружаем изображения, для чего нужно скопировать каталог misc\images\png_modern из архива с исходниками в любой каталог на сервере БД и выполнить скрипт из исходников database\oracle\images.sql предварительно поправив в строке "CREATE OR REPLACE DIRECTORY image_dir AS '<путь к каталогу с изображениями>'"
6. выполняем оставшуюся часть скрипта schema.sql.
7. В базе данных устанавливаем параметр cursor_sharing в FORCE. Дело в том, что Zabbix присылает непараметризированные запросы.
Подготовка Zabbix-Server
8. Устанавливаем oracle client. Под Ubuntu можно так. А вообще, вот тут.
Подготавливаем web-сервер.
В нашем случае использовался apache в связке с php-5.4.1.
1. Включаем поддержку oci8
pecl install oci8
2. В параметрах конфигурации php.ini прописываем extension = oci8.so
3. Перезагружаем apache и прверяем подтянулась ли библиотека oci8 в php
Устанавливаем Zabbix
1. Собираем и устанавливаем zabbix из пакетов с параметрами
./configure --enable-server
--enable-agent --with-net-snmp --with-libcurl --with-libxml2
--with-ssh2 --with-ldap --with-jabber --with-openipmi --with-unixodbc
--with-oracle --with-oracle-include=/usr/include/oracle/12.1/client64/
--with-oracle-lib=/usr/lib/oracle/12.1/client64/lib
make
make install
make
make install
Ключи могут разные понадобиться.
make может отработать с ошибками, читать тут
2. Копируем из каталога с исходниками содержимое frontends/php в каталог веб-сервера.
3. Правим файл include/db.inc.php
Перед строкой подключения к oracle
$DB['DB'] =
@oci_connect($DB['USER'], $DB['PASSWORD'], $connect);
прописываем
putenv ("NLS_LANG=.UTF8");
Если этого не сделать, то будут проблемы с кодировкой.
4. Правим в конфигах zabbix сервера подключение к БД
5. Стартуем zabbix-server.
service
zabbix-server start
6. Настраиваем frontend по инструкции
No comments :
Post a Comment