SequoiaDB 5.0.1 执行createCL报错uncaught exception: -104 Node is not primary

在巨杉数据库 SequoiaDB 5.0.1执行createCL时,发生报错(shell):1 uncaught exception: -104 Node is not primary。经过排查发现,第2个数据节点的主机名DNS没有配置正确,没有添加第1个数据节点的解析,修正后故障消失。

报错样例

> db.emp.createCL("employees")
(shell):1 uncaught exception: -104
Node is not primary
Take

排查

检查第2个数据节点,发现其/etc/hosts里只有本机的解析

bash-4.2$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.2.115 gbase_rh7_015
bash-4.2$ 

修改添加了第1个节点的解析。

[root@localhost sdbadmin]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.2.101 gbase_rh7_001
10.0.2.115 gbase_rh7_015
[root@localhost sdbadmin]#

再次执行,故障消失

[sdbadmin@gbase_rh7_001 ~]$ sdb
Welcome to SequoiaDB shell!
help() for help, Ctrl+c or quit to exit
> var db=new Sdb()
Takes 0.006206s.
> db.emp.createCL("employees")
localhost:11810.emp.employees
Takes 0.316113s.
>

总结

巨杉数据库SequoiaDB 5,要求所有节点必须设置主机名,并做DNS解析。简单的可以将所有的IP和主机名映射,复制到所有节点/etc/hosts,确保一致。

参考