Инструмент mxshift в настоящее время поддерживает следующие функции:
В данном разделе описывается, как написать файл конфигурации config.json, необходимый для запуска инструмента mxshift, включая параметры и опции командной строки.
Для использования mxshift необходимо сначала подготовить JSON-файл конфигурации с именем config.json. Пример приведён ниже:
{
"mode": "normal",
"verify": true,
"bothway": true,
"concurrency": 5,
"compress_method": "lz4",
"log_level": "info",
"gphome": "/usr/local/greenplum-db-6.7.1",
"src_host": "sdw3",
"src_db": "testdb",
"src_user": "gpadmin",
"src_password": "xxxx",
"src_port": 54322,
"target_host": "172.16.100.32",
"target_db": "destdb",
"target_user": "mxadmin",
"target_password": "yyyy",
"target_port": 5432,
"where": {
"enabled": false,
"global": "txdate >= '2022-10-01' AND batchnum >= 100000000",
"override": [
{
"schema": "test_schema_1",
"name": "table_001",
"where": "abc > 10"
},
{
"schema": "test_schema_2",
"name": "another_table",
"where": "tag != 'aabbcc' AND ts > '2022-01-01'"
}
]
},
"schema_list": [
"test_schema_1",
"test_schema_2"
],
"exclude_schema_list": [
"test_schema_5",
"test_schema_8"
],
"table_list": [
{
"schema": "test_schema_1",
"name": "table_001"
},
{
"schema": "test_schema_2",
"name": "table_002"
}
],
"exclude_table_list":[
{
"schema": "test_schema_3",
"name": "table_003"
}
]
}
Ниже приведено подробное описание каждого параметра в файле конфигурации:
| Параметр | Описание |
|---|---|
mode |
Режим работы. Допустимые значения: normal, dryrun, fetch, motion. normal: значение по умолчанию; выполняет обычную миграцию данных.dryrun: проверяет подключение к обеим базам данных и производит проверку простыми DDL-операциями, но не читает и не записывает данные.fetch: на основе dryrun считывает данные из источника и отправляет их на целевые сегменты, но отбрасывает без обработки. Используется для тестирования производительности чтения из источника и скорости передачи по сети.motion: расширяет fetch, выполняя разбор данных на стороне цели и их перераспределение по соответствующим целевым сегментам. Используется для тестирования скорости перераспределения данных на стороне цели. |
verify |
По умолчанию false. Если включено, проверяет совпадение количества строк до и после миграции. |
bothway |
По умолчанию mxshift мигрирует сначала самые большие таблицы, чтобы завершить полную миграцию как можно быстрее. При установке значения true mxshift одновременно обрабатывает как самые большие, так и самые маленькие таблицы с обоих концов. |
concurrency |
Максимальное количество таблиц, мигрируемых параллельно. По умолчанию — 5; максимально допустимое значение — 10. |
compress_method |
Метод сжатия: gzip, zstd, lz4 или 0 (без сжатия). По умолчанию — 0. При включении любого сжатия пользователь mxadmin на каждом целевом сегменте должен иметь возможность подключения по SSH без пароля к каждому исходному сегменту. Рекомендуется протестировать эту настройку с помощью dryrun. |
deduplicate (Экспериментально) |
Если предыдущая миграция mxshift была прервана, включение этой опции позволяет mxshift возобновить процесс и завершить миграцию только оставшихся таблиц, пропуская уже успешно перенесённые. Эта функция является экспериментальной. |
log_level |
Уровень логирования. По умолчанию установлено значение info, которое выводит сообщения о ходе выполнения, ошибках и предупреждениях. Для более детального лога, полезного при разработке и диагностике, установите значение debug. |
gphome |
Абсолютный путь к каталогу GPHOME на исходной базе данных. |
src_host |
Имя хоста или IP-адрес Master-узла исходного кластера GP. |
src_db |
Исходная база данных GP, из которой будут переноситься данные. |
src_user |
Имя пользователя для подключения к исходной базе данных GP. |
src_password |
Пароль пользователя исходной базы данных GP. |
src_port |
Порт исходной базы данных GP. |
target_host |
Имя хоста или IP-адрес Master-узла целевого кластера MatrixDB. |
target_db |
Целевая база данных MatrixDB, в которую будут переноситься данные. |
target_user |
Имя пользователя для подключения к целевой базе данных MatrixDB. |
target_password |
Пароль пользователя целевой базы данных MatrixDB. |
target_port |
Порт целевой базы данных MatrixDB. |
table_list |
Список таблиц GP-источника для миграции. Для секционированных таблиц укажите родительскую секционированную таблицу. Чтобы перенести всю базу данных, оставьте это поле пустым и вместо него настройте schema_list. В этом случае mxshift автоматически выполнит миграцию всех непустых таблиц в порядке убывания размера. |
exclude_table_list |
Список имён схем и таблиц, которые следует исключить из миграции. |
schema_list |
Список схем в исходной базе данных GP, которые нужно включить. Порядок приоритета: если указан table_list, мигрируются только эти таблицы; в противном случае, если задан schema_list, мигрируются все таблицы в указанных схемах; если ни один из них не задан, рассматриваются все таблицы в базе данных. |
exclude_schema_list |
Список схем, которые следует исключить из миграции. Таблицы в этих схемах не будут перенесены. Если схема присутствует одновременно в schema_list и exclude_schema_list, она будет исключена. |
no-color |
Отключает цветной вывод в логах. |
Если вы хотите выполнить инкрементальную миграцию с использованием условий WHERE, используйте следующие дополнительные параметры:
| Параметр | Описание |
|---|---|
enabled |
По умолчанию отключено. Установите значение true, чтобы включить фильтрацию по условию WHERE. |
global |
SQL-выражение WHERE, применяемое ко всем таблицам миграции. Если таблица не содержит столбцы, указанные в условии WHERE, фильтр для этой таблицы пропускается, и mxshift помечает её как SKIPPED. |
override |
Массив объектов, каждый из которых содержит schema, name и пользовательское условие where. Эти условия переопределяют глобальное условие WHERE для конкретных таблиц. |
Опции командной строки mxshift следующие:
| Опция | Описание |
|---|---|
-c или --config_path |
Путь к файлу конфигурации mxshift (например, config.json). |
-n или --no-color |
Отключает цветной вывод в логах. |
-v или --version |
Отображает версию инструмента mxshift. |
Пример файла конфигурации config.json для полной миграции:
{
"mode": "normal",
"verify": false,
"bothway": true,
"concurrency": 5,
"compress_method": "",
"log_level": "info",
"gphome": "/usr/local/greenplum-db-6.7.1",
"src_host": "sdw3",
"src_db": "testdb",
"src_user": "gpadmin",
"src_password": "greenplum@2020",
"src_port": 54322,
"target_host": "172.16.100.32",
"target_db": "ms",
"target_user": "mxadmin",
"target_password": "xxxx",
"target_port": 5432,
"schema_list":["test_schema_1", "test_schema_2"],
"exclude_schema_list":["test_schema_5", "test_schema_8"],
"table_list":[
{
"schema":"test_schema_1",
"name":"table_001"
},
{
"schema":"test_schema_2",
"name":"table_002"
}
],
"exclude_table_list":[
{
"name":"test_schema_3",
"schema":"table_003"
}
]
}
После подготовки JSON-файла выполните следующую команду для запуска полной миграции:
mxshift -c config_path.json
Используйте условия WHERE для выполнения инкрементальной миграции:
{
"mode": "normal",
"verify": false,
"bothway": true,
"concurrency": 5,
"compress_method": "",
"log_level": "info",
"gphome": "/usr/local/greenplum-db-6.7.1",
"src_host": "sdw3",
"src_db": "testdb",
"src_user": "gpadmin",
"src_password": "greenplum@2020",
"src_port": 54322,
"target_host": "172.16.100.32",
"target_db": "ms",
"target_user": "mxadmin",
"target_password": "xxxx",
"target_port": 5432,
"where": {
"enabled": true,
"global": "txdate >= '2022-10-01' AND batchnum >= 100000000",
"override": [
{
"schema":"test_schema_1",
"name":"table_001",
"where": "abc > 10"
}
]
},
"schema_list":["test_schema_1", "test_schema_2"],
"exclude_schema_list":["test_schema_5", "test_schema_8"],
"table_list":[
...
],
"exclude_table_list":[
...
]
}
После подготовки JSON-файла выполните следующую команду для запуска инкрементальной миграции:
mxshift -c config_path.json
Примечание: Убедитесь, что
"enabled"установлено вtrue, чтобы активировать фильтр WHERE.
mxshift автоматически определяет реплицированные таблицы и применяет соответствующую логику миграции, чтобы избежать дублирования данных.table_list является реплицированной, вы должны явно объявить это, добавив поле policyType со значением "r".Пример фрагмента конфигурации:
"table_list":[
{
"schema":"public",
"name":"tbl_test_replica",
"policyType":"r"
}
],
После подготовки JSON-файла выполните следующую команду для запуска миграции реплицированных таблиц:
mxshift -c config_path.json
Внимание!
Полный обзор стратегий и процедур миграции данных см. в разделе Миграция данных.