SQL问题

    关于数据副本管理相关的命令,可以参阅 。

    Q2. show backends/frontends 查看到的信息不完整

    在执行如show backends/frontends 等某些语句后,结果中可能会发现有部分列内容不全。比如show backends结果中看不到磁盘容量信息等。

    通常这个问题会出现在集群有多个FE的情况下,如果用户连接到非Master FE节点执行这些语句,就会看到不完整的信息。这是因为,部分信息仅存在于Master FE节点。比如BE的磁盘使用量信息等。所以只有在直连Master FE后,才能获得完整信息。

    当然,用户也可以在执行这些语句前,先执行 这个会话变量设置为true后,后续执行的一些信息查看类语句会自动转发到Master FE获取结果。这样,不论用户连接的是哪个FE,都可以获取到完整结果了。

    Doris的 Master FE 节点会主动发送心跳给各个FE或BE节点,并且在心跳信息中会携带一个cluster_id。cluster_id是在一个集群初始化时,由Master FE生成的唯一集群标识。当FE或BE第一次收到心跳信息后,则会将cluster_id以文件的形式保存在本地。FE的该文件在元数据目录的image/目录下,BE则在所有数据目录下都有一个cluster_id文件。之后,每次节点收到心跳后,都会用本地cluster_id的内容和心跳中的内容作比对,如果不一致,则拒绝响应心跳。

    该机制是一个节点认证机制,以防止接收到集群外的节点发送来的错误的心跳信息。

    如果需要恢复这个错误。首先要先确认所有节点是否都是正确的集群中的节点。之后,对于FE节点,可以尝试修改元数据目录下的 image/VERSION 文件中的 cluster_id 值后重启FE。对于BE节点,则可以删除所有数据目录下的 cluster_id 文件后重启 BE。

    Q4. Unique Key 模型查询结果不一致

    某些情况下,当用户使用相同的 SQL 查询一个 Unique Key 模型的表时,可能会出现多次查询结果不一致的现象。并且查询结果总在 2-3 种之间变化。

    比如表定义为 k1, v1。一批次导入数据如下:

    那么可能副本1 的结果是 1, "abc",而副本2 的结果是 1, "def"。从而导致查询结果不一致。

    为了确保不同副本之间的数据先后顺序唯一,可以参考 功能。

    在 1.1.x 版本中,在开启向量化的情况下,执行查询数据表中 bitmp 类型字段返回结果为 NULL 的情况下,

    1. 首先你要 set return_object_data_as_binary=true;
    2. 关闭 SQL 缓存 set [global] enable_sql_cache = false;

    Q6. 访问对象存储时报错:curl 77: Problem with the SSL CA cert

    如果 be.INFO 日志中出现 curl 77: Problem with the SSL CA cert 错误。可以尝试通过以下方式解决:

    1. https://curl.se/docs/caextract.html 下载证书:cacert.pem
    2. 拷贝证书到指定位置:sudo cp /tmp/cacert.pem /etc/ssl/certs/ca-certificates.crt