Команда POPULATE_CHANGELOG
Содержание раздела
Команда POPULATE_CHANGELOG
заполняет (воссоздает) журнал логической базы данных, если он отсутствует или заполнен частично.
Команду нужно выполнить перед выгрузкой бэкапа логической БД, если БД была создана в Prostore версии 5.3 или ниже или текущий журнал поврежден или недоступен. При штатной работе система, начиная с версии 5.4, автоматически заполняет журнал, и выполнение команды POPULATE_CHANGELOG
не требуется.
По умолчанию команда создает и заполняет журнал, если он отсутствует или пуст, и выдает ошибку, если в журнале есть записи. Чтобы перезаписать непустой журнал, укажите в команде ключевое слово clear.
Порядок работы команды
Команда заполняет журнал следующим образом: выбирает все существующие логические таблицы, логические и материализованные представления логической БД и записывает в журнал операцию по созданию каждой сущности из выбранных сущностей в текущем состоянии.
Операции по созданию внешних таблиц в журнал не включаются.
Заполнение журнала
Чтобы заполнить журнал:
- Если в системе включена аутентификация запросов, отключите ее на время выполнения команды.
- Выполните команду:
- (для Prostore версии 5.3 и ниже) перед любой выгрузкой бэкапа, если состав сущностей в исходной логической БД изменился по сравнению с предыдущей выгрузкой;
- (для остальных версий) перед первой выгрузкой бэкапа логической БД, если эта БД была создана в Prostore версии 5.3 или ниже, или перед любой выгрузкой бэкапа, если текущий журнал недоступен/поврежден.
- Если вы отключали аутентификацию запросов на шаге 1, включите ее.
Синтаксис
java -jar <dtm_tools_file_name>.jar --connect <prostore_host:prostore_port/db_name> populate_changelog --clear
Параметры
dtm_tools_file_name
-
Имя jar-файла утилиты DTM Tools.
Ключевые слова
--connect
Задает строку подключения к ноде Prostore. Значение состоит из следующих элементов:
prostore_host
— IP-адрес или доменное имея ноды Prostore;db_name
— номер порта для подключения к ноде Prostore, равный значению параметра конфигурацииDTM_CORE_HTTP_PORT
;db_name
— имя логической БД, для которой заполняется журнал.
--clear
Включает перезапись существующего журнала. Перезапись журнала может быть полезна, если текущий журнал заполнен не полностью — например, если логическая база данных была создана до появления функциональности журнала и потом дополнялась новыми сущностями.
Если ключевое слово не указано, команда создает и заполняет журнал, если он отсутствует, или заполняет журнал, если он пуст, а иначе возвращает ошибку.
Ограничения
- Использование команды недоступно при включенной аутентификации запросов.
- Запуск команды недоступен, если в логической БД есть незавершенные операции по изменению схемы данных.
- Во время работы команды недоступно добавление, удаление и изменение логических сущностей.
- Операции по созданию внешних таблиц не записываются в журнал.
Примеры
Создание и заполнение нового журнала
java -jar dtm-tools-1.19.jar --connect 10.92.3.86:9090/marketing populate_changelog
Перезапись существующего журнала
java -jar dtm-tools-1.19.jar --connect 10.92.3.86:9090/marketing populate_changelog --clear
Варианты вывода команды
Вывод при успешном восстановлении журнала
При успешном восстановлении журнала команда выводит сообщение POPULATE_CHANGELOG is done
.
Ниже показан примерный вид вывода команды при успешном восстановлении журнала после его перезаписи (набор сообщений и их текст могут изменяться от версии к версии):
Started POPULATE_CHANGELOG process with params ...
Changelog history will be lost. Are you sure? Y / N
y
Got changes for datamart ...
Deny changes in datamart [...] with code [populate_...]
Successfully deleted /adtm/dtm/.../changelog
Allow changes in datamart ...
Connection is closed
POPULATE_CHANGELOG is done
Вывод при неуспешном восстановлении журнала
При неуспешном восстановлении журнала команда выводит текст ошибки.