Глава 10. Приложение А: конвертация БД

Для преобразования базы между любыми двумя модулями хранилища используется утилита sgconv (исходный код утилиты находится в каталоге projects/sgconv стандартной поставки системы). Утилита работает из каталога сборки без установки в ОС. Для сборки утилиты необходимо запустить скрипт ./build.

При запуске утилиты в качестве параметра можно передать путь к конфигурационному файлу. По умолчанию будет использован файл sgconv.conf из каталога сборки. Конфигурационный файл имеет такой-же формат, что и конфигурационный файл stargazer. Глобальный параметр ModulesPath указывает местонахождение модулей хранилища. Далее следуют две секции: <SourceStoreModule> и <DestStoreModule>. Они описывают, соответственно, источник данных и их приемник. Так, например, для переноса всей информации из БД на основе файлов в БД Firebird необходимо в первой секции прописать параметры файлового хранилища, а во второй — хранилища Firebird.

Пример файла конфигурации:

# Путь к директории, в которой находятся модули сервера
ModulesPath = ../stargazer/modules

###################################################################
# Store module
# Настройки плагина работающего с БД сервера

# Второй параметр - это имя модуля без mod_ в начале и .so в конце
# Т.е. полное имя модуля mod_store_files.so
<SourceStoreModule store_files>

    # Рабочая директория сервера, тут содержатся данные о тарифах, пользователях,
    # администраторах и т.д.
    WorkDir = /var/stg-test
    
    
    # Владелец, группа и права доступа на файлы статистики (stat) пользователя
    ConfOwner = root
    ConfGroup = wheel
    ConfMode = 600
    
    
    # Владелец, группа и права доступа на файлы конфигурации (conf) пользователя
    StatOwner = root
    StatGroup = wheel
    StatMode = 640
    
    # Владелец, группа и права доступа на лог-файлы (log) пользователя
    UserLogOwner = root
    UserLogGroup = wheel
    UserLogMode = 640
    
</SourceStoreModule>
    
<DestStoreModule store_firebird>
    server = localhost
    database = /var/stg/stargazer.fdb
    user = stg
    password = 123456
</DestStoreModule>

#<DestStoreModule store_mysql>
#    # Имя пользователя БД
#    dbuser = stg
#
#    # Пароль пользователя БД
#    rootdbpass = 123456
#
#    # Имя БД на сервере
#    dbname = stg
#
#    # Адрес сервера БД
#    dbhost = localhost
#</DestStoreModule>