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

MatrixGate 4.3 добавил режим миграции, позволяющий быстро перенести данные таблиц из кластеров Greenplum5, Greenplum6 и YMatrix в текущий кластер YMatrix.

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

Высокоскоростная миграция позволяет данным обходить узел Master и напрямую считывать данные с сегментов исходного кластера, передавать их через mxgate и отправлять на сегменты целевого кластера. Отсутствует узкое место на одном узле Master.
Количество сегментов в исходном и целевом кластерах может отличаться.
transfer

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-адрес Master исходной базы
--src-port Номер порта Master исходной базы
--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 в режиме transfer должно быть указано значение raw
--use-auto-increment Если целевая таблица содержит поле типа serial (автоинкремент), по умолчанию mxgate пропускает такие поля. Этот параметр отключает логику пропуска таких полей mxgate

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 Фильтрация миграции

Фильтрация миграции позволяет указать SQL-условие для фильтрации данных, подлежащих синхронизации, с помощью параметра --src-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.