Начало работы
Подключение
Тесты производительности
Развёртывание
Использование данных
Загрузка данных
Миграция данных
Запрос данных
Управление кластерами
Обновление
Глобальное обслуживание
Масштабирование
Мониторинг
Безопасность
Лучшие практики
Технические принципы
Типы данных
Хранилище
Исполняющий движок
Потоковая обработка (Domino)
MARS3 Индексы
Расширения
Расширенные функции
Расширенный запрос
Федеративные запросы
Grafana
Резервное копирование и восстановление
Аварийное восстановление
Графовая база данных
Введение
Предложения
Функции
Расширенные темы
Руководство
Настройка производительности
Устранение неполадок
Инструменты
Параметры конфигурации
SQL-команда
Часто задаваемые вопросы
Инструмент 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
Внимание!
Полный обзор стратегий и процедур миграции данных см. в разделе Миграция данных.