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

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

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

При высокоскоростной миграции данные минуют master-узел: они читаются напрямую с segment-узлов исходного кластера, пересылаются через mxgate и отправляются на segment-узлы целевого кластера, поэтому узкого места в виде одного master-узла не возникает.

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

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 Имя пользователя для подключения к исходной базе данных (рекомендуется superuser)
--src-password Пароль для подключения
--src-schema Имя схемы исходной таблицы
--src-table Имя исходной таблицы
--compress Способ передачи данных с segment-хостов исходной базы данных в текущую базу данных:
Пустая строка "" — без сжатия, передача в открытом виде
gzip: сжатие gzip; на segment-хостах исходной базы данных должна быть установлена Linux-команда gzip
lz4: сжатие lz4; на segment-хостах исходной базы данных должна быть установлена Linux-команда lz4
Рекомендуется lz4 > gzip > без сжатия
--port-base При передаче занимается диапазон портов 9129~
--local-ip Необходимо указать IP-адрес этой машины, достижимый из исходной базы данных
--db-database Имя базы данных, в которой находится целевая таблица миграции
--target Имя целевой таблицы миграции в форме \<schema>.\<table>; если имя схемы не указано, по умолчанию используется public
--format text или csv. CSV обязателен только при миграции данных со сложными строками (содержащими переводы строк, кавычки, разделители). В остальных случаях, когда допустимы и text, и csv, предпочтительнее режим text
--time-format В режиме transfer обязательно raw
--use-auto-increment Если целевая таблица содержит автоинкрементные поля типа serial, mxgate по умолчанию пропускает поля этого типа; добавьте эту опцию, чтобы отключить логику пропуска в mxgate

Начиная с 6.8.4, миграция одной таблицы выполняет сопоставление по именам столбцов: миграция возможна даже при несовпадающем порядке столбцов в исходной и целевой таблицах, достаточно совпадения имён столбцов.

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.