Команда ZK2PG для переноса системных данных из ZooKeeper в PostgreSQL

Содержание раздела
  1. Использование команды
  2. Синтаксис
    1. Параметры
    2. Ключевые слова
      1. --zk
      2. --datamarts
      3. --pg
      4. --schema
  3. Ограничения
  4. Примеры
    1. Перенос данных в три отдельные СУБД
    2. Перенос данных в три схемы одной СУБД
    3. Перенос данных в одну схему одной СУБД
  5. Варианты вывода команды

Команда ZK2PG предназначена для переноса системных данных (сервисной БД) из ZooKeeper в Postgres-совместимые СУБД при обновлении кластера Prostore с версии 6.* на версию 7.*.

В команде должны быть перечислены все логические базы данных, для которых нужно перенести системные данные. Перенос данных по частям с несколькими запусками команды не поддерживается.

На время переноса системных данных должны быть доступны оба кластера: старый кластер версии 6.* (источник) и новый кластер версии 7.* (приемник).

Использование команды

  1. Запустите все ноды кластера-приемника и дождитесь их полного запуска. Система создаст системные схемы и таблицы в тех СУБД, которые выделены для размещения сервисных БД (см. секцию конфигурации raft.servicedb).
  2. Выключите все ноды кластера-приемника и дождитесь их полной остановки.
  3. В каждой мигрируемой логической БД кластера-источника:
    1. Дождитесь завершения всех активных операций записи и операций по изменению схемы.
    2. Выполните GET_WRITE_OPERATIONS и убедитесь, что в ответе возвращается пустой список.
    3. Выполните GET_CHANGES и убедитесь, что в ответе все операции имеют заполненное поле end_time.
    4. Если дельта открыта, закройте ее.
    5. Создайте пустую дельту, выполнив последовательно команды BEGIN DELTA и COMMIT DELTA.
  4. Выключите все ноды кластера-источника.
  5. Запустите команду ZK2PG с указанием необходимых параметров.
  6. Если команда вернула успешный ответ, запустите все ноды кластера-приемника.
  7. Если команда вернула неуспешный ответ:
    1. Удалите из СУБД кластера-приемника все системные схемы, созданные командой ZK2PG, выполнив для каждой DROP SCHEMA <имя_схемы>.
    2. Повторите все шаги, начиная с первого.

Синтаксис

java -jar <dtm_tools_file_name>.jar zk2pg \ 
--zk <zk_host:zk_port/chroot/env> \
--datamarts <logical_db_name[ ...]> \
--pg <pg_host1:pg_port1/db_name1>[?user=<username1>&password=<password1>] --schema <sys_schema_name1> \
[--pg <pg_host2:pg_port2/db_name2>[?user=<username2>&password=<password2>] --schema <sys_schema_name2>] \
[--pg <pg_host3:pg_port3/db_name3>[?user=<username3>&password=<password3>] --schema <sys_schema_name3>] \
[ ... ]

Параметры

dtm_tools_file_name

Имя jar-файла утилиты DTM Tools.

Ключевые слова

--zk

Задает строку подключения к сервисной БД в кластере-источнике.

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

Параметр Описание Соответствующий параметр конфигурации ноды
zk_host Сетевой адрес хоста с ZooKeeper, откуда нужно перенести сервисную БД ZOOKEEPER_DS_ADDRESS
zk_port Номер порта на хосте zk_host
chroot Корневой путь к сервисной БД ZOOKEEPER_DS_CHROOT
env Имя окружения DTM_NAME

--datamarts

Задает имена логических БД, для которых переносятся системные данные. Имена перечисляются через пробел.

--pg

Задает строку подключения к сервисной БД ноды в кластере-приемнике.

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

Параметр Описание Соответствующий параметр конфигурации ноды
pg_host Сетевой адрес хоста с СУБД, где будет размещаться сервисная БД ноды RAFT_SERVICEDB_HOST
pg_port Номер порта на хосте pg_host RAFT_SERVICEDB_PORT
db_name Имя базы данных, в которой будет размещаться схема <sys_schema_name> RAFT_SERVICEDB_DATABASE
username Имя пользователя для авторизации в СУБД RAFT_SERVICEDB_USER
password Пароль для авторизации в СУБД RAFT_SERVICEDB_PASS

Количество ключевых слов --pg в команде должно соответствовать количеству нод в кластере-приемнике. Если требуется разместить все сервисные БД в одной СУБД, укажите для каждой ключевое слово --pg с одинаковым значением.

Подробнее о вариантах развертывания сервисных БД см. в разделе Схемы развертывания.

--schema

Задает имя схемы СУБД, где будет размещаться сервисная БД ноды.

Количество ключевых слов --schema в команде должно соответствовать количеству нод в кластере-приемнике. Значение ключевого слова, указываемое для ноды, должно быть равно значению ее параметра конфигурации RAFT_SERVICEDB_SCHEMA.

Ограничения

  • На момент запуска команды мигрируемые логические БД источника должны находиться в следующем состоянии:
    • все операции записи и операции по изменению схемы завершены;
    • все операции записи замыкает закрытая дельта, и после нее нет открытой дельты.
  • На момент запуска команды в кластере-приемнике должны отсутствовать логические БД.
  • Команда не переносит:
    • статистику,
    • информацию об отключенных датасорсах,
    • информация об удаленных операциях по изменению схемы,
    • журналы tslog таблиц, удаленных на логическом уровне.

Примеры

Перенос данных в три отдельные СУБД

Без указания учетной записи и пароля СУБД:

java -jar dtm-tools-1.20.jar zk2pg --zk 10.92.100.01:2181/adtm/dtm --datamarts marketing marketing_new moscow --pg 10.92.145.1:5432/dtm --schema sys1 --pg 10.92.145.2:5432/dtm --schema sys2 --pg 10.92.145.3:5432/dtm --schema sys3

С указанием учетной записи и пароля СУБД:

java -jar dtm-tools-1.20.jar zk2pg --zk 10.92.100.01:2181/adtm/dtm --datamarts marketing marketing_new moscow --pg 10.92.145.1:5432/dtm?user=prostore&password=prostore_pass --schema sys1 --pg 10.92.145.2:5432/dtm?user=prostore&password=prostore_pass --schema sys2 --pg 10.92.145.3:5432/dtm?user=prostore&password=prostore_pass --schema sys3

Перенос данных в три схемы одной СУБД

java -jar dtm-tools-1.20.jar zk2pg --zk 10.92.100.01:2181/adtm/dtm --datamarts marketing marketing_new moscow --pg 10.92.145.1:5432/dtm --schema sys1 --pg 10.92.145.1:5432/dtm --schema sys2 --pg 10.92.145.1:5432/dtm --schema sys3

Перенос данных в одну схему одной СУБД

java -jar dtm-tools-1.20.jar zk2pg --zk 10.92.100.01:2181/adtm/dtm --datamarts marketing marketing_new moscow --pg 10.92.145.1:5432/dtm --schema sys1

Варианты вывода команды

При успешном выполнении команды выводится текст Transfer from zookeeper to pg successfully finished, при неуспешном — текст ошибки.