运维干货 | OCP备库异常崩溃后,如何从0到1重新安装并修复主备关系(含8步截图+SQL脚本)

各位OceanBase运维同仁,备OCP异常是生产环境常见故障——漏洞扫描强制升级Docker、磁盘写满、证书过期,都可能导致备OCP直接“躺平”。

今天我整理了一份完整的备OCP重装与主备关系修复指南 ,全程基于真实故障复盘,每一步都有操作要点+避坑提示 ,新人也能照着做完。

一、什么场景需要这套流程?

  • 漏洞扫描 :安全团队要求升级Docker版本,升级失败容器起不来
  • 磁盘写满 :备OCP所在节点日志积压,容器无法写入
  • 证书过期 :HTTPS证书未续期,备OCP直接拒绝服务

核心原则 :不要在主OCP上乱删配置,严格按照“先卸载、再清元数据、后重建”的顺序。

二、完整操作步骤(共8步)

第一步:卸载异常备OCP

登录OAT,找到异常的备OCP实例,点击 “卸载”
:warning: 注意 :卸载时不要勾选 “删除数据目录”,避免后续无法找回配置信息。

第二步:清除主OCP中的备OCP元数据

主OCP → 系统管理 → OCP多集群模式 → 找到已卸载的备OCP记录 → 点击删除
这一步很多人漏掉,导致重建时提示“集群名已存在”。

第三步:OAT重新安装OCP

  1. 点击右上角 “安装产品”“安装OCP”
  2. 填写基本信息:
  • OCP版本:选择与主OCP一致的版本
  • 产品名称、密码、安装服务器IP
  1. 关键配置 :打开“多集群模式”,角色选 “备集群” ,填写OCP集群名称(建议与旧集群一致)
  2. MetaDB租户配置:按业务需求填写即可

第四步:等待任务暂停,完成MetaDB接管

安装任务会执行到 “takeover_metadb” 步骤自动暂停
此时浏览器访问 http://备OCP_IP:8080 ,填写主OCP的Meta租户root用户连接串 ,点击确认。

第五步:添加备OCP上的所有主机

备OCP页面 → 主机添加主机
逐台填写备OCP所在集群的服务器IP、SSH端口、密码,等待添加成功。

第六步:接管之前的OB集群

备OCP页面 → 集群接管集群
填写待接管集群的sys租户连接串 (含用户名、密码、tenant=sys),点击提交。

第七步:【核心】修复主OCP元数据,恢复主备租户拓扑关系

这是全网目前最完整的解决方案
备OCP重建后,主OCP的元数据表里不会自动建立主备租户的关联关系 ,导致拓扑图无法显示、切换指令可能失败。

登录主OCP的meta租户,进入ocp库,执行以下SQL:

sql

UPDATE mc_ob_tenant t1 JOIN mc_ob_tenant t2 ON t1.tenant_name = t2.tenant_name SET t1.primary_tenant_id = t2.tenant_id, t1.log_transport_mode = ‘LOG_BACKUP’, t1.primary_tenant_ocp_cluster_id = t2.ocp_cluster_id WHERE t1.cluster_name = ‘obcluster3’ – 替换为备租户所在集群名 AND t2.cluster_name = ‘obcluster2’ – 替换为主租户所在集群名 AND t1.role = ‘STANDBY’;

执行前必做

  • SELECT * 验证数据范围是否正确
  • 务必在主OCP的meta租户执行,不是在备OCP

第八步:接管OBProxy

备OCP页面 → OBProxy管理 → 接管现有OBProxy实例,确保备OCP能正常管控代理服务。

三、验证结果

  1. 备OCP页面可正常打开,无报错
  2. 接管的OB集群状态为“运行中”
  3. 最关键 :进入租户详情页,主备关系拓扑图恢复正常显示
  4. 尝试在主租户建表,备租户延迟同步正常

四、避坑总结

坑点 后果 解决方案
卸载时勾选删除数据目录 元数据彻底丢失,只能全量重搭 卸载时只卸容器,不删数据
重建时换了集群名 主备识别异常,租户接管失败 集群名必须与原来一致
漏掉第7步SQL 拓扑图空白,切换指令可能失效 必须手动修复元数据

备OCP重装并不复杂,但细节极易踩坑。以上流程已在多个生产环境验证,欢迎收藏备用。

如果你在操作中遇到其他报错,欢迎评论区贴图,我帮你一起看日志。

【标签】 #OCP #运维实战 #高可用 #故障恢复

3 个赞

感谢回答

非常优秀