Chen Wei
发布于

因为zsh环境变量配置文件加载可能导致的OushuDB初始化失败问题

大家好,

我想分享一下昨天我在 MAC 上初始化 OushuDB 集群时运到的问题。

问题描述:根据教程的指示,成功在 MAC 上安装 OushuDB 后,准备启动 OushuDB 时,我在 iTerm2(版本号为 3.4.12)上面运行了如下命令:

- $ hawq init cluster -a

在数据库初始化过程中,会出现 master init 成功,但是 segment init 失败的问题。错误信息示例如下(省去了一些无关的信息):
...
20211125:16:21:48:025906 hawq_init:oushudeMacBook-Pro:chenwei-[INFO]:-Master init successfully
20211125:16:21:48:025906 hawq_init:oushudeMacBook-Pro:chenwei-[INFO]:-VCluster init successfully
20211125:16:21:48:025906 hawq_init:oushudeMacBook-Pro:chenwei-[INFO]:-Init segments in list: ['localhost']
20211125:16:21:49:025906 hawq_init:oushudeMacBook-Pro:chenwei-[INFO]:-Total segment number is: 1
.20211125:16:21:49:025906 hawq_init:oushudeMacBook-Pro:chenwei-[INFO]:-20211125:16:21:49:026288 hawqinit.sh:oushudeMacBook-Pro:chenwei-[ERROR]:-Postgres initdb failed
20211125:16:21:49:026288 hawqinit.sh:oushudeMacBook-Pro:chenwei-[ERROR]:-Segment init failed on oushudeMacBook-Pro.local
20211125:16:21:49:025906 hawq_init:oushudeMacBook-Pro:chenwei-[ERROR]:-HAWQ init failed on localhost
.
20211125:16:21:51:025906 hawq_init:oushudeMacBook-Pro:chenwei-[INFO]:-init 0 of 1 segments
20211125:16:21:51:025906 hawq_init:oushudeMacBook-Pro:chenwei-[ERROR]:-Segments init failed, exit

但如果在 iTerm2 里面,单独输入以下命令:

- hawq init master
- hawq init segment

两个命令都能成功运行。

经过同事 Shenxiaolong 和 Yanjunfeng 的帮助,我们最后终于发现了产生错误的原因:在运行 hawq init cluster -a 的时候,会使用 SSH 命令登录到本机,然后进行初始化。由于在脚本里使用了 SSH 登录,zsh 启动时加载的配置文件,与我手动打开 iTerm2 时加载的配置文件不一样。具体加载配置文件的区别可以参考这篇文章

解决方法很简单,就是想办法在脚本里用 SSH 登录本机的时候,也能够加载所有需要的环境变量。我采用的方式是编辑~/.zshenv,在里面加载所有 OushuDB 安装所需要的环境变量。更改后重新打开 iTerm2,问题解决!(也可以用别的办法,只要保证脚本 SSH 的时候可以加载所有需要的环境变量即可)。

评论(1)
test