在巨杉数据库 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,确保一致。