Инструмент миграции одиночной таблицы — mxgate

Начиная с версии 4.3, MatrixGate поддерживает режим миграции, позволяющий выполнять высокоскоростную миграцию данных из кластеров Greenplum 5, Greenplum 6 и YMatrix в текущий кластер YMatrix.

1 Принцип высокоскоростной миграции

Высокоскоростная миграция позволяет обходить мастер-узел: данные читаются напрямую с сегментов исходного кластера, передаются через mxgate и отправляются напрямую на сегменты целевого кластера. Это устраняет узкое место, связанное с одним мастер-узлом.

Количество сегментов в исходном и целевом кластерах может отличаться.

2 Использование

2.1 Миграция одиночной таблицы

Миграция одиночной таблицы переносит все данные из указанной таблицы. Пример использования:

mxgate --source transfer \
         --src-host 172.31.41.7 \
         --src-port 5432 \
         --src-db postgres \
         --src-user ec2-user \
         --src-password abc \
         --src-schema public \
         --src-table trans_ao \
         --compress "gzip" \
         --port-base 9129 \
         --local-ip 172.31.33.128 \
         --db-database ttt \
         --target public.trans_ao \
         --format text \
         --time-format raw \
         --use-auto-increment=false

Параметры:

Параметр Описание
--source Точка входа функционала; должна быть установлена в значение 'transfer'
--src-host IP-адрес мастера исходного кластера
--src-port Порт мастера исходного кластера
--src-user Имя пользователя для подключения к исходной базе данных (рекомендуется суперпользователь)
--src-password Пароль подключения
--src-schema Имя схемы исходной таблицы
--src-table Имя исходной таблицы
--compress Метод передачи данных с хостов сегментов источника на этот компьютер:
Пустая строка "": без сжатия, передача в виде обычного текста
gzip: использование сжатия gzip; требует установки команды Linux gzip на хостах сегментов источника
lz4: использование сжатия lz4; требует установки команды Linux lz4 на хостах сегментов источника
Рекомендуемый порядок: lz4 > gzip > без сжатия
--port-base Диапазон портов, используемых при передаче, начинается с 9129
--local-ip Должен быть IP-адресом, доступным из исходного кластера
--db-database Имя целевой базы данных, в которой находится целевая таблица
--target Имя целевой таблицы в формате <schema>.<table>; если схема не указана, используется значение по умолчанию public
--format text или csv. Используйте csv только при наличии в данных сложных строк (например, символы перевода строки, кавычки, разделители). В остальных случаях предпочтительнее text
--time-format В режиме передачи должен быть установлен в raw
--use-auto-increment По умолчанию mxgate пропускает столбцы с автоинкрементом serial в целевой таблице. Используйте этот параметр, чтобы отключить это поведение

2.2 Экспорт в файл

Еще одно применение режима миграции — быстрый экспорт данных в файлы:

mxgate --source transfer \
         --src-host 172.31.41.7 \
         --src-port 5432 \
         --src-db postgres \
         --src-user ec2-user \
         --src-schema public \
         --src-table trans_ao_1 \
         --compress "lz4" \
         --port-base 9129 \
         --local-ip 172.31.33.128 \
         --save-to-dir /tmp/receive/ \
         --db-database ttt \
         --transform nil \
         --writer nil \
         --target trans_ao

Используйте параметр --save-to-dir для указания пути хранения файлов.

Примечание: Даже при экспорте в файлы необходимо указать --db-database и --target для определения целевой базы данных и таблицы, причем целевая база данных и таблица должны существовать.

2.3 Фильтрованная миграция

Фильтрованная миграция использует параметр --src-sql для указания SQL-запроса, фильтрующего данные для миграции. Этот метод поддерживается как для миграции таблица-таблица, так и для миграции таблица-файл:

mxgate --source transfer \
         --src-host 172.31.41.7 \
         --src-port 5432 \
         --src-db postgres \
         --src-user ec2-user \
         --src-sql "select * from demo where c1 = 'xxxx'" \
         --compress "lz4" \
         --port-base 9129 \
         --local-ip 172.31.33.128 \
         --save-to-dir /tmp/receive/ \
         --db-database ttt \
         --transform nil \
         --writer nil \
         --target trans_ao

Полный список параметров инструмента миграции mxgate см. в разделе mxgate.