ARTICLE DETAIL

资讯详情

深耕网站SEO优化与搜索引擎排名提升的一线实战洞察。

Apache Doris DBA 应该掌握的 100 条命令(建议收藏)

Apache Doris DBA 应该掌握的 100 条命令(建议收藏) 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、恢复备份和修改配置等操作时应先确认影响范围。一、连接与基础信息1. 使用 MySQL 客户端连接 Dorismysql -h 192.168.1.10 -P 9030 -u root -p9030 是 FE 默认 MySQL 协议端口实际端口以fe.conf为准。2. 查看 Doris 版本SELECT VERSION();3. 查看当前数据库SELECT DATABASE();4. 查看当前用户SELECT CURRENT_USER();5. 查看当前时间SELECT NOW(), CURRENT_TIMESTAMP();6. 查看前端节点SHOW FRONTENDS;重点关注Role、IsMaster、Alive、ReplayedJournalId和LastHeartbeat。7. 查看后端节点SHOW BACKENDS;重点关注Alive、SystemDecommissioned、TabletNum、磁盘使用率和心跳时间。8. 查看 BrokerSHOW BROKER;只有使用 Broker Load 或相关外部存储功能时才会配置 Broker。9. 查看 FE 配置SHOW FRONTEND CONFIG;10. 查看 BE 配置SHOW BACKEND CONFIG;二、数据库、表与对象11. 查看所有数据库SHOW DATABASES;12. 创建数据库CREATE DATABASE appdb;13. 切换数据库USE appdb;14. 查看所有表SHOW TABLES FROM appdb;15. 查看表结构DESC appdb.orders;16. 查看完整建表语句SHOW CREATE TABLE appdb.orders;17. 查看表状态SHOW TABLE STATUS FROM appdb;18. 查看视图SHOW FULL TABLES FROM appdb WHERE Table_type VIEW;19. 查看物化视图SHOW MATERIALIZED VIEWS FROM appdb;20. 删除表DROP TABLE appdb.orders_old;删除前应确认回收站保留策略和备份状态。三、表模型、分区与分桶21. 创建 Duplicate Key 表CREATE TABLE appdb.events ( event_date DATE, user_id BIGINT, event_type VARCHAR(50), event_time DATETIME ) DUPLICATE KEY(event_date, user_id) PARTITION BY RANGE(event_date)() DISTRIBUTED BY HASH(user_id) BUCKETS 16 PROPERTIES(replication_num 3);22. 创建 Unique Key 表CREATE TABLE appdb.users ( user_id BIGINT, user_name VARCHAR(100), update_time DATETIME ) UNIQUE KEY(user_id) DISTRIBUTED BY HASH(user_id) BUCKETS 16 PROPERTIES(replication_num 3);23. 创建 Aggregate Key 表CREATE TABLE appdb.sales_summary ( sale_date DATE, region_id INT, amount_sum DECIMAL(18,2) SUM ) AGGREGATE KEY(sale_date, region_id) DISTRIBUTED BY HASH(region_id) BUCKETS 16 PROPERTIES(replication_num 3);24. 查看表分区SHOW PARTITIONS FROM appdb.events;25. 增加分区ALTER TABLE appdb.events ADD PARTITION p202607 VALUES [(2026-07-01), (2026-08-01)) DISTRIBUTED BY HASH(user_id) BUCKETS 16;26. 删除分区ALTER TABLE appdb.events DROP PARTITION p202601;删除分区会删除其中的数据应先确认数据保留要求。27. 查看动态分区属性SHOW DYNAMIC PARTITION TABLES FROM appdb;28. 修改副本数量ALTER TABLE appdb.events MODIFY PARTITION p202607 SET (replication_num 3);29. 查看数据分布SHOW DATA FROM appdb.events;30. 查看数据库总体数据量SHOW DATA FROM appdb;四、Tablet 与副本31. 查看表 TabletSHOW TABLETS FROM appdb.events;32. 查看指定 TabletSHOW TABLET 10001;33. 通过 PROC 查看 TabletSHOW PROC /dbs;先逐层查看数据库、表、分区和索引 ID再进入 Tablet 路径。34. 查看所有 BESHOW PROC /backends;35. 查看前端节点状态SHOW PROC /frontends;36. 查看 Tablet 调度任务SHOW PROC /cluster_balance;具体 PROC 路径可能随版本变化可从SHOW PROC /逐层查看。37. 查看坏副本SHOW PROC /statistic;重点关注不健康 Tablet 和副本统计。38. 查看副本状态ADMIN SHOW REPLICA STATUS FROM appdb.events;39. 标记副本状态ADMIN SET REPLICA STATUS PROPERTIES ( tablet_id 10001, backend_id 10002, status bad );该操作风险较高只应在明确副本异常并按官方恢复流程处理时执行。40. 查看 Tablet 调度状态SHOW TABLET FROM appdb.events;不同版本可能推荐使用SHOW TABLETS应以当前版本帮助为准。五、会话、查询与执行计划41. 查看当前连接SHOW PROCESSLIST;42. 查看完整 SQLSHOW FULL PROCESSLIST;43. 终止连接KILL CONNECTION 12345;44. 终止查询KILL QUERY 12345;45. 查看执行计划EXPLAIN SELECT * FROM appdb.events WHERE event_date 2026-07-27;46. 查看详细执行计划EXPLAIN VERBOSE SELECT * FROM appdb.events WHERE event_date 2026-07-27;47. 查看运行时 ProfileSHOW QUERY PROFILE /;根据返回的 Query ID 继续查看指定 Profile。48. 查看指定查询 ProfileSHOW QUERY PROFILE /query_id;Profile 语法和启用方式可能随版本变化应结合当前版本文档。49. 查看查询审计日志SELECT * FROM information_schema.active_queries ORDER BY query_start_time DESC;系统表是否存在以及字段名称取决于版本。50. 查看会话变量SHOW VARIABLES;六、数据导入与任务51. 使用 Stream Load 导入 CSVcurl --location-trusted \ -u loader:password \ -H label:orders_20260727 \ -H column_separator:, \ -T orders.csv \ http://fe-host:8030/api/appdb/orders/_stream_load生产环境不要在文章或脚本中保留真实密码。52. 查看 Load 任务SHOW LOAD FROM appdb;53. 查看指定 Label 的 LoadSHOW LOAD FROM appdb WHERE LABEL orders_20260727;54. 取消 LoadCANCEL LOAD FROM appdb WHERE LABEL orders_20260727;55. 创建 Routine LoadCREATE ROUTINE LOAD appdb.kafka_orders ON orders COLUMNS TERMINATED BY , PROPERTIES ( desired_concurrent_number 3, max_batch_interval 10 ) FROM KAFKA ( kafka_broker_list kafka1:9092,kafka2:9092, kafka_topic orders );56. 查看 Routine LoadSHOW ROUTINE LOAD FOR appdb.kafka_orders;57. 暂停 Routine LoadPAUSE ROUTINE LOAD FOR appdb.kafka_orders;58. 恢复 Routine LoadRESUME ROUTINE LOAD FOR appdb.kafka_orders;59. 停止 Routine LoadSTOP ROUTINE LOAD FOR appdb.kafka_orders;停止后不能直接恢复需要重新创建任务。60. 查看 Export 任务SHOW EXPORT FROM appdb;七、Compaction、事务与统计信息61. 查看事务SHOW TRANSACTION FROM appdb;62. 查看 Compaction 状态curl -sS \ http://be-host:8040/api/compaction/show?tablet_id1000163. 手工触发 Cumulative Compactioncurl -X POST \ http://be-host:8040/api/compaction/run?tablet_id10001compact_typecumulative64. 手工触发 Base Compactioncurl -X POST \ http://be-host:8040/api/compaction/run?tablet_id10001compact_typebase手工 Compaction 会消耗 I/O 和 CPU不应作为日常定时操作。65. 查看 BE Compaction 配置SHOW BACKEND CONFIG LIKE %compaction%;66. 查看表统计信息SHOW TABLE STATS appdb.orders;67. 收集表统计信息ANALYZE TABLE appdb.orders;68. 查看分析任务SHOW ANALYZE;69. 查看列统计信息SHOW COLUMN STATS appdb.orders;70. 修改会话查询超时SET query_timeout 300;八、配置、用户与权限71. 动态修改 FE 配置ADMIN SET FRONTEND CONFIG (dynamic_partition_enable true);只有SHOW FRONTEND CONFIG中IsMutabletrue的参数才能动态修改。72. 动态修改 BE 配置ADMIN SET BACKEND CONFIG (disable_auto_compaction false);应根据当前版本支持的配置项执行。73. 查看用户SHOW ALL GRANTS;74. 创建用户CREATE USER appuser% IDENTIFIED BY Replace_With_Strong_Password;75. 修改用户密码SET PASSWORD FOR appuser% PASSWORD(Replace_With_New_Strong_Password);76. 创建角色CREATE ROLE readonly_role;77. 授予只读权限GRANT SELECT_PRIV ON appdb.* TO ROLE readonly_role;78. 将角色授予用户GRANT readonly_role TO appuser%;79. 查看用户授权SHOW GRANTS FOR appuser%;80. 回收权限REVOKE SELECT_PRIV ON appdb.* FROM ROLE readonly_role;九、备份、恢复与节点管理81. 创建备份仓库CREATE REPOSITORY backup_repo WITH S3 ON LOCATION s3://bucket/doris-backup PROPERTIES ( AWS_ENDPOINT s3.example.com, AWS_REGION us-east-1, AWS_ACCESS_KEY access_key, AWS_SECRET_KEY secret_key );凭据应通过安全方式管理不能直接保存在公开脚本中。82. 查看备份仓库SHOW REPOSITORIES;83. 备份数据库BACKUP SNAPSHOT appdb.snapshot_20260727 TO backup_repo PROPERTIES(type full);84. 查看备份任务SHOW BACKUP FROM appdb;85. 查看仓库中的快照SHOW SNAPSHOT ON backup_repo;86. 恢复快照RESTORE SNAPSHOT appdb.snapshot_20260727 FROM backup_repo ON (orders) PROPERTIES(backup_timestamp 2026-07-27-10-00-00);时间戳应以SHOW SNAPSHOT返回值为准。87. 查看恢复任务SHOW RESTORE FROM appdb;88. 添加 BEALTER SYSTEM ADD BACKEND 192.168.1.21:9050;89. 下线 BEALTER SYSTEM DECOMMISSION BACKEND 192.168.1.21:9050;应等待数据迁移完成后再删除节点。90. 添加 Follower FEALTER SYSTEM ADD FOLLOWER 192.168.1.12:9010;十、服务、日志与巡检91. 启动 FEbin/start_fe.sh --daemon92. 停止 FEbin/stop_fe.sh93. 启动 BEbin/start_be.sh --daemon94. 停止 BEbin/stop_be.sh95. 查看 FE 日志tail -200 log/fe.log tail -200 log/fe.warn.log96. 查看 BE 日志tail -200 log/be.INFO tail -200 log/be.WARNING97. 查看进程ps -ef | grep -E [P]aloFe|[d]oris_be98. 查看磁盘和 I/Odf -h df -i iostat -x 1 599. 查看 FE 和 BE HTTP 健康状态curl -sS http://fe-host:8030/api/bootstrap curl -sS http://be-host:8040/api/health接口和鉴权要求可能随版本变化。100. 执行集群快速巡检SHOW FRONTENDS; SHOW BACKENDS; SHOW BROKER; SHOW LOAD; SHOW ROUTINE LOAD; SHOW TRANSACTION; SHOW BACKUP; SHOW RESTORE;正式巡检还应检查 Tablet 副本、数据倾斜、Compaction、磁盘空间、FE/BE 日志和操作系统资源。结语Doris 的很多问题最终都会落到四个对象上FE、BE、Tablet 和任务。FE 负责元数据和调度BE 负责数据存储和执行Tablet 决定数据分布和副本状态Load、Compaction、Schema Change、Backup 等任务则直接影响集群资源。排查时建议先确认 FE/BE 是否存活再检查磁盘、Tablet、副本和任务最后分析 SQL Profile。不要看到查询慢就立即调整并发或手工触发 Compaction也不要在副本异常时直接删除 BE。官方资料Apache Doris 官方文档https://doris.apache.org/docs/FE 配置https://doris.apache.org/docs/admin-manual/config/fe-config/管理手册https://doris.apache.org/docs/admin-manual/
返回列表