====== Методика бинарного dump/load базы БИСквит ====== === Примечание === Если дамп и последующая загрузка производятся на разных серверах и/или инсталляциях OpenEdge, то перед операциями необходимо проверить содержимое файлов ''$DLC/startup.pf'' для обоих инстансов OpenEdge (на исходном и целевом хосте) на предмет корректности и совпадения параметров локализации. Либо следует указывать эти параметры в выполняемых командах в явном виде. Стандартные параметры локализации для БИСквита: -cpinternal ibm866 -cpstream ibm866 -cpcoll Russian -cpcase Basic -d dmy -numsep 44 -numdec 46 ===== Дамп ===== * Создаем директорию для файлов дампа и переходим в нее cd * Запускаем //OpenEdge Data Dictionary// и выгружаем (текстом) описание ''bisquit.df'', таблицу пользователей ''_user.d'', последовательности ''_seqvals.d'', записи аутентификации ''_sec-authentication-domain.d'' и ''_sec-authentication-system.d''. bq41d [-1] -p _admin.p Data Dictionary Admin -> Dump Data and Definitions -> Data Definitions (.df file)... User Table Contents... <_user.d> Security Domains... <_sec-authentication-*.d> Sequences Current Values... <_seqvals.d> Проверяем корректность выгрузки файлов (содержиемое). * Создаем файл со списком всех таблиц исходной базы (''tabs.txt'') по выгруженному ''bisquit.df'': sed -ne 's:^ADD TABLE "\(.*\)".*$:\1:p' bisquit.df | tee tabs.txt Проверяем и фиксируем количество таблиц: wc -l tabs.txt * Дампим данные (требует времени): while read TAB; do bq41d dump $TAB . -thread 1 -threadnum 4 || break done <редактор> bisquit.st <редактор> bisquit.srt (пример, по 2ГБ в tmp: 2048000 /tmp) * Копируем заготовку базы из дистрибутива OpenEdge. Меняем ей кодировку на ''ibm866'': bq41d exec procopy '$DLC/prolang/rus/empty8 $BQDB' bq41d convchar convert ibm866 * (//Опционально//). При необходимости включить поддержку больших файлов: bq41d enablelargefiles * (//Производительность//) Рекомендуется увеличить размер блока и кластера bi файла для увеличения производительности на запись. bq41d trunc -bi 16384 -biblocksize 16 * База готова для загрузки. ===== Загрузка ===== * (//Опционально//). Если требуется, редактируем файл ''bisquit.df'', например, для изменения размещения таблиц и индексов по областям * Переходим в каталог с дампом, запускаем //OpenEdge Data Dictionary// и загружаем описание ''bisquit.df'', последовательности ''_seqvals.d'', таблицу пользователей ''_user.d'', записи аутентификации ''_sec-authentication-domain.d'' и ''_sec-authentication-system.d''. Записи аутентификации необходимы в случае использования функционала 0222364 (SSO. Реализация входа по логину UNIX) начиная с патча d102. Если данный функционал не используется - записи можно не грузить или соответствующие .d-файлы могут их не содержать. cd bq41d [-1] -p _admin.p Data Dictionary Admin -> Load Data and Definitions -> Data Definitions (.df file)... User Table Contents... <_user.d> Security Domains... <_sec-authentication-*.d> Sequences Current Values... <_seqvals.d> * (//Опционально//). При необходимости, переносим таблицы в другие области (с индексами или без), если это не было сделано редактированием ''bisquit.df'' bq41d tablemove table-name table-area [index-area] Или используем процедуру ''genscript.p'' для генерации скрипта ''move.sh'' по описанию ''table.cfg''. Актуальные версии ''genscript.p'' и ''table.cfg'' поставляются в составе исходников выпускаемых патчей. Перед запуском созданного скрипта ''move.sh'' проверьте его содержание и отредактируйте при необходимости. bq41d -1 -p genscript.p -param table.cfg,move.sh bq41d cmd sh move.sh * В этом месте лучше сделать бэкап созданной "пустой" базы с загруженной структурой, чтобы в случае неудачи начинать не с создания базы, а из бэкапа (база еще маленькая и восстановится быстро). * Для увеличения производительности загрузки можно предварительно выполнить запуск брокера БД и процессов APW а также выключить механизм защиты от сбоя (запись в журнал BI). Внимание: при указании опции "-i" в случае какого-либо сбоя в загрузке необходимо будет начать процесс полностью заново, с пункта создания новой пустой базы либо восстановить ее из предварительно сделанного бэкапа. bq41d start -i -spin 50000 -L 102400 -bibufs 100 -B 20000 Запуск нескольких процессов proapw позволит ускорить процесс загрузки данных. Задайте дополнительное их количество в параметрах запускающего скрипта: RunBIW="yes" RunAPW="yes" BQNAPW="5" Или используйте соответсвующие команды: bq41d exec probiw \$BQDB bq41d exec proapw \$BQDB bq41d exec proapw \$BQDB bq41d exec proapw \$BQDB bq41d exec proapw \$BQDB bq41d exec proapw \$BQDB * Грузим данные (//может требовать значительного времени!//): cd for F in *.bd*; do bq41d load $F -tscope 5000 || break; done | tee load.log Если какую-либо таблицу не надо загружать (например, ''history''), то следует предварительно ее удалить или переименовать ее суффикс (''.bd'') * Проверяем логи (''load.log''). Искать "''err''" или "''fail''". Проверяем количество сообщений об успешных загрузках (должно соответствовать количеству загружаемых таблиц): grep "(6256)" load.log | wc -l * Строим индексы (файл ''bisquit.srt'' должен быть создан заранее). Эта операция самая ресурсозатратная, во многих случаях имеет смысл запускать ее в пакетном режиме в нерабочее время (для этого удобно использовать юниксовую команду ''at''). bq41d idxbuild all -mergethreads 2 -threadnum 2 -datascanthreads 6 -B 1024 -TF 50 -TMB 64 -TB 64 -TM 32 -rusage -silent * Компилируем БИСквит при необходимости с помощью promake, например. Убираем из PROPATH все старые r-ки. Заходим в ''src'' и запускаем: bq41d -U bis -P *** run promake.p указываем исходники: <путь>/src/* указываем каталог для r * После компиляции рекомендуется собрать необходимые библиотеки. Если ''bq41d.pl'' получается больше 2 ГБ, ее можно сделать из двух частей. Указываем нужные библиотеки в ''PROPATH'' скриптов. Библиотеки следует располагать в каталоге ''$BQ/lib''. ===== Документация: ===== - //OpenEdge Data Management: Database Administration\\ -> Maintaining and Monitoring Your Database\\ -> -> Maintaining Database Structure\\ -> -> -> Dumping and Loading\\ -> -> -> Maintaining indexes and tables//\\ - //OpenEdge Data Management: Database Administration\\ -> Maintaining and Monitoring Your Database\\ -> -> Managing Performance\\ -> -> -> Index use\\ -> -> -> -> Rebuilding indexes//\\ - //OpenEdge Deployment: Managing ABL Applications\\ -> Managing R-code Libraries//\\ - Компиляция:\\ - Документация БИСквит http://support.bis.ru/prod/bq/core/docs/\\ - Документация к патчам БИСквит//\\ {{tag>progress prodb}}