Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
unix:progress:dump-load [2012/11/09 22:19]
kos создано
unix:progress:dump-load [2021/07/07 22:38] (текущий)
kos [Загрузка]
Строка 1: Строка 1:
-===== Методика бинарного dump/load базы БИСквит =====+====== Методика бинарного dump/load базы БИСквит ​======
  
 === Примечание === === Примечание ===
-Если дамп и последующая загрузка производятся на разных серверах и/или инсталляциях OpenEdge, то перед операциями необходимо проверить ''​$DLC/​startup.pf''​ для обоих инсталляций ​OpenEdge ​ +Если дамп и последующая загрузка производятся на разных серверах и/или инсталляциях OpenEdge, то перед операциями необходимо проверить ​содержимое файлов ​''​$DLC/​startup.pf''​ для обоих инстансов ​OpenEdge (на исходном и целевом хосте) на предмет корректности и совпадения параметров локализации. Либо следует указывать ​эти параметры ​в выполняемых командах в явном виде.
-(на исходном и целевом хосте) на предмет корректности и совпадения +
-параметров локализации. Либо следует указывать их в выполняемых командах в явном виде.+
  
-Стандартные для БИСквита:​ +Стандартные ​параметры локализации ​для БИСквита:​ 
-   '-cpinternal ibm866+   
 +    ​-cpinternal ibm866
     -cpstream ​  ​ibm866     -cpstream ​  ​ibm866
     -cpcoll Russian     -cpcoll Russian
Строка 15: Строка 14:
     -numdec 46     -numdec 46
  
-==== Дамп ==== +===== Дамп =====
  
    * Создаем директорию для файлов дампа и переходим в нее    * Создаем директорию для файлов дампа и переходим в нее
Строка 22: Строка 20:
    cd <dump dir>    cd <dump dir>
  
-   * Запускаем //OpenEdge Data Dictionary//​ и выгружаем (текстом) описание ''​bisquit.df'',​ таблицу пользователей ''​_user.d'' ​и последовательности ''​_seqvals.d''​+   * Запускаем //OpenEdge Data Dictionary//​ и выгружаем (текстом) описание ''​bisquit.df'',​ таблицу пользователей ''​_user.d''​последовательности ''​_seqvals.d''​, записи аутентификации ''​_sec-authentication-domain.d''​ и ''​_sec-authentication-system.d''​. ​
  
    bq41d [-1] -p _admin.p    bq41d [-1] -p _admin.p
         Data Dictionary         Data Dictionary
         Admin -> Dump Data and Definitions ->         Admin -> Dump Data and Definitions ->
-                Data Definitions (.df file)... <​bisquit.df>​ +                Data Definitions (.df file)... ​     <​bisquit.df>​ 
-                User Table Contents... <​_user.d>​ +                User Table Contents... ​             <_user.d> 
-                Sequences Current Values... ​ <​_seqvals.d>​+                Security Domains... ​                <​_sec-authentication-*.d> 
 +                Sequences Current Values... ​        ​<​_seqvals.d>​
  
-   Проверяем корректность выгрузки файлов (содержиемое).+Проверяем корректность выгрузки файлов (содержиемое).
  
-3. Создаем файл со списком всех таблиц исходной базы (tabs.txt)+  * Создаем файл со списком всех таблиц исходной базы (''​tabs.txt''​) по выгруженному ​''​bisquit.df''​:
-   по выгруженному bisquit.df:+
  
-   sed -ne '​s:​^ADD TABLE "​\(.*\)":​\1:​p'​ bisquit.df | tee tabs.txt+   sed -ne '​s:​^ADD TABLE "​\(.*\)"​.*$:\1:p' bisquit.df | tee tabs.txt
  
-   или с помощью tabanalys ​исходной базы: +Проверяем ​и фиксируем количество таблиц
-   +
-   bq41d tabanalys | grep '​^PUB.'​ | cut -d ' ' -f 1 | tee tabs.txt+
  
-   Проверяем и фиксируем кол-во таблиц: ​wc -l tabs.txt+   wc -l tabs.txt
  
-4. Дампим данные (требует времени):​+  * Дампим данные (требует времени):​
  
    while read TAB; do    while read TAB; do
-   ​bq41d dump $TAB . || break+        ​bq41d dump $TAB . -thread 1 -threadnum 4 || break
    done <​tabs.txt | tee dump.log    done <​tabs.txt | tee dump.log
  
-   Если какую-либо таблицу не надо дампить (напрhistory), то следует +Если какую-либо таблицу не надо дампить (например, ''​history''​), то следует предварительно удалить ее из файла ​''​tabs.txt''​. 
-   предварительно удалить ее из файла tabs.txt +После дампа проверяем логи (''​dump.log''​).\\ 
-   ​После дампа проверяем логи (dump.log). +Проверяем количество сообщений об успешных дампах (должно соответствовать количеству таблиц):​
-   ​Проверяем кол-во сообщений об успешных дампах (должно соответствовать ​ +
-   кол-ву таблиц):​+
  
    grep "​(6254)"​ dump.log | wc -l    grep "​(6254)"​ dump.log | wc -l
  
-5. Приложите к дампу также описание структуры областей базы: bisquit.st+  * Дамп готов. Приложите к нему также описание структуры областей базы: ​''​bisquit.st''​
  
  
-Создание новой базы: 
-~~~~~~~~~~~~~~~~~~~~ 
-1. Создаем скрипт для новой базы, устанавливаем в нем переменную BQDB 
-   на каталог для новой базы. Переходим в этот каталог,​ создаем/​редактируем 
-   ​файл описания структуры новой базы (возможно,​ с новыми областями). 
-   ​Создаем файл описания директорий временных файлов сортировки для ​ 
-   ​последующей индексации базы. 
  
-   cd $BQDB +===== Создание новой базы=====
-   vi bisquit.st +
-   vi bisquit.srt (пример, по 2ГБ в tmp2048000 /tmp)+
  
-2. (Опционально, по умолчанию - пропустить). При необходимости можно  +   * Создаем скрипт для новой базы, ​устанавливаем в нем ​переменную ''​BQDB''​ на каталог для новой базы. Переходим ​в этот ​каталог, создаем/редактируем файл ​описания ​структуры новой базы ​(возможно, с новыми областями). Создаем файл описания директорий временных файлов сортировки для последующей индексации базы.
-   отформатировать структуру новой базы заранее:+
  
-   bq41d struct create -blocksize 8192 +   cd <​путь до каталога с базой>​ 
- или +   <​редактор>​ bisquit.st 
-   bq41d exec prostrct create \$BQDB -blocksize 8192+   <​редактор>​ bisquit.srt ​    ​(пример,​ по 2ГБ в tmp: 2048000 /tmp)
  
-   После этого меняем отностительные пути экстентов структуры на абсолютные:​ +   Копируем заготовку ​базы ​из дистрибутива OpenEdge. Меняем ей кодировку на ''​ibm866''​:
- +
-   bq41d struct list +
-   bq41d struct repair +
-  +
-3. Копируем заготовку из дистрибутива OpenEdge. +
-   Меняем ей кодировку на ibm866:+
  
    bq41d exec procopy '​$DLC/​prolang/​rus/​empty8 ​ $BQDB'    bq41d exec procopy '​$DLC/​prolang/​rus/​empty8 ​ $BQDB'
    bq41d convchar convert ibm866    bq41d convchar convert ibm866
  
-4. (Опционально). При необходимости включить поддержку больших файлов:​+   ​* ​(//Опционально//). При необходимости включить поддержку больших файлов:​
  
    bq41d enablelargefiles    bq41d enablelargefiles
  
-5. (Производительность) +   ​* ​(//Производительность//Рекомендуется увеличить размер блока и кластера ​bi файла для увеличения производительности на запись.
-   bq41d trunc -bi 16384 -biblocksize 16384+
  
 +   bq41d trunc -bi 16384 -biblocksize 16
  
-Загрузка +   * База ​готова для загрузки.
-~~~~~~~~ +
-1. Если ​требуется,​ редактируем файл bisquit.df, например, ​для ​изменения +
-   разбиения по областям. Переходим в каталог с дампом и грузим bisquit.df +
-   ​_seqvals.d и _user.d:+
  
-   cd <dump dir>+===== Загрузка =====
  
-   bq41d -1 -p _admin.p +   (//​Опционально//​). Если требуется,​ редактируем файл ''​bisquit.df'',​ например,​ для изменения размещения таблиц и индексов по областям
- Data Dictionary +
- Admin -> Load Data and Definitions -> +
- Data Definitions ​(.df file)... <bisquit.df+
- User Table Contents... <​_user.d>​ +
- Sequences Current Values... <​_seqvals.d>​+
  
-2. При необходимости, переносим таблицы в другие области (с индексами ​ +   ​* ​Переходим ​в каталог с дампомзапускаем //OpenEdge Data Dictionary//​ и загружаем описание ''​bisquit.df'',​ последовательности ''​_seqvals.d'', ​таблицу пользователей ''​_user.d'',​ записи аутентификации ''​_sec-authentication-domain.d''​ и ''​_sec-authentication-system.d''​. Записи аутентификации необходимы в случае использования функционала 0222364 ​(SSO. Реализация входа по логину UNIX) начиная с патча d102. Если ​данный функционал не используется - записи ​можно не грузить или ​соответствующие .d-файлы могут их не содержать. ​
-   или ​без):+
  
-   bq41d tablemove table-name table-area [index-area] 
  
-   ​или+  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>​
  
-   bq41d -1 -p genscript -param table.cfg,​move.sh 
-   bq41d exec sh move.sh 
  
-3. В этом месте ​лучше сделать ​бэкап созданной "пустой" базы с загруженной +   * (//Опционально//). При необходимости, переносим таблицы в другие ​области (с индексами или без), если это не было сделано редактированием ''​bisquit.df''​
-   структурой,​ чтобы в случае неудачи начинать не с п.1, а из бэкапа  +
-   (база еще маленькая и восстановится быстро)+
  
-4. Грузим данные (Сразу с перестройкой индексов или без. Рекомендуется +   bq41d tablemove table-name table-area [index-area]
-   ​перестройку индексов производить отдельно):​+
  
-   cd <dump dir> +Или используем процедуру ''​genscript.p''​ для генерации скрипта ''​move.sh''​ по описанию ''​table.cfg''​. Актуальные версии ''​genscript.p''​ и ''​table.cfg''​ поставляются в составе исходников выпускаемых патчей. Перед запуском созданного скрипта ''​move.sh''​ проверьте его содержание и отредактируйте при необходимости.
-   for F in *.bd*; do bq41d load $F [build indexes] || break; done | tee load.log+
  
-   Если какую-либо таблицу не надо загружать (напрhistory)то следует +   bq41d -1 -p genscript.p -param table.cfg,move.sh 
-   ​предварительно удалить или переименовать ее суффикс (.bd) +   bq41d cmd sh move.sh
-   Проверяем логи (load.log). Искать "​err"​ или "​fail"​. +
-   ​Проверяем кол-во сообщений об успешных загрузках (должно соответствовать  +
-   ​кол-ву таблиц):​+
  
-   grep "(6256)" ​load.log | wc -l+   * В этом месте лучше сделать бэкап созданной ​"пустой"​ базы с загруженной структурой,​ чтобы в случае неудачи начинать не с создания базы, а из бэкапа ​(база еще маленькая и восстановится быстро)
 +   * Для увеличения производительности загрузки можно предварительно выполнить запуск брокера БД и процессов APW а также выключить механизм защиты от сбоя (запись в журнал BI). Внимание:​ при указании опции ​"-i" в случае какого-либо сбоя в загрузке необходимо будет начать процесс полностью заново,​ с пункта создания новой пустой базы либо восстановить ее из предварительно сделанного бэкапа. 
 + 
 +   bq41d start -i -spin 50000 -L 102400 -bibufs 100 -B 20000 
 + 
 +Запуск нескольких процессов proapw позволит ускорить процесс загрузки данных. Задайте дополнительное их количество в параметрах запускающего скрипта:​ 
 + 
 +   ​RunBIW="​yes"​ 
 +   ​RunAPW="​yes"​ 
 +   ​BQNAPW="​5"​
        
 +Или используйте соответсвующие команды:​
  
-5. Если индексы не создавались при загрузке,​ перестраиваем их (файл ​ +   bq41d exec probiw \$BQDB 
-   bisquit.srt должен быть создан заранее)+   bq41d exec proapw \$BQDB 
 +   bq41d exec proapw \$BQDB 
 +   bq41d exec proapw \$BQDB 
 +   bq41d exec proapw \$BQDB 
 +   bq41d exec proapw \$BQDB
  
-   bq41d idxbuild all -TB 31 -TM 32 [-B 16536] -silent 
  
-   вариант ​для 10.2B: +   * Грузим данные (//может требовать значительного времени!//​):
-   bq41d idxbuild all -mergethreads 2 -threadnum 2 -datascanthreads 6 -B 1024 -TF 50 -TMB 64 -TB 64 -TM 32 -rusage -silent+
  
-6Компилируем БИСквит при необходимости.+   cd <dump dir> 
 +   for F in *.bd*; do bq41d load $F -tscope 5000 || break; done | tee load.log
  
-   Убираем из PROPATH все старые r-ки.+Если какую-либо таблицу не надо загружать (например, ''​history''​),​ то следует 
 +предварительно ее удалить или переименовать ее суффикс (''​.bd''​)
  
-   bq41d -U bis -P ***+   ​* ​Проверяем логи (''​load.log''​). Искать "''​err''"​ или "''​fail''"​. Проверяем количество сообщений об успешных загрузках (должно соответствовать количеству загружаемых таблиц):​
  
-      run promake.+   grep "​(6256)"​ load.log | wc -l
-      указываем исходники ../src/* +
-      каталог для r+
  
-   После компиляции рекомендуется собрать необходимые библиотеки. Если  +   * Строим индексы (файл ''​bisquit.srt''​ должен быть создан заранее). Эта операция ​самая ресурсозатратная, во многих случаях имеет смысл запускать ее в пакетном режиме в нерабочее время (для этого удобно использовать ​юниксовую команду ''​at''​).
-   ​bq41d.pl получается больше 2 ГБ, ее можно ​сделать из двух частей. +
-   ​Указываем нужные библиотеки в PROPATH скриптов.  +
-   Библиотеки следует располагать в каталоге $BQ/lib.+
  
-Документация: +   bq41d idxbuild all -mergethreads 2 -threadnum 2 -datascanthreads 6 -B 1024 -TF 50 -TMB 64 -TB 64 -TM 32 -rusage -silent 
-~~~~~~~~~~~~~ + 
-1Методика ​dump-load (актуальная ​версия: +   * Компилируем БИСквит при ​необходимости с помощью promake, например. 
-   http://support.bis.ru/​info/​misc/​index.php?​id=dumpload+   ​Убираем из PROPATH все старые r-ки. Заходим в ''​src''​ и запускаем: 
 + 
 +   ​bq41d ​-U bis -P *** 
 +      run promake.p 
 +       
 +      ​указываем исходники: <​путь>​/src/
 +      указываем каталог для r
  
-2. OpenEdge Data Management: Database Administration +   * После компиляции рекомендуется собрать необходимые библиотеки. Если ''​bq41d.pl''​ получается больше ​ГБ, ее можно сделать из двух частей. Указываем нужные библиотеки в ''​PROPATH''​ скриптов. Библиотеки следует располагать в каталоге ''​$BQ/​lib''​.
-     -> Maintaining and Monitoring Your Database +
-        -> Dumping and Loading+
  
-3. OpenEdge DeploymentManaging ABL Applications +===== Документация=====
-     -> Managing R-code Libraries+
  
-4. Компиляция ​БИСквит+   - //OpenEdge Data Management: Database Administration\\ 
-   ​документация БИСквит http://​support.bis.ru/​docs/​ +         -> 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}}