mxchangeport

本文档介绍了 master/standby 端口修改工具 mxchangeport。

mxchangeport

1 描述

mxchangeport 用于安全地更改 MatrixDB 主节点(以及可选的备节点)的端口。该工作流会执行前置检查、更新元数据目录与配置文件、同步规格定义,并通过受控恢复完成整个过程。若需回滚,系统将执行一个仅用于回滚的步骤,重启复制服务以快速恢复连接。

2 操作步骤

  • 前置检查(Precheck):验证目标端口在相关主机上是否空闲。
  • 元数据目录更新(Catalog):在主节点(以及启用时的备节点)上调用 UpdateSegmentPort 更新端口信息。
  • 配置修改(ConfigModify)
    • postgresql.conf:为每个目标实例设置对应端口。
    • defaults.conf:更新 MasterPortBase / StandbyPortBase
    • cluster.conf:为对应主机设置 PGPort
    • recover_db_cluster.json:刷新 DBID 到端口的映射关系。
    • 备节点的 postgresql.auto.conf:修补 primary_conninfo 中的端口号。
    • update_bash:刷新 mxadmin 环境变量中的 PGPORT
  • 规格同步(SpecSync):在将规格保存至 Etcd(SaveSpecToEtcd)之前,插入 RestartServicesOnRevert 步骤(正向执行时为空操作;回滚时则重启复制目标服务)。
  • 恢复(Recovery):在所有主机上重启服务,随后执行 mxstartmxrecover
  • 采集器重配置(CollectorReconfigure):更新服务配置以指向新端口;更新 matrixmgr 数据库端口;重启 mxui/cylinder;在回滚测试中执行探测验证。

3 使用示例

  • 仅修改主节点端口

    mxchangeport run --new-port 6432
  • 同时修改主节点与备节点端口(使用相同端口)

    mxchangeport run --new-port 6432 --with-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 时,备节点将使用与主节点相同的新端口。