【产品名称】
OceanBase社区版
【产品版本】
oceanbase-ce-3.1.2-10000392021123010.el7.x86_64.rpm
【问题描述】
用这个问题来总结一下这两天手工部署OB集群遇到的各种各样的问题,在这里先感谢一下 @和顺 @刘谦 两位社区老师的帮助,一点点指导我找到问题并解决。
其实问题主要都是围绕observer的启动命令来引申出来的,那么首先我就把这个命令贴出来,方便大家参考:
cd ~/oceanbase && bin/observer -i eth0 -p 2881 -P 2882 -z zone1 -d ~/oceanbase/store/obdemo -r ‘172.20.249.52:2882:2881;172.20.249.49:2882:2881;172.20.249.51:2882:2881’ -c 20210912 -n obdemo -o “memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=50G,stack_size=1536K,config_additional_dir=/data/obdemo/etc3;/redo/obdemo/etc2” -d ~/oceanbase/store/obdemo
**问题1:**虚拟机磁盘空间不足问题,导致observer启动失败
解答:
由于我给虚拟机分配了10G的/home目录,40G的/ 目录,根据文档上的操作,oceanbase数据库的数据目录软链接到 /data下;
然后呢,文档给的初始化参数是 datafile_size=50G,所以在启动observer时,会去创建50G的文件,由于空间不够,肯定会失败;
通常我们执行完observer启动命令后,会在后台使用ps或netstat -ntlp来查看是否已经启动,这时如果进行查看,没有任何启动的征兆,那么我们紧接着就要去看一下log下的日志,从log/observer.log中,可以找到形如:data file size is too large 的ERROR日志,此时您就需要考虑是不是这个问题啦,我当时求助的帖子可以参考链接:手工部署 observer初始化报错:data file size is too large - OceanBase - 社区问答- OceanBase社区-分布式数据库
问题2: cpu_count参数过低导致observer启动失败
解答:
cpu_count的设置,大家可以看到上面的标准命令设置的是16,由于我的虚拟机只有2个核心,所以开始我把这个参数设置为2,我的思路是想着不让这个参数超过虚拟机的核心数即可;
没想到初始化一直失败,会一直报:**node quota should greater than 1 **的ERROR,后来社区的专家建议说,这个值可以提高到CPU的3-4倍,于是我设置cpu_count=8,该问题解决,我当时的求助帖子可以参考链接:node quota should greater than 1 - OceanBase - 社区问答- OceanBase社区-分布式数据库
问题3: observer启动后,系统自举失败,报错 ERROR 4015 (HY000): System error
解答:
这个问题最麻烦了,两位社区专家轮番看日志,调查我的环境参数才帮忙解决。
由于上面两个问题都是出现在observer启动阶段,解决后系统就可以启动了,然后我登录到黑屏界面进行系统自举。
此时,执行完命令就会直接报错:ERROR 4015 (HY000): System error。查看后台所有日志,没有任何线索。
最后是社区老师建议我将虚拟机的CPU核心数从2提高到3,才解决了该问题。可以参考我的求助链接:ERROR 4015 (HY000): System error - OceanBase - 社区问答- OceanBase社区-分布式数据库
问题4: ERROR 4005 (HY000): The object is initialized twice 的处理
解答:
我在初始化过程中反复遇到这个问题,有时候第一次操作也会报这个错误,但是大家不要灰心,把数据文件都删掉,然后重新初始化,多次初始化总能解决这个问题,可以参考如下命令清理环境:
kill -9 pidof observer /bin/rm -rf ~/oceanbase/store/obdemo/*/*
大家遇到这个问题一定不要灰心,手工初始化不知道哪里就会报错,多次尝试很正常,如果报这个错误,就马上进行清理工作重新尝试即可,我一共初始化了20多遍才成功,。
问题5: ERROR 1235 (0A000): unit min memory less than __min_full_resource_pool_memory not supported
解答:
这个问题是因为在虚拟机环境中资源不够,我一开始把这个参数去掉了,想让系统自己默认设置,结果就报了该错误,我的虚拟机有12GB的内存;
想解决这个问题就请根据文档上的要求,增加该启动参数即可。
最后的总结:
首先,出了错误大家先到/home/oceanbase/log下面去翻看日志,看看里面的ERROR做了什么提示,通常就能解答大家的问题;问题调查思路可以参考文档:OceanBase 社区
其次,大部分情况下在虚拟机中出现问题都是因为内存、CPU、磁盘的配置不够导致的,OceanBase还是挺吃资源的,大家尽量选用好一点的环境进行测试;
最后,遇到问题的时候,官网问答社区、钉钉群,大家反馈都很及时,我们遇到的问题基本属于初级问题,大家一定要有信心,不能放弃,加油!!!