Содержание
Методика бинарного dump/load базы БИСквит
Примечание
Если дамп и последующая загрузка производятся на разных серверах и/или инсталляциях OpenEdge, то перед операциями необходимо проверить содержимое файлов $DLC/startup.pf для обоих инстансов OpenEdge (на исходном и целевом хосте) на предмет корректности и совпадения параметров локализации. Либо следует указывать эти параметры в выполняемых командах в явном виде.
Стандартные параметры локализации для БИСквита:
-cpinternal ibm866 -cpstream ibm866 -cpcoll Russian -cpcase Basic -d dmy -numsep 44 -numdec 46
Дамп
- Создаем директорию для файлов дампа и переходим в нее
cd <dump dir>
- Запускаем 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)... <bisquit.df>
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 <tabs.txt | tee dump.log
Если какую-либо таблицу не надо дампить (например, history), то следует предварительно удалить ее из файла tabs.txt.
После дампа проверяем логи (dump.log).
Проверяем количество сообщений об успешных дампах (должно соответствовать количеству таблиц):
grep "(6254)" dump.log | wc -l
- Дамп готов. Приложите к нему также описание структуры областей базы:
bisquit.st
Создание новой базы:
- Создаем скрипт для новой базы, устанавливаем в нем переменную
BQDBна каталог для новой базы. Переходим в этот каталог, создаем/редактируем файл описания структуры новой базы (возможно, с новыми областями). Создаем файл описания директорий временных файлов сортировки для последующей индексации базы.
cd <путь до каталога с базой> <редактор> 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 <dump dir>
bq41d [-1] -p _admin.p
Data Dictionary
Admin -> Load Data and Definitions ->
Data Definitions (.df file)... <bisquit.df>
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 <dump dir> 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/
- Документация к патчам БИСквит