ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

OceanBase 运维高频 6 坑:登录、上下线、容错、Leader、误删恢复

OceanBase 运维高频 6 坑:登录、上下线、容错、Leader、误删恢复 「 做 OceanBase 运维分布式那套和单机 Oracle/MySQL 差别真不小。hint 不生效、节点下线盯错字段、误删表找不回——这篇把最容易被坑的 6 个场景拆开讲命令都能直接复制建议先收一份。 」一、客户端必须加 -c否则 hint 到不了服务端▲ 架构图端口分层 STOP SERVER 逻辑 容错上限对照正文OB 走 OBProxy 路由很多命令要靠 hint如/* route_to(...) */定向。但 MySQL/OBClient 客户端默认会剥离 SQL 注释含 hint不加-chint 根本到不了服务端。场景命令正确登录保留 hintobclient -c -h 127.0.0.1 -P 2883 -u rootsys -p仅加速登录不关 hintobclient -A -h 127.0.0.1 -P 2883 -u rootsys -p坑点-c让客户端保留注释不加它hint含路由 hint到不了服务端。-A只是跳过表预读加速登录和 hint 保留没关系别把俩搞混。「 这点也是 OBCP 考试常考分布式路由是 OB 和单机库最大的区别之一。 」二、节点下线看 stop_time不是 STATUS做运维最容易盯错的地方。STOP SERVER是摘流量 迁主进程还在不是把节点干掉。场景命令下线节点用 RPC 口 2882ALTER SYSTEM STOP SERVER 10.0.0.1:2882;恢复节点ALTER SYSTEM START SERVER 10.0.0.1:2882;看逻辑停止标志SELECT stop_time FROM DBA_OB_SERVERS;坑点判断节点是否逻辑停止看DBA_OB_SERVERS.stop_time 0不是 STATUSINACTIVE。STATUS在 STOP 期间一直保持ACTIVE进程还在变的是stop_time从 0 变非 0START SERVER再清零。有人盯着STATUSINACTIVE等半天——那是KILL SERVER永久下线才出现的状态。另外注意端口是RPC 口 2882不是 SQL 口 2881 / 代理口 2883。三、查磁盘别找 DATA_DISK_PERCENT自己算想看数据盘占用别照着某些文章查DATA_DISK_PERCENT场景命令查磁盘占用SELECT svr_ip, DATA_DISK_IN_USE, DATA_DISK_CAPACITY, DATA_DISK_IN_USE/DATA_DISK_CAPACITY AS pct FROM GV$OB_SERVERS;坑点GV$OB_SERVERS根本没有现成的 DATA_DISK_PERCENT 列照搬会报 unknown column。用DATA_DISK_IN_USE / DATA_DISK_CAPACITY自己算百分比就成。四、容错上限最多容忍 ⌊(n-1)/2⌋ 副本故障多副本靠 Paxos 多数派。能容忍的故障副本数是固定的部署副本数 n最多故障超过后果三副本31不可写五副本52不可写坑点记住是「最多故障 ⌊(n-1)/2⌋ 副本」不是「丢这么多还能写」。超过这个数集群不可写读多数情况还能撑。规划副本数时按这个上限倒推。五、Leader 均衡靠 PRIMARY_ZONE迁 Leader 用 SWITCH REPLICA LEADER日常 Leader 分布靠PRIMARY_ZONE 内置负载均衡策略一般不用手动干预。真要手动迁 Leader场景命令手动迁 LeaderALTER SYSTEM SWITCH REPLICA LEADER LSls_id SERVER10.0.0.1:2882 TENANTtenant_name;坑点不要用 STOP SERVER 去迁 Leader。STOP SERVER是停机维护命令副作用太大摘流量 迁主 标记停止。迁 Leader 就用SWITCH REPLICA LEADER或者调PRIMARY_ZONE。六、误删恢复DROP 进回收站 flashback误删行用闪回查询两种情况不一样别用错场景命令找回被 DROP 的表需回收站开FLASHBACK TABLE t1 TO BEFORE DROP;找回误删的行时间点查询SELECT * FROM t1 AS OF TIMESTAMP TO_TIMESTAMP(2026-09-04 10:00:00,YYYY-MM-DD HH24:MI:SS);看回收站是否开启SHOW PARAMETERS LIKE recyclebin;坑点 1OB 的FLASHBACK TABLE只支持 TO BEFORE DROP没有 Oracle 那种TO TIMESTAMP表级闪回语法照搬会直接报语法错。坑点 2FLASHBACK ... TO BEFORE DROP前必须确认recyclebinON否则表根本没进回收站。坑点 3误删的是「行」不是「表」别去 flashback 表直接用闪回查询AS OF TIMESTAMP把数据捞出来重插。「 顺带一句要杀会话用ALTER SYSTEM KILL SESSION session_id;session_id 直接来自SHOW PROCESSLIST别自造ip:port:tenant_id:session_id那种格式。 」▲ 一图速查核心命令汇总建议收藏小结OceanBase 运维记住几条登录加 -c 保 hint下线看 stop_time0 而非 STATUS磁盘自算百分比容错上限 ⌊(n-1)/2⌋迁 Leader 用 SWITCH REPLICA LEADER误删表 flashback、误删行闪回查询。命令都在上表出问题照着敲基本能救。想系统把 OceanBase 吃透官方文档配合认证体系如 OBCA / OBCP走一遍体系会比零散搜博客稳很多。先收藏省得真出事现找。
返回列表