运维管理13 分钟阅读
Apache Doris 运维命令 100 条
Apache Doris 是一款面向实时分析场景的 MPP 数据库。它由 FE、BE 等组件组成,数据按照分区、分桶、Tablet 和 Replica 分布在不同节点上。Doris 出现问题时,不能只看一条 SQL 是否走索引,还要检查 FE 元数据、BE 存活状态、Tablet 副本、Compaction、导入任务和磁盘容量。
2026年8月3日阅读—点赞—收藏—
dba100apache墨力计划apache doris
在知识库中专注阅读,并随时返回相关工具与课程
Apache Doris 是一款面向实时分析场景的 MPP 数据库。它由 FE、BE 等组件组成,数据按照分区、分桶、Tablet 和 Replica 分布在不同节点上。Doris 出现问题时,不能只看一条 SQL 是否走索引,还要检查 FE 元数据、BE 存活状态、Tablet 副本、Compaction、导入任务和磁盘容量。
Apache Doris 是一款面向实时分析场景的 MPP 数据库。它由 FE、BE 等组件组成,数据按照分区、分桶、Tablet 和 Replica 分布在不同节点上。Doris 出现问题时,不能只看一条 SQL 是否走索引,还要检查 FE 元数据、BE 存活状态、Tablet 副本、Compaction、导入任务和磁盘容量。
下面整理了 Apache Doris DBA 日常使用频率较高的 100 条命令,覆盖连接、集群节点、数据库对象、分区分桶、Tablet、副本、会话、SQL 性能、数据导入、Compaction、用户权限、备份恢复和服务日志等场景。
本文主要面向当前主流 Apache Doris 版本。不同版本的系统表、HTTP API 和命令参数可能存在差异,执行前应先确认版本和账号权限。文中的 IP、端口、数据库、表、用户和目录均为示例。
涉及节点下线、终止查询、取消任务、删除分区、触发 Compaction、恢复备份和修改配置等操作时,应先确认影响范围。
1mysql -h 192.168.1.10 -P 9030 -u root -p9030 是 FE 默认 MySQL 协议端口,实际端口以 fe.conf 为准。
1SELECT VERSION();1SELECT DATABASE();1SELECT CURRENT_USER();1SELECT2 NOW(),3 CURRENT_TIMESTAMP();1SHOW FRONTENDS;重点关注 Role、IsMaster、Alive、ReplayedJournalId 和 LastHeartbeat。
1SHOW BACKENDS;重点关注 Alive、SystemDecommissioned、TabletNum、磁盘使用率和心跳时间。
1SHOW BROKER;只有使用 Broker Load 或相关外部存储功能时才会配置 Broker。
1SHOW FRONTEND CONFIG;1SHOW BACKEND CONFIG;1SHOW DATABASES;1CREATE DATABASE appdb;1USE appdb;1SHOW TABLES FROM appdb;1DESC appdb.orders;1SHOW CREATE TABLE appdb.orders;1SHOW TABLE STATUS FROM appdb;1SHOW FULL TABLES FROM appdb2WHERE Table_type = 'VIEW';1SHOW MATERIALIZED VIEWS FROM appdb;1DROP TABLE appdb.orders_old;删除前应确认回收站保留策略和备份状态。
1CREATE TABLE appdb.events2(3 event_date DATE,4 user_id BIGINT,5 event_type VARCHAR(50),6 event_time DATETIME7)8DUPLICATE KEY(event_date, user_id)9PARTITION BY RANGE(event_date)()10DISTRIBUTED BY HASH(user_id) BUCKETS 1611PROPERTIES("replication_num" = "3");1CREATE TABLE appdb.users2(3 user_id BIGINT,4 user_name VARCHAR(100),5 update_time DATETIME6)7UNIQUE KEY(user_id)8DISTRIBUTED BY HASH(user_id) BUCKETS 169PROPERTIES("replication_num" = "3");1CREATE TABLE appdb.sales_summary2(3 sale_date DATE,4 region_id INT,5 amount_sum DECIMAL(18,2) SUM6)7AGGREGATE KEY(sale_date, region_id)8DISTRIBUTED BY HASH(region_id) BUCKETS 169PROPERTIES("replication_num" = "3");1SHOW PARTITIONS FROM appdb.events;1ALTER TABLE appdb.events2ADD PARTITION p2026073VALUES [('2026-07-01'), ('2026-08-01'))4DISTRIBUTED BY HASH(user_id) BUCKETS 16;1ALTER TABLE appdb.events2DROP PARTITION p202601;删除分区会删除其中的数据,应先确认数据保留要求。
1SHOW DYNAMIC PARTITION TABLES FROM appdb;1ALTER TABLE appdb.events2MODIFY PARTITION p2026073SET ("replication_num" = "3");1SHOW DATA FROM appdb.events;1SHOW DATA FROM appdb;1SHOW TABLETS FROM appdb.events;1SHOW TABLET 10001;1SHOW PROC '/dbs';先逐层查看数据库、表、分区和索引 ID,再进入 Tablet 路径。
1SHOW PROC '/backends';1SHOW PROC '/frontends';1SHOW PROC '/cluster_balance';具体 PROC 路径可能随版本变化,可从 SHOW PROC '/' 逐层查看。
1SHOW PROC '/statistic';重点关注不健康 Tablet 和副本统计。
1ADMIN SHOW REPLICA STATUS2FROM appdb.events;1ADMIN SET REPLICA STATUS2PROPERTIES3(4 "tablet_id" = "10001",5 "backend_id" = "10002",6 "status" = "bad"7);该操作风险较高,只应在明确副本异常并按官方恢复流程处理时执行。
1SHOW TABLET FROM appdb.events;不同版本可能推荐使用 SHOW TABLETS,应以当前版本帮助为准。
1SHOW PROCESSLIST;1SHOW FULL PROCESSLIST;1KILL CONNECTION 12345;1KILL QUERY 12345;1EXPLAIN2SELECT *3FROM appdb.events4WHERE event_date = '2026-07-27';1EXPLAIN VERBOSE2SELECT *3FROM appdb.events4WHERE event_date = '2026-07-27';1SHOW QUERY PROFILE '/';根据返回的 Query ID 继续查看指定 Profile。
1SHOW QUERY PROFILE '/query_id';Profile 语法和启用方式可能随版本变化,应结合当前版本文档。
1SELECT *2FROM information_schema.active_queries3ORDER BY query_start_time DESC;系统表是否存在以及字段名称取决于版本。
1SHOW VARIABLES;1curl --location-trusted \2 -u loader:password \3 -H "label:orders_20260727" \4 -H "column_separator:," \5 -T orders.csv \6 http://fe-host:8030/api/appdb/orders/_stream_load生产环境不要在文章或脚本中保留真实密码。
1SHOW LOAD FROM appdb;1SHOW LOAD FROM appdb2WHERE LABEL = 'orders_20260727';1CANCEL LOAD2FROM appdb3WHERE LABEL = 'orders_20260727';1CREATE ROUTINE LOAD appdb.kafka_orders2ON orders3COLUMNS TERMINATED BY ","4PROPERTIES5(6 "desired_concurrent_number" = "3",7 "max_batch_interval" = "10"8)9FROM KAFKA10(11 "kafka_broker_list" = "kafka1:9092,kafka2:9092",12 "kafka_topic" = "orders"13);1SHOW ROUTINE LOAD FOR appdb.kafka_orders;1PAUSE ROUTINE LOAD2FOR appdb.kafka_orders;1RESUME ROUTINE LOAD2FOR appdb.kafka_orders;1STOP ROUTINE LOAD2FOR appdb.kafka_orders;停止后不能直接恢复,需要重新创建任务。
1SHOW EXPORT FROM appdb;1SHOW TRANSACTION FROM appdb;1curl -sS \2 'http://be-host:8040/api/compaction/show?tablet_id=10001'1curl -X POST \2 'http://be-host:8040/api/compaction/run?tablet_id=10001&compact_type=cumulative'1curl -X POST \2 'http://be-host:8040/api/compaction/run?tablet_id=10001&compact_type=base'手工 Compaction 会消耗 I/O 和 CPU,不应作为日常定时操作。
1SHOW BACKEND CONFIG2LIKE '%compaction%';1SHOW TABLE STATS appdb.orders;1ANALYZE TABLE appdb.orders;1SHOW ANALYZE;1SHOW COLUMN STATS appdb.orders;1SET query_timeout = 300;1ADMIN SET FRONTEND CONFIG2("dynamic_partition_enable" = "true");只有 SHOW FRONTEND CONFIG 中 IsMutable=true 的参数才能动态修改。
1ADMIN SET BACKEND CONFIG2("disable_auto_compaction" = "false");应根据当前版本支持的配置项执行。
1SHOW ALL GRANTS;1CREATE USER 'appuser'@'%'2IDENTIFIED BY 'Replace_With_Strong_Password';1SET PASSWORD FOR 'appuser'@'%'2= PASSWORD('Replace_With_New_Strong_Password');1CREATE ROLE readonly_role;1GRANT SELECT_PRIV2ON appdb.*3TO ROLE readonly_role;1GRANT readonly_role2TO 'appuser'@'%';1SHOW GRANTS FOR 'appuser'@'%';1REVOKE SELECT_PRIV2ON appdb.*3FROM ROLE readonly_role;1CREATE REPOSITORY `backup_repo`2WITH S33ON LOCATION "s3://bucket/doris-backup"4PROPERTIES5(6 "AWS_ENDPOINT" = "s3.example.com",7 "AWS_REGION" = "us-east-1",8 "AWS_ACCESS_KEY" = "access_key",9 "AWS_SECRET_KEY" = "secret_key"10);凭据应通过安全方式管理,不能直接保存在公开脚本中。
1SHOW REPOSITORIES;1BACKUP SNAPSHOT appdb.snapshot_202607272TO backup_repo3PROPERTIES("type" = "full");1SHOW BACKUP FROM appdb;1SHOW SNAPSHOT ON backup_repo;1RESTORE SNAPSHOT appdb.snapshot_202607272FROM backup_repo3ON (orders)4PROPERTIES("backup_timestamp" = "2026-07-27-10-00-00");时间戳应以 SHOW SNAPSHOT 返回值为准。
1SHOW RESTORE FROM appdb;1ALTER SYSTEM ADD BACKEND2"192.168.1.21:9050";1ALTER SYSTEM DECOMMISSION BACKEND2"192.168.1.21:9050";应等待数据迁移完成后再删除节点。
1ALTER SYSTEM ADD FOLLOWER2"192.168.1.12:9010";1bin/start_fe.sh --daemon1bin/stop_fe.sh1bin/start_be.sh --daemon1bin/stop_be.sh1tail -200 log/fe.log2tail -200 log/fe.warn.log1tail -200 log/be.INFO2tail -200 log/be.WARNING1ps -ef | grep -E '[P]aloFe|[d]oris_be'1df -h2df -i3iostat -x 1 51curl -sS http://fe-host:8030/api/bootstrap2curl -sS http://be-host:8040/api/health接口和鉴权要求可能随版本变化。
1SHOW FRONTENDS;2SHOW BACKENDS;3SHOW BROKER;4SHOW LOAD;5SHOW ROUTINE LOAD;6SHOW TRANSACTION;7SHOW BACKUP;8SHOW RESTORE;正式巡检还应检查 Tablet 副本、数据倾斜、Compaction、磁盘空间、FE/BE 日志和操作系统资源。
Doris 的很多问题最终都会落到四个对象上:FE、BE、Tablet 和任务。FE 负责元数据和调度,BE 负责数据存储和执行,Tablet 决定数据分布和副本状态,Load、Compaction、Schema Change、Backup 等任务则直接影响集群资源。
排查时建议先确认 FE/BE 是否存活,再检查磁盘、Tablet、副本和任务,最后分析 SQL Profile。不要看到查询慢就立即调整并发或手工触发 Compaction,也不要在副本异常时直接删除 BE。