运维
本主题提供了一些与运维相关问题的解答。
可以清理 trash 目录吗?
您可以配置 FE 参数 catalog_trash_expire_second 来指定文件在 FE trash 目录中保留的时间(默认:24 小时)。
BE 参数 trash_file_expire_time_sec 控制 BE 垃圾清理间隔(默认:24 小时)。
在执行 DROP TABLE 或 DROP DATABASE 后,数据首先进入 FE 垃圾箱并保留一天,在此期间可以通过 RECOVER 恢复。之后,它会移动到 BE 垃圾箱,也会保留 24 小时。
tablet 是否有主从关系?如果一些副本丢失,会对查询产生什么影响?
如果表属性 replicated_storage 设置为 true,写入使用主从机制:数据首先写入主副本,然后同步到其他副本。多个副本通常对查询性能没有重大影响。
可以通过监控界面测量任务的 CPU 和内存使用情况吗?
您可以查看 fe.audit.log 中的 cpucostns 和 memcostbytes 字段。
在更新表上创建物化视图时返回错误 "The aggregation type of column[now_time] must be same as the aggregate type of base column in aggregate table"。更新表支持物化视图吗?
该错误表明物化视图的聚合类型必须与基表的聚合类型匹配。对于更新表,您只能通过物化视图来调整它们的排序键顺序。
例如,如果基表 tableA 有列 k1、k2、k3,其中 k1 和 k2 为排序键。当您的查询包含 WHERE k3=x 子句并需要加速前缀索引时,您可以创建一个以 k3 为第一列的物化视图:
CREATE MATERIALIZED VIEW k3_as_key AS
SELECT k3, k2, k1
FROM tableA;
如何获取具有精确时间戳的导入量指标?query_latency 是平均响应时间的指标吗?
表级导入指标可以从以下地址获取:http://user:password@fe_host:http_port/metrics?type=json&with_table_metrics=all。
集群级数据可以从以下地址获取:http://fe_host:http_port/api/show_data(增量必须手动计算)。
query_latency 提供百分位查询响应时间。
SHOW PROC '/backends' 和 SHOW BACKENDS 有什么区别?
SHOW PROC '/backends' 从当前 FE 检索元数据,可能会有延迟。而 SHOW BACKENDS 从 Leader FE 检索元数据,是权威的。
StarRocks 有超时机制吗?为什么一些客户端连接会持续很长时间?
有。您可以配置系统变量 wait_timeout(默认:8 小时)来调整连接超时。
示例:
SET GLOBAL wait_timeout = 3600;
可以在一个语句中授权多个表吗?
不可以。不支持类似 GRANT <priv> on db1.tb1, db1.tb2 的语句。
当授予了 ALL TABLES 权限时,可以撤销特定表的权限吗?
不支持子集撤销。建议在数据库或表级别授予权限。
StarRocks 支持表级和行级权限吗?
支持表级访问控制。开源版不支持行级和列级访问控制。
如果主键表没有分区,冷热数据分离仍然有效吗?
不。冷热分离基于分区。
如果数据错误地放置在根目录,可以更改数据存储路径吗?
可以。更新 be.conf 中的 storage_root_path 以添加新磁盘,并使用分号分隔路径。
如何检查 FE 的 StarRocks 版本?
运行 SHOW FRONTENDS; 并检查 Version 字段。
StarRocks 支持带有嵌套子查询的 DELETE 吗?
从 v2.3 开始,主键表支持完整的 DELETE WHERE 语法。 详情请参见 Reference - DELETE。
对于动态分区,如果不希望旧分区自动清理,可以简单省略 dynamic_partition.start 吗?
不可以。需要将其 设置为一个非常大的值。
如果 BE 机器内存故障需要维护,该怎么办?
Decommission 该 BE。修复后,将其重新添加到集群。
可以强制所有未来的分区默认使用 SSD 吗?
不可以。默认是 HDD。需要手动配置。
添加新 BEs 后,tablets 自动重新平衡。可以立即退役旧 BEs 吗?
可以。无需等待重新平衡完成。最多可以同时退役两个节点。
添加新 BEs 和移除旧 BEs 会影响性能吗?
重新平衡是自动进行的,不应影响正常操作。建议一次移除一个节点。
如何用六个新节点替换六个 BE 节点?
添加六个新的 BE 节点,然后逐个退役旧节点。
为什么在退役节点后不健康的 tablet 数量没有减少?
检查单副本表。如果它们不断重试,其他修复可能会被阻止。
这个 BE 日志是什么意思?"tcmalloc: large alloc xxxxxxxx bytes"
发生了大内存分配请求,通常由大查询引起。检查 be.INFO 中的相应 query_id 以定位 SQL。
添加节点后,tablet 迁移会导致磁盘 I/O 波动吗?
是的,在平衡期间会出现临时的 I/O 波动。
云部署的数据迁移推荐方法是什么?
- 要迁移单个表,您可以:
- 创建一个 StarRocks external table,然后使用 INSERT INTO SELECT 从中导入数据。
- 使用基于 Spark-connector 的程序从源 BE 读取数据,并使用封装的 STREAM LOAD 将数据导入到目标 BE。
- 要迁移多个表,您可以使用备份和恢复。首先,将数据从源集群备份到远端存储。然后,从远端存储恢复数据到目标集群。
- 如果您的集群使用 HDFS 作为远端存储,您可以先使用
distcp迁移数据文件,然后使用 Broker Load 将数据导入到目标集群。