Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
unix:progress:dump-load [2012/11/10 00:10]
kos
unix:progress:dump-load [2021/07/07 22:38] (текущий)
kos [Загрузка]
Строка 2: Строка 2:
  
 === Примечание === === Примечание ===
-Если дамп и последующая загрузка производятся на разных серверах и/или инсталляциях OpenEdge, то перед операциями необходимо проверить ''​$DLC/​startup.pf''​ для обоих инсталляций ​OpenEdge ​ +Если дамп и последующая загрузка производятся на разных серверах и/или инсталляциях OpenEdge, то перед операциями необходимо проверить ​содержимое файлов ​''​$DLC/​startup.pf''​ для обоих инстансов ​OpenEdge (на исходном и целевом хосте) на предмет корректности и совпадения параметров локализации. Либо следует указывать ​эти параметры ​в выполняемых командах в явном виде.
-(на исходном и целевом хосте) на предмет корректности и совпадения +
-параметров локализации. Либо следует указывать их в выполняемых командах в явном виде.+
  
-Стандартные для БИСквита:​+Стандартные ​параметры локализации ​для БИСквита:​
   ​   ​
     -cpinternal ibm866     -cpinternal ibm866
Строка 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>​
  
 Проверяем корректность выгрузки файлов (содержиемое). Проверяем корректность выгрузки файлов (содержиемое).
Строка 35: Строка 34:
   * Создаем файл со списком всех таблиц исходной базы (''​tabs.txt''​) по выгруженному ''​bisquit.df'':​   * Создаем файл со списком всех таблиц исходной базы (''​tabs.txt''​) по выгруженному ''​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
  
-Проверяем и фиксируем кол-во таблиц: ​+Проверяем и фиксируем количество таблиц: ​
  
    wc -l tabs.txt    wc -l tabs.txt
Строка 44: Строка 43:
  
    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
Строка 63: Строка 60:
    * Создаем скрипт для новой базы, устанавливаем в нем переменную ''​BQDB''​ на каталог для новой базы. Переходим в этот каталог,​ создаем/​редактируем файл описания структуры новой базы (возможно,​ с новыми областями). Создаем файл описания директорий временных файлов сортировки для последующей индексации базы.    * Создаем скрипт для новой базы, устанавливаем в нем переменную ''​BQDB''​ на каталог для новой базы. Переходим в этот каталог,​ создаем/​редактируем файл описания структуры новой базы (возможно,​ с новыми областями). Создаем файл описания директорий временных файлов сортировки для последующей индексации базы.
  
-   ​cd ​$BQDB+   ​cd ​<​путь до каталога с базой>​
    <​редактор>​ bisquit.st    <​редактор>​ bisquit.st
    <​редактор>​ bisquit.srt ​    ​(пример,​ по 2ГБ в tmp: 2048000 /tmp)    <​редактор>​ bisquit.srt ​    ​(пример,​ по 2ГБ в tmp: 2048000 /tmp)
  
-   * Копируем заготовку из дистрибутива OpenEdge. Меняем ей кодировку на ''​ibm866'':​+   * Копируем заготовку ​базы ​из дистрибутива OpenEdge. Меняем ей кодировку на ''​ibm866'':​
  
    bq41d exec procopy '​$DLC/​prolang/​rus/​empty8 ​ $BQDB'    bq41d exec procopy '​$DLC/​prolang/​rus/​empty8 ​ $BQDB'
Строка 78: Строка 75:
    * (//​Производительность//​) Рекомендуется увеличить размер блока и кластера bi файла для увеличения производительности на запись.    * (//​Производительность//​) Рекомендуется увеличить размер блока и кластера bi файла для увеличения производительности на запись.
  
-   bq41d trunc -bi 16384 -biblocksize ​16384+   bq41d trunc -bi 16384 -biblocksize ​16
  
    * База готова для загрузки.    * База готова для загрузки.
Строка 86: Строка 83:
    * (//​Опционально//​). Если требуется,​ редактируем файл ''​bisquit.df'',​ например,​ для изменения размещения таблиц и индексов по областям    * (//​Опционально//​). Если требуется,​ редактируем файл ''​bisquit.df'',​ например,​ для изменения размещения таблиц и индексов по областям
  
-   * Переходим в каталог с дампом,​ запускаем //OpenEdge Data Dictionary//​ и загружаем ''​bisquit.df'',​ ''​_seqvals.d''​ и ''​_user.d''​+   * Переходим в каталог с дампом,​ запускаем //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>   cd <dump dir>
Строка 92: Строка 90:
         Data Dictionary         Data Dictionary
         Admin -> Load Data and Definitions ->         Admin -> Load 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>​ 
  
    * (//​Опционально//​). При необходимости,​ переносим таблицы в другие области (с индексами или без), если это не было сделано редактированием ''​bisquit.df''​    * (//​Опционально//​). При необходимости,​ переносим таблицы в другие области (с индексами или без), если это не было сделано редактированием ''​bisquit.df''​
Строка 100: Строка 100:
    bq41d tablemove table-name table-area [index-area]    bq41d tablemove table-name table-area [index-area]
  
-или с помощью процедуры ''​genscript''​ по описанию ''​table.cfg''​+Или используем ​процедуру ''​genscript.p''​ для генерации скрипта ''​move.sh''​ по описанию ''​table.cfg''​. Актуальные версии ''​genscript.p''​ и ''​table.cfg''​ поставляются в составе исходников выпускаемых патчей. Перед запуском созданного скрипта ''​move.sh''​ проверьте его содержание и отредактируйте при необходимости.
  
-   bq41d -1 -p genscript -param table.cfg,​move.sh +   bq41d -1 -p genscript.p -param table.cfg,​move.sh 
-   ​bq41d ​exec sh 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>    cd <dump dir>
-   for F in *.bd*; do bq41d load $F || break; done | tee load.log+   for F in *.bd*; do bq41d load $F -tscope 5000 || break; done | tee load.log
  
-Если какую-либо таблицу не надо загружать (напр''​history''​),​ то следует +Если какую-либо таблицу не надо загружать (например, ​''​history''​),​ то следует 
-предварительно удалить или переименовать ее суффикс (''​.bd''​)+предварительно ​ее удалить или переименовать ее суффикс (''​.bd''​)
  
-   * Проверяем логи (''​load.log''​). Искать "''​err''"​ или "''​fail''"​. Проверяем кол-во сообщений об успешных загрузках (должно соответствовать кол-ву таблиц):​+   * Проверяем логи (''​load.log''​). Искать "''​err''"​ или "''​fail''"​. Проверяем количество сообщений об успешных загрузках (должно соответствовать количеству загружаемых ​таблиц):​
  
    grep "​(6256)"​ load.log | wc -l    grep "​(6256)"​ load.log | wc -l
-    
  
-5. Если индексы ​не создавались ​при загрузкеперестраиваем ​их (файл  +   * Строим индексы ​(файл ''​bisquit.srt''​ должен быть ​создан заранее). Эта операция самая ресурсозатратная, во многих случаях имеет смысл ​запускать ​ее в пакетном ​режиме в нерабочее время (для этого удобно использовать юниксовую команду ''​at''​).
-   ​bisquit.srt ​должен ​быть ​создан заранее)+
  
-   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    bq41d idxbuild all -mergethreads 2 -threadnum 2 -datascanthreads 6 -B 1024 -TF 50 -TMB 64 -TB 64 -TM 32 -rusage -silent
  
-6. Компилируем БИСквит при необходимости. +   ​* ​Компилируем БИСквит при необходимости ​с помощью promake, например
- +   ​Убираем из PROPATH все старые r-ки. ​Заходим в ''​src''​ и запускаем:​
-   ​Убираем из PROPATH все старые r-ки.+
  
    bq41d -U bis -P ***    bq41d -U bis -P ***
- 
       run promake.p       run promake.p
-      указываем исходники ​../src/* +      ​ 
-      ​каталог для r +      ​указываем исходники: <​путь>​/src/* 
- +      указываем каталог для ​r
-   ​После компиляции рекомендуется собрать необходимые библиотеки. Если  +
-   ​bq41d.pl получается больше 2 ГБ, ее можно сделать из двух частей. +
-   Указываем ​нужные библиотеки в PROPATH скриптов.  +
-   ​Библиотеки следует располагать в каталоге $BQ/lib. +
- +
-Документация:​ +
-~~~~~~~~~~~~~ +
-1. Методика dump-load (актуальная версия:​ +
-   ​http://​support.bis.ru/​info/​misc/​index.php?​id=dumpload+
  
-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}}