mxchangeport

В этом документе описывается служебная программа изменения портов master/standby mxchangeport.

1 Описание

Программа mxchangeport предназначена для безопасного изменения портов MatrixDB для master-узла и, при необходимости, standby-узла. Процесс включает предварительные проверки, обновление каталога и конфигураций, синхронизацию спецификации и завершается контролируемым восстановлением. При откате выполняется специальный шаг перезапуска служб репликации для быстрого восстановления подключения.

2 Шаги

  • Предварительная проверка: проверка доступности целевых портов на затронутых хостах.
  • Каталог: выполнение UpdateSegmentPort на master (и на standby, если включено).
  • Изменение конфигурации:
    • postgresql.conf: установка порта для целевого экземпляра.
    • defaults.conf: обновление MasterPortBase/StandbyPortBase.
    • cluster.conf: установка PGPort для хоста.
    • recover_db_cluster.json: обновление сопоставлений DBID→порт.
    • standby postgresql.auto.conf: изменение порта в primary_conninfo.
    • update_bash: обновление окружения mxadmin (PGPORT).
  • Синхронизация спецификации: добавление действия RestartServicesOnRevert перед SaveSpecToEtcd (в прямом направлении — no-op; при откате — перезапуск целей репликации).
  • Восстановление: перезапуск служб на всех хостах, затем mxstart и mxrecover.
  • Перенастройка сборщика данных: обновление конфигураций служб на новый порт; обновление порта БД matrixmgr; перезапуск mxui/cylinder; проверка при тестировании отката.

3 Использование

  • Только master (изменение порта master)
    mxchangeport run --new-port 6432
  • Master + standby (один и тот же порт)
    mxchangeport run --new-port 6432 --with-standby
  • Master + standby (разные порты для standby)
    mxchangeport run --new-port 6432 --with-standby --standby-port 7432
  • Тест отката (внедрение ошибки для проверки корректности отката)
    mxchangeport run --new-port 6432 --revert-test

4 Отладка

  • Генерация начального JSON через перенаправление
    mxchangeport run --new-port 6432 --with-standby --standby-port 7432 --gen-init > init.json
  • Генерация плана из начального файла и выполнение указанного плана Генерация плана:
    mxchangeport run --init-file init.json --gen-plan > plan.json

    Выполнение плана:

    mxchangeport run --plan-file plan.json

Примечание!
При использовании --with-standby и отсутствии --standby-port standby использует тот же новый порт.