Observer 可以改svr_port 和mysql_port 吗?

【 使用环境 】测试环境
【 OB or 其他组件 】Ob4.x
【 使用版本 】4.x
【问题描述】

集群安装完成后,并且导入数据了,但是由于某些原因,需要修改掉端口,从2881 和2882换成其他的端口,

我试了下重启集群时重新指定-P 和-p,然后一直处于init 状态,也试了alter system 修改完rpc_port 和mysql_port 后,再重启的时候指定-P 和-p 也会一直处于init 状态

这个可以支持修改吗?或者说类似于单节点实例,里面有数据了,我想换端口只能通过备份恢复或者迁移的方式吗?

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

3 个赞

日志采集场景: 集群基础信息
日志采集命令: obdiag gather scene run --scene=observer.base

推荐使用 obdiag 工具进行日志采集,并且将采集到的日志提供给我们以便确认问题所在。通过采集集群基础信息,我们可以更好地了解 Observer 集群在修改端口后一直处于 init 状态的原因。

另外,为了确定具体的问题,在此需要您提供一些信息:

  1. 您是否按照官方文档的步骤正确地修改了 svr_port 和 mysql_port?
  2. 修改端口时,是否对所有节点都进行了相同的配置更改?
  3. 在修改端口之前,是否有对集群进行过完整的备份操作?
  4. 当前集群的版本号是多少?
  5. 是否有查看 observer.log 日志文件以获取更多关于 init 状态的详细信息?如果有,请简要描述日志中的异常内容。

附上敏捷诊断工具 obdiag 使用帮助链接

2 个赞

OceanBase 当前版本(包括 4.x)不支持直接修改已存在数据实例的 observer 端口后继续使用数据目录,即使你通过 -P 和 -p 重启或者 alter system 修改也会失败或导致 observer 一直处于 INIT 状态。

1 个赞

理论上可以修改,但是可能会面临重启库的风险吧

经测试,srv_port 与mysql_port 初始化后,不能修改。通过obd cluster edit-config demo 修改端口,修改后需要执行obd cluster redeploy 命令,就会删除原有集群,重新部署,就相当于把集群中的数据删除了,对测试或生产环境不合适

1 个赞

好像不行,重启也是会处于init 状态,可能不支持修改吧

我是黑屏部署的,试了一直处于init 状态

是的,目前测试下来是这样的,所以在想除了迁移数据外,还有其他方案可以替代的不?

根据文档库中的信息,OceanBase 社区版在集群安装完成后,直接修改 svr_portmysql_port 并非官方支持的操作。以下是对您问题的详细分析和可能的解决方案:


1. 为什么修改端口后会一直处于 init 状态?

  • OceanBase 的端口配置(如 svr_portmysql_port)在集群初始化时被固化到元数据中,后续直接修改这些端口可能会导致 Observer 节点无法正确加载元数据,从而一直处于 init 状态。
  • 如果通过 alter system 修改端口或重启时重新指定 -P-p 参数,Observer 节点可能无法与集群其他节点正常通信,进而导致初始化失败。

2. 目前可行的解决方案

根据您的描述,除了迁移数据外,可以尝试以下替代方案:

方案 1:使用 OBProxy 转发端口

  • 如果目标是更改客户端访问的端口,可以通过部署 OBProxy 来实现端口转发,而无需直接修改 Observer 的端口。
  • 配置步骤:
    1. 部署 OBProxy,并将其监听端口设置为您希望的端口(例如 3306)。
    2. 在 OBProxy 配置文件中指定后端 Observer 的实际端口(默认为 2881 或 2882)。
    3. 客户端通过 OBProxy 的新端口访问数据库。
  • 示例 OBProxy 配置:
    [obproxy]
    listen_port = 3306
    ob_cluster = your_ob_cluster_name
    ob_server = 127.0.0.1:2881
    

方案 2:重建集群并恢复数据

  • 如果必须更改 Observer 的端口,建议通过备份恢复的方式重建集群:
    1. 使用 OCP 或 obd 工具对现有集群进行全量备份。
    2. 在新的端口配置下重新部署集群。
    3. 将备份数据恢复到新集群中。
  • 注意事项:
    • 确保备份过程中集群处于稳定状态。
    • 恢复数据时需要验证数据完整性。

方案 3:联系技术支持

  • 如果上述方案均不可行,您可以联系 OceanBase 技术支持团队,获取更专业的指导。技术支持团队可能提供一些内部工具或方法来帮助您完成端口修改。

3. 总结

直接修改 Observer 的 svr_portmysql_port 不被官方支持,可能导致集群异常。推荐使用 OBProxy 转发端口作为临时解决方案,或者通过备份恢复的方式重建集群以实现端口变更。

如果您有更多需求或疑问,请随时补充说明!

更多信息请查看:

  1. ODP 配置管理
  2. 更改归档目的端
  3. 暂停归档
  4. Switchover 或 Failover 相关问题
  5. 系统内存不足/泄漏
  6. 停止备份
  7. 更改备份目的端

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)