KingbaseES V8R6集群部署案例之---‘initdb: error: cannot be run as root’故障
案例说明:
在通用机环境下,通过脚本部署集群,出现“initdb: error: cannot be run as root”故障。
适用版本:
KingbaseES V8R6
一、问题现象
通用机环境,通过脚本部署集群,出现以下故障:在对主库执行initdb初始化实例时,是root用户执行,而不是默认的kingbase用户:
二、问题分析
1、查看install.conf用户配置
如下所示,配置文件中用户配置正确:(数据库通过execute_user用户执行initdb)
[kingbase@node101 r6_install]$ cat install.conf|grep _user
db_user="system" # the user name of database
super_user="root"
execute_user="kingbase"
2、执行sh -x cluster_install.sh查看执行过程
如下图所示,在执行主库的实例初始化时,调用root用户来执行,导致initdb执行失败:(默认通用机环境initdb应该是由kingbase用户执行。)
3、查看部署脚本
如下图所示, 如果是bmj环境数据库用户‘execute_user="root":
在通过securecmdd工具远程连接节点时,指定用户连接:
主库执行initdb时,通过securecmdd工具连接节点后,execute_user执行操作:(bmj环境为root,通用机环境为kingbase)
如下图所示,通用机环境下kingbase用户执行initdb:
从以上脚本执行逻辑可以获知,如果是通用机环境执行initdb操作应该是kingbase用户,如果调用了root用户执行,应该是脚本误判此环境是bmj环境了。
4、查看install.conf配置
如下所示,此配置文件将参数on_bmj配置为’1‘,导致脚本判断此为bmj环境,使用root用户执行initdb,从而部署失败:
[kingbase@node101 r6_install]$ cat install.conf|grep -i on_bmj
## whether it is BMJ, if so, on_bmj=1, if not on_bmj=0, defaults to on_bmj=0
on_bmj=1
三、问题解决
配置install.conf中on_bmj=0,重新部署成功。
[kingbase@node101 r6_install]$ cat install.conf|grep -i on_bmj
## whether it is BMJ, if so, on_bmj=1, if not on_bmj=0, defaults to on_bmj=0
on_bmj=0
四、总结
此次案例,是因为在通用机环境部署,误配置on_bmj=1,导致脚本按照bmj环境的逻辑部署,从而部署失败;在脚本部署前,注意install.conf参数配置的检查。