Войти

DTM Tools для бэкапирования и восстановления

Назначение 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.

Формат команды:



 

java -jar dtm-tools-<version>.jar --connect <dtm_host:dtm_port/db_name> backup_to_kafka [--datasourceType <datasource>] --topic <backup_topic> [--kafkaBrokers <backup_kafka_broker_list>] [--deltaNum  <delta_num>] [--partitionsCount <partitions_count>] [--threadsCount <threads_count>] [--chunkSize <chunk_size>] [--kafkaRetries <kafka_retries>]

Параметры:

  • 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.

Команда для создания бэкапа:



 

java -jar ./dtm-tools-1.12.0.jar --connect rs1-core-service-01:9090/backup_demo backup_to_kafka --topic backup_demo_007 --kafkaBrokers rs1-ads-01:9092

где в параметрах указаны:

  • актуальные адреса Prostore и брокеров Kafka для этой же витрины
  • имя витрины (в данном примере – backup_demo)
  • произвольное название для создаваемого топика (в данном примере – backup_demo_007).

После успешного создания бэкапа выводится сообщение: BACKUP is done.

Пример вывода в случае успешного создания бэкапа изображен на Рисунке 1.

Результат успешного выполнения команды restore.png

Рисунок 1 – Результат успешного создания бэкапа.

В результате выполнения команды создан топик backup_demo_007. Он может быть использован для восстановления витрины backup_demo.

Восстановление из бэкапа

Для развертывания резервной копии логической БД или восстановления поврежденной логической БД из бэкапа используется команда restore_from_kafka.

Команда последовательно загружает инкременты из топика в логическую базу данных. При этом команда создает недостающие логические сущности и загружает недостающие дельты и записи журнала. Номера и метки времени дельт сохраняются такими же, как в исходной логической БД. Операции записи, выполненные в исходной логической БД вне дельт, включаются в состав ближайшей дельты, следующей за ними.

С каждой дельтой разворачивается вся схема данных, актуальная на момент создания инкремента. Для логических таблиц из бэкапа загружается структура и данные, для логических и материализованных представлений — только структура. После создания материализованные представления автоматически наполняются данными из развернутых таблиц.

Формат команды:



 

java -jar dtm-tools-<version>.jar --connect <dtm_host:dtm_port/db_name> restore_from_kafka --topic <backup_topic> [--kafkaBrokers <backup_kafka_broker_list>] [--delta  <delta_num>] [--partitionsCount <partitions_count>] [--threadsCount <threads_count>] [--messageLimit <message_limit>] [--readonly [<log_level>]] [--deltaFrom <readonly_delta_from>]  [--kafkaRetries <kafka_retries>]

Параметры:

  • 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.

Команда для развертывания из бэкапа:



 

java -jar ./dtm-tools-1.12.0.jar --connect rs1-core-service-01:9090/backup_demo restore_from_kafka --topic backup_demo_007 --kafkaBrokers rs1-ads-01:9092

После успешного выполнения команды выводится сообщение: RESTORE is done.

Пример вывода в случае успешного выполнения команды restore изображен на Рисунке 2

Результат успешного создания бэкапа.png

Рисунок 2 – Результат успешного выполнения команды restore.

Авторизуйтесь, чтобы оставить комментарий к статье