这周出了一单生产问题,测试环境系统正常运行,但是上线生产之后,系统无数据返回
看了生产日志初步定位到是图谱结果没返回
执行图谱查询语句报错
Permission Deny ……
执行查询的nebula用户无权限
发掘问题出现原因
我们更新图谱使用了drop语句,走的是全量删除再新增同命名空间
相关语句:
DROP SPACE IF EXISTS abc;
注意
DROP SPACE IF EXISTS abc;这个命令用于删除一个图空间(space),包括图空间中的所有数据、Schema 信息(如点类型、边类型等)。
如果指定的图空间存在,则删除它;如果不存在,则不做任何操作,并且会返回一个成功的消息。
正确全量更新应该使用
CLEAR SPACE abc;
注意
CLEAR SPACE 操作会删除图空间中的点(vertices)和边(edges),但不会删除图空间本身以及 Schema 信息,如 Tag 和 Edge type 信息等
本次问题出现原因
DROP SPACE 会把相关联的用户权限一并删除,因此平时必须维护好nebula用户与权限的关系,平时只发生数据迭代的时候,尽量使用CLEAR SPACE,若需要进行结构设计上的迭代,应该使用DROP SPACE,但是注意用户权限必须得重新赋权