Инструмент копирования базы данных

Инструмент копирования базы данных SCA-SRSE предоставляется в виде отдельного файла JAR. Для работы с ним необходимо соблюдать следующие условия:
  • файл JAR не должен быть установлен в исходном или целевом экземплярах SCA-SRSE. Можно поместить файл JAR в любое место на компьютере, если компьютер авторизован для доступа к исходной и целевой базам данных SCA-SRSE.
  • требуется использовать как минимум версию 1.3.3.627 файла JAR.

Этап подготовки копии БД

Чтобы подготовиться к использованию средства копирования БД, необходимо подготовить целевой экземпляр, так как исходный и целевой экземпляры должны иметь одинаковую схему базы данных.
Чтобы настроить схему SCA-SRSE:
  1. Убедитесь, что целевая база данных запущена и работает.
  2. В целевой базе данных создайте SCA-SRSE-схему.
  3. Загрузите и расширьте копию используемой SCA-SRSE, которая точно соответствует версии.
  4. Настройте копию SCA-SRSE для подключения к целевой базе данных. Если копия SCA-SRSE размещена на том же сервере, на котором запущен основной экземпляр SCA-SRSE, то также потребуется настроить порты не по умолчанию для экземпляра SCA-SRSE.
  5. Запустите копию экземпляра SCA-SRSE. Он подключится к пустой цели и заполнит схему. Как только экземпляр копии будет запущен (это указывает на то, что схема полностью заполнена), то можно остановить и удалить его.
  6. Обновите статистику базы данных в целевой базе данных перед перезапуском SCA-SRSE.
В результате будет сформирован одинаковый список таблиц в исходной и целевой базах данных.

Этап выполнения копирования БД

Чтобы запустить инструмент копирования БД:
  1. Остановите основной экземпляр SCA-SRSE.
  2. Выполните базовую команду jar с соответствующими параметрами.
    Пример базовой команды:
    java -jar sonar-db-copy-1.3.3.627-jar-with-dependencies.jar
    Параметры:
    Имя параметраОписаниеНеобходимость данного параметра
    -help
    Вывести справку по этим параметрамНет
    -urlSrc
    URL-адрес исходной базы данных JDBCДа
    -userSrc
    Имя пользователя исходной базы данныхДа
    -pwdSrc
    Пароль исходной базы данныхДа
    -urlDest
    URL-адрес целевой базы данных JDBCДа
    -userDest
    Имя пользователя целевой базы данныхДа
    -pwdDest
    Пароль целевой базы данныхДа
    -driverDest
    Драйвер целевой базы данных JDBCНет
    -driverSrc
    Драйвер исходной базы данных JDBCНет
    -T
    Разделенный запятыми список таблиц для переносаНет
  3. Обновите конфигурацию основного экземпляра SCA-SRSE, чтобы она указывала на целевую БД.
  4. Перезапустите основной экземпляр SCA-SRSE.

Примеры выполнения

  1. Утилита sonar-db-copy проверяет, доступны ли URL-адреса и версии базы данных:
    ***************** CONFIGURATION VERIFICATIONS ***************
    Database SOURCE has been reached at :          jdbc:h2:tcp://localhost:9092/sonar-db-copy
    Database DESTINATION has been reached at :     mysql://localhost:13306/sonar?autoReconnect=true
    The version of SCA-SRSE schema migration are the same between source (433) and destination (433).
    
  2. Когда версии разные, приложение останавливается.
    ***************** CONFIGURATION VERIFICATIONS ***************
    Database SOURCE has been reached at :          jdbc:h2:tcp://localhost:9092/sonar-db-copy
    Database DESTINATION has been reached at :     mysql://localhost:13306/sonar?autoReconnect=true
    Exception in thread "main" Version of the schema migration are not the same between source (433) and destination (494).
    
    Иногда после перезапуска копии целевая версия базы данных равна 0. Это некритическая ситуация, копирование бужет продолжено.
    ***************** CONFIGURATION VERIFICATIONS ***************
    Database SOURCE has been reached at :          jdbc:h2:tcp://localhost:9092/sonar-db-copy
    Database DESTINATION has been reached at :     mysql://localhost:13306/sonar?autoReconnect=true
    !  WARNING – The versions of SCA-SRSE schema migration source is (433) when destination is (0).
    
  3. Выполняется поиск таблицы в исходной и целевой базах данных:
    *************** SEARCH TABLES ***************
    START GETTING METADATA IN SOURCE...
    53 TABLES GETTED.
    START GETTING METADATA IN DESTINATION...
    53 TABLES GETTED.
    *************** FOUND TABLES ***************
    
    FOUND TABLE : action_plans
    SOURCE:
    COLUMNS : (id,kee,name,description,deadline,user_login,project_id,status,created_at,updated_at)
    TYPES:  : (INTEGER,VARCHAR,VARCHAR,VARCHAR,TIMESTAMP,VARCHAR,INTEGER,VARCHAR,TIMESTAMP,TIMESTAMP)
    DESTINATION:
    COLUMNS : (id,create_at,updated_at,name,description,deadline,user_login,project_id,status,kee)
    TYPES   : (BIGINT,TIMESTAMP,TIMESTAMP,VARCHAR,VARCHAR,TIMESTAMP,VARCHAR,INTEGER,VARCHAR,VARCHAR)
    
    FOUND TABLE : active_dashboards
    SOURCE:
    COLUMNS : (id,dashboard_id,user_id,order_index)
    TYPES   : (INTEGER,INTEGER,INTEGER,INTEGER)
    DESTINATION:
    COLUMNS : (id,dashboard_id,user_id,order_index)
    TYPES   : (INTEGER,INTEGER,INTEGER,INTEGER)
    
    Если есть отсутствующие таблицы, то отобразится этот журнал:
    FOUND TABLE : action_plans
    SOURCE:
    COLUMNS : (id,person_id,login,create_at,updated_at)
    TYPES:  : (INTEGER,INTEGER,VARCHAR,TIMESTAMP,TIMESTAMP)
    DESTINATION:
    ! WARNING - TABLE authors is not present in the DESTINATION database.
    
  4. Утилита sonar-db-copy усекает таблицы в целевой базе данных и указывает количество очищенных таблиц (отсутствующие таблицы не могут быть очищены):
    *************** DELETE TABLES FROM DESTINATION ***************
    START DELETING...
    ! WARNING - Can't DELETE TABLE :authors because it doesn't exist in the destination database.
    52 TABLES DELETED IN DESTINATION.
    
  5. Утилита sonar-db-copy воспроизводит данные из источника в место назначения и корректирует последовательность базы данных назначения после копирования:
    *************** COPY DATA ***************
    action_plans                 0 / 0
    action_plans                 0 / 0
    active_dashboards            0 / 5
    active_dashboards            5 / 5
    active_rules                 0 / 629
    active_rules                 629 / 629
    active_rule_changes          0 / 0
    active_rule_changes          0 / 0
    active_rule_notes            0 / 0
    active_rule_notes            0 / 0
    active_rule_parameters       0 / 58
    active_rule_parameters       58 / 58
    
Если какие-то таблицы отсутствуют, то отобразится следующее предупреждение:
! WARNING - Can't WRITE in TABLE :authors because it doesn't exist in destination database.
Если во время копирования появляются ошибки, процесс не останавливается, но ошибки отображаются:
** ERROR ** IN TABLE: users when read and write at col: 10 and id=1.
** ERROR ** SORUCE COLUMNS      ( name,admin,remarks,id,id,login,name).
** ERROR ** DESTINATION COLUMNS ( id,login,name,email,crypted_password).
** ERROR ** LINES NOT COPIED at ROW (0) WITH id = (1).
** ERROR ** Cannot parse "TIMESTAMP" constant "TRUE" [22007-172]
В конце sonar-db-copy повторяет разницу между исходной и целевой базами данных. Сообщение об ошибке отображается, если базы данных отличаются.
INFO *************** CHECK DESCREPANCIES ***************
WARN TABLE projects has 65 ROWS in SOURCE while 0 ROWS in DESTINATION
INFO ********************************************
INFO ** THE COPY HAS FINISHED UNSUCCESSFULLY !!! WATCH OUT THE LOG!!! **
INFO ********************************************
Предыдущий раздел
Настройка разрешений
Следующий раздел
1.28 Проектирование API и архитектурного контроля
Была ли страница полезной?