mxmoveseg

В этом документе описывается инструмент миграции экземпляров зеркальных сегментов (Mirror) — mxmoveseg.

Примечание!
mxmoveseg используется исключительно для миграции экземпляров сегментов, у которых в таблице gp_segment_configuration значение столбца role (текущая роль) равно m (зеркало). Значение столбца preferred_role (предпочитаемая роль) не учитывается.

1 Описание

  • Функциональность
    • Инструмент mxmoveseg поддерживает перенос любого экземпляра базы данных, выступающего в роли Mirror, на другой сервер.
  • Сценарии использования
    • Действующий кластер работает, но испытывает неравномерную нагрузку, что влияет на производительность и стабильность. Зеркала можно переместить между серверами для балансировки нагрузки.
    • Сервер, на котором размещено зеркало, отключился. Необходимо перенести зеркало на новый исправный сервер, чтобы сохранить отказоустойчивость кластера.
  • Ограничения
    • Инструмент mxmoveseg не поддерживает миграцию Standby Master.

Примечание!
Перед использованием этого инструмента необходимо вручную проверить состояние всех серверов в кластере. Если какие-либо серверы неисправны, их следует явно указать, чтобы mxmoveseg собирал информацию только с работоспособных хостов.

2 Параметры командной строки

В таблице ниже перечислены доступные параметры командной строки:

Параметр Описание
--config Создает конфигурационный файл для зеркальных сегментов, подлежащих миграции
--plan Генерирует план миграции на основе конфигурации
--setup Выполняет миграцию согласно плану
-h / --help Отображает справочную информацию

3 Примеры

3.1 Перенос существующего сегмента на новый сервер

Примечание!
На новом сервере должен быть установлен пакет YMatrix RPM/DEB той же версии, что и в текущем кластере, в соответствии с документацией по развертыванию YMatrix, однако не следует инициализировать новый кластер через графический интерфейс.

Примечание!
Новый сервер может содержать кластер YMatrix с другой основной версией (например, YMatrix 4.8 на старом сервере и YMatrix 5.1 на новом).

Соберите информацию о существующем кластере базы данных. Используйте more /etc/matrixdb5/cluster.conf, чтобы посмотреть идентификатор кластера.

[<username>@<master_hostname> ~]$ sudo /opt/ymatrix/matrixdb5/bin/mxctl expand init --cluster-id <clusterid> --unrestrict > /tmp/init

Добавьте новый сервер.

[<username>@<master_hostname> ~]$ cat /tmp/init | sudo /opt/ymatrix/matrixdb5/bin/mxctl expand add --unrestrict --host <newhost> > /tmp/initadd

Проверьте сетевую связь между обнаруженными серверами.

[<username>@<master_hostname> ~]$ cat /tmp/initadd | sudo /opt/ymatrix/matrixdb5/bin/mxctl expand netcheck > /tmp/netcheck

Переключитесь на пользователя mxadmin.

[<username>@<master_hostname> ~]$ sudo su - mxadmin

Создайте конфигурационный файл миграции и отредактируйте его в соответствии с внутренними инструкциями, указав экземпляры для миграции.

$ mxmoveseg config --db-cluster-id <clusterid> --filename /tmp/migrate.cfg

# After creating the configuration file, manually edit the dbid (obtained by running SELECT * FROM gp_segment_configuration; after connecting to the database), hostname, etc., of the segments to be migrated. SPEC: If port conflicts exist between the new and old servers, assign new ports in the configuration file.
$ vim /tmp/migrate.cfg

Сформируйте план миграции.

$ mxmoveseg plan --init-file /tmp/netcheck --config-file /tmp/migrate.cfg > /tmp/plan

Выполните миграцию.

$ mxmoveseg setup --plan-file /tmp/plan --mode cli

После успешной миграции проверьте состояние перемещённого зеркала с помощью графического интерфейса: «Управление кластером» → «Обзор кластера» → «Просмотр экземпляров», либо с помощью SQL-запроса SELECT * FROM gp_segment_configuration.

Внимание!
Если исходный сервер был отключен во время миграции, не перезагружайте старый сервер после завершения миграции. Его перезапуск приведёт к запуску старых процессов управления, что вызовет конфликты обнаружения служб с новыми процессами и может привести к нестабильности кластера.

3.2 Перенос существующего сегмента на ранее использованный сервер

Соберите информацию о существующем кластере базы данных. Используйте more /etc/matrixdb5/cluster.conf, чтобы посмотреть идентификатор кластера.

[<username>@<master_hostname> ~]$ sudo /opt/ymatrix/matrixdb5/bin/mxctl expand init --cluster-id <clusterid> --unrestrict > /tmp/init

Проверьте сетевую связь между обнаруженными серверами.

[<username>@<master_hostname> ~]$ cat /tmp/init | sudo /opt/ymatrix/matrixdb5/bin/mxctl expand netcheck > /tmp/netcheck

Переключитесь на пользователя mxadmin.

[<username>@<master_hostname> ~]$ sudo su - mxadmin

Создайте конфигурационный файл миграции и отредактируйте его в соответствии с внутренними инструкциями, указав зеркальные экземпляры для миграции.

$ mxmoveseg config --db-cluster-id <clusterid> --filename /tmp/migrate.cfg

# After creating the configuration file, manually edit the dbid (obtained by running SELECT * FROM gp_segment_configuration; after connecting to the database), hostname, etc., of the Mirror segments to be migrated. SPEC: If port conflicts exist between the target and original servers, assign new ports in the configuration file.
$ vim /tmp/migrate.cfg

Сформируйте план миграции.

$ mxmoveseg plan --init-file /tmp/netcheck --config-file /tmp/migrate.cfg > /tmp/plan

Выполните миграцию.

$ mxmoveseg setup --plan-file /tmp/plan --mode cli

После успешной миграции проверьте состояние перемещённого зеркала с помощью графического интерфейса: «Управление кластером» → «Обзор кластера» → «Просмотр экземпляров», либо с помощью SQL-запроса SELECT * FROM gp_segment_configuration.