Назначение DTM Tools
DTM Tools — это enterprise-утилита командной строки, расширяющая и дополняющая возможности системы Prostore, начиная с версии 6.3.0. Утилита предназначена для использования при работе с витринами данных. Она позволяет копировать данные из одной логической базы в другую, создавать резервную копию и восстанавливать из нее логическую базу данных, а также выполнять ряд действий с топиками Kafka.Основная функциональность DTM Tools
Основные команды DTM Tools предназначены для работы:
- с таблицами и данными: копирование структуры и данных логических таблиц и представлений из одной логической базы данных в другую;
- с бэкапом: создание резервной копии логической базы данных на основе целостного набора инкрементов (частей логической БД) и для развертывания резервной копии или восстановления поврежденной логической БД;
- с топиками Kafka:
- вывод метаинформации по топику
- обнуление смещения в топике
- удаление сообщения и обнуление смещения в топике
- удаление топика и обнуление всех смещений;
- с логической схемой данных:
- восстановление данных витрины в плагине, где произошла ошибка, на основе данных из витрины с корректным плагином;
- заполнение журнала логической базы данных.
Работа с бэкапом
Создание бэкапа
Для создания резервной копии (бэкапа) логической БД путем выгрузки инкрементов в топик Kafka при помощи DTM Tools используется команда backup_to_kafka.
За один запуск команды backup_to_kafka можно выгрузить один или несколько инкрементов. Если в команде указан номер дельты, выгружается инкремент этой дельты, иначе — инкременты тех дельт, которых еще нет в топике Kafka.
Формат команды:
Параметры:
- version — номер версии утилиты DTM Tools;
- dtm_host — IP-адрес или имя хоста, на котором установлена система;
- dtm_port — номер порта для подключения к системе (равен значению параметра DTM_CORE_HTTP_PORT в конфигурации системы);
- db_name — имя логической базы данных, для которой создается бэкап;
- datasource — необязательный параметр. Имя датасорса, из которого выгружаются инкременты. Если параметр не задан, данные из датасорса выгружаются для каждой логической таблицы.
- backup_topic — имя топика, в который выгружаются инкременты;
- backup_kafka_broker_list — список адресов брокеров сообщений Kafka (через запятую). Если параметр не задан, используются брокеры, заданные в конфигурации системы (см. параметр ZOOKEEPER_KAFKA_ADDRESS, раздел 4);
- delta_num — необязательный параметр. Номер дельты, из которой выгружается инкремент. Если параметр не указан, выгружаются инкременты всех дельт, номера которых больше максимального номера дельты в топике backup_topic;
- partitions_count — количество партиций, создаваемых в топике backup_topic. Значение по умолчанию — 1. Параметр учитывается при создании нового топика; иначе используются существующие партиции;
- threads_count — необязательный параметр. Количество параллельных потоков, выгружающих данные. Значение по умолчанию — 1;
- chunk_size — количество записей, сохраняемых в одном сообщении Kafka. Значение по умолчанию — 1000;
- kafka_retries – количество попыток записи сообщения в топик. Значение по умолчанию – 10.
Процесс создания бэкапа показан на примере демонстрационной БД backup_demo.
Команда для создания бэкапа:
где в параметрах указаны:
- актуальные адреса Prostore и брокеров Kafka для этой же витрины
- имя витрины (в данном примере – backup_demo)
- произвольное название для создаваемого топика (в данном примере – backup_demo_007).
После успешного создания бэкапа выводится сообщение: BACKUP is done.
Пример вывода в случае успешного создания бэкапа изображен на Рисунке 1.
Рисунок 1 – Результат успешного создания бэкапа.
В результате выполнения команды создан топик backup_demo_007. Он может быть использован для восстановления витрины backup_demo.
Восстановление из бэкапа
Для развертывания резервной копии логической БД или восстановления поврежденной логической БД из бэкапа используется команда restore_from_kafka.
Команда последовательно загружает инкременты из топика в логическую базу данных. При этом команда создает недостающие логические сущности и загружает недостающие дельты и записи журнала. Номера и метки времени дельт сохраняются такими же, как в исходной логической БД. Операции записи, выполненные в исходной логической БД вне дельт, включаются в состав ближайшей дельты, следующей за ними.
С каждой дельтой разворачивается вся схема данных, актуальная на момент создания инкремента. Для логических таблиц из бэкапа загружается структура и данные, для логических и материализованных представлений — только структура. После создания материализованные представления автоматически наполняются данными из развернутых таблиц.
Формат команды:
Параметры:
- version — номер версии утилиты DTM Tools;
- dtm_host — IP-адрес или имя хоста, на котором установлена система;
- dtm_port — номер порта для подключения к системе (равен значению параметра DTM_CORE_HTTP_PORT в конфигурации системы);
- db_name — имя разворачиваемой логической базы данных. Имя должно совпадать с именем логической БД, для которой был создан бэкап;
- backup_topic — имя топика с бэкапом;
- backup_kafka_broker_list — список адресов брокеров сообщений Kafka (через запятую). Если параметр не задан, используются брокеры, заданные в конфигурации системы (см. параметр ZOOKEEPER_KAFKA_ADDRESS, раздел 4);
- delta_num — необязательный параметр. Если параметр задан, то загружаются данные по дельту с этим номером включительно. Если параметр не задан, загружаются все данные из топика;
- partitions_count — количество партиций, создаваемых в промежуточных топиках, куда копируется бэкап. Значение по умолчанию — 1;
- threads_count — необязательный параметр. Количество параллельных потоков, загружающих бэкап в логическую базу данных. Значение по умолчанию равно числу партиций в топике с бэкапом;
- message_limit — максимальное количество сообщений Kafka, записываемых в один промежуточный топик. Значение по умолчанию — 1000;
- readonly – необязательный параметр. Если он задан, то метаинформация бэкапа, который хранится в топике Kafka, выводится в лог командной строки с заданной детализацией, а сами данные из бэкапа не передаются. Если ключевое слово readonly не указано, метаинформация не выводится.
- log_level — уровень детализации логов, выводимых в режиме readonly. Возможные значения:
- 0 (по умолчанию) — ключи сообщений Kafka и список некорректных, неполных и отсутствующих дельт в топике с бэкапом;
- 1 — список некорректных, неполных и отсутствующих дельт в топике с бэкапом;
- readonly_delta_from — номер дельты, начиная с которой выводится лог в режиме readonly. Значение по умолчанию — 0;
- kafka_retries – количество попыток записи сообщения в топик. Значение по умолчанию – 10.
Пример развертывания логической БД из бэкапа показан на примере демонстрационной БД backup_demo.
Для развертывания бэкапа, сохраненного в топике backup_demo_007, на удаленную витрину необходимо настроить витрину-приемник на брокер Kafka витрины-источника. Для этого нужно выполнить следующие действия:
- В конфигурационном файле yml модуля DTM-query-execution в параметре ZOOKEEPER_KAFKA_ADDRESS заменить адрес «родного» брокера Kafka на IP‑адрес брокера Kafka источника.
- В конфигурационном файле yml модуля DTM-Status-Monitor в параметре STATUS_MONITOR_BROKERS заменить адрес «родного» брокера Kafka на IP‑адрес брокера Kafka источника.
- Перезапустить модули DTM-query-execution и DTM-status-monitor.
- После развертывания из бэкапа восстановить корректные значения у параметров ZOOKEEPER_KAFKA_ADDRESS модуля DTM-query-execution и STATUS_MONITOR_BROKERS модуля DTM-Status-Monitor.
Команда для развертывания из бэкапа:
После успешного выполнения команды выводится сообщение: RESTORE is done.
Пример вывода в случае успешного выполнения команды restore изображен на Рисунке 2
Рисунок 2 – Результат успешного выполнения команды restore.