observer一直重启

【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】docker方式安装
/home/admin/oceanbase/bin/observer -V
observer (OceanBase 4.2.1.2)

REVISION: 102020012023121317-f44a647ae7d4ac9a89ef6df7648d7ede725d75f3
BUILD_BRANCH: HEAD
BUILD_TIME: Dec 13 2023 17:15:27
BUILD_FLAGS: RelWithDebInfo
BUILD_INFO:

Copyright (c) 2011-present OceanBase Inc.
【问题描述】之前使用正常,今天obclient -h172.23.2.63 -P2881 -uroot@sys -p登录时报错。
ERROR 2013 (HY000): Lost connection to MySQL server at ‘handshake: reading initial communication packet’, system error: 104容器能启动,observer 一直在重启,且cpu占用异常

【附件及日志】observer.log日志:
ERROR issue_dba_error (ob_log.cpp:1868) [30668][observer][T0][Y0-0000000000000000-0-0] [lt=8][errcode=-4388] Unexpected internal error happen, please checkout the internal errcode(errcode=-4147, file=“ob_server.cpp”, line_no=506, info="[OBSERVER_NOTICE] fail to init observer")
[2026-01-04 18:00:30.897764] EDIAG [SERVER] init (ob_server.cpp:506) [30668][observer][T0][Y0-0000000000000000-0-0] [lt=32][errcode=-4147] [OBSERVER_NOTICE] fail to init observer(ret=-4147, ret=“OB_INVALID_CONFIG”) BACKTRACE:0x125a2565 0x741e8e7 0x741e4b4 0x741e142 0x73fe9fb 0xa7aa36a 0xa79a959 0x73f1874 0x7eff5ebce493 0x563620b
[2026-01-04 18:00:30.897834] ERROR init (ob_server.cpp:507) [30668][observer][T0][Y0-0000000000000000-0-0] [lt=67][errcode=-4393] observer start process failure(msg=“observer init() has failure”, ret=-4147, ret=“OB_INVALID_CONFIG”)
[2026-01-04 18:00:30.897878] ERROR issue_dba_error (ob_log.cpp:1868) [30668][observer][T0][Y0-0000000000000000-0-0] [lt=40][errcode=-4388] Unexpected internal error happen, please checkout the internal errcode(errcode=-4147, file=“main.cpp”, line_no=582, info=“observer init fail”)
[2026-01-04 18:00:30.897900] EDIAG [SERVER] main (main.cpp:582) [30668][observer][T0][Y0-0000000000000000-0-0] [lt=20][errcode=-4147] observer init fail(ret=-4147) BACKTRACE:0x125a2565 0x73f8379 0x5549724 0x73f80e4 0x73f0381 0x73f29bd 0x73f1bc1 0x7eff5ebce493 0x563620b

1 个赞

docker有做ip绑定么。4147是无效配置参数问题。

有,并且之前是能正常登录的。
以下是环境变量配置(ip有作处理)
CONTAINER_CPU=32
LANG=en_US.UTF-8
HOSTNAME=ob-srv3
OBCLUSTER_ID=100000
S_COLORS=auto
which_declare=declare -f
PWD=/home/admin/log
IDC_ROOM=idc1
HOME=/root
TERM=xterm
OBCLUSTER_SYS_PASS=JrZYTO
DATAFILE_SIZE=100G
REGION=region1
CONTAINER_MEM=60G
SHLVL=1
LOCAL_IP=172.XX.XX.XX
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SYSTEM_MEMORY=54G
OBCLUSTER_NAME=obcluster
NIC_NAME=eth0
OBCLUSTER_IP_LIST=172.XX.XX.XX
LESSOPEN=||/usr/bin/lesspipe.sh %s
BASH_FUNC_which%%=() { ( alias;
eval ${which_declare} ) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot “$@”
}
_=/usr/bin/env
OLDPWD=/home/admin

observer.log (138.3 KB)
完整observer.log日志

有多个地方有observer.log 这是/home/admin/oceanbase/log/observer.log
observer.log (1.1 MB)

上面是/home/admin/log/observer.log

顶一顶,有官方大佬帮忙看看吗

invalid cluster id
非法集群id报错,而且observer.log 日志位置不一致说明不是一套集群。建议先提供一份ob的配置参数看看

ob配置参数怎么看呢?我看AI是说用sql看。SHOW PARAMETERS;
但是我现在连不上。obclient -h 127.0.0.1 -P 2881 -u root@sys -p 用配置里的密码连接也不行。
另外,容器是直接用这个脚本启的
cat run_ob.sh
docker run -d --name observer2
–user root
–cpu-period 100000
–cpu-quota 200000
–net=host
–memory 60G
–memory-swap 16G
-e CONTAINER_CPU=32
-e CONTAINER_MEM=60G
-e SYSTEM_MEMORY=56G
-e DATAFILE_SIZE=100G
-e LOCAL_IP=172.28.8.13
-e NIC_NAME=eth0
-e OBCLUSTER_IP_LIST=172.28.8.13
-e IDC_ROOM=idc1
-e REGION=region1
-e OBCLUSTER_ID=100000
-e OBCLUSTER_NAME=obcluster
-e OBCLUSTER_SYS_PASS=i!*18h8vJrZYTO
-v /data/1:/data/1
-v /data/log1:/data/log1
-v /home/admin/oceanbase:/home/admin/oceanbase
-v /home/admin/logs/obproxy:/home/admin/logs/obproxy
-v /home/admin/logs/supervisor:/home/admin/logs/supervisor
-p 2881:2881
-p 2882:2882
reg.docker.alibaba-inc.com/antman/oceanbase:4.2.1.2-102020012023121317_x86_64_20231214

你是否每次启动docker都是上面的参数执行一遍。
看着像是创建了多个observer

没有。后面都是直接重启docker容器。这个如果修复不了的话,数据有办法恢复吗? 这个虽然是测试环境,但是用了挺久,数据还是有点重要的

找到observer的bin目录
手动拉起一下ob试试 ./observer

没任何反应

bserver.log 日志路径是无法修改的,位置不一致说明你docker里面不止一台observer。
ps -ef|grep observer看下

目前是只有一个进程。


报invalid cluster id,非法集群id报错那个日志,位置是不对的。我想起来了他可能是因为我在容器中,手动执行了start_ob.sh脚本导致的。

当前存在observer进程 不能登陆么?
obclient登陆试一下看看。这个日志提供一份看看

observer进程一直重启中。



observer.log (2.5 MB)
obproxy.log (39.0 MB)

error:104 应该是不可用ob。这边不清楚docker做过什么配置导致报错的集群id非法参数。
而且docker部署的ob本来就无法确保其可长期运行。