当前位置: 首页 > news >正文

doris数据库数据均衡迁移问题

Q、数据库缩容失败,显示剩余分区不满足最少分区,如何快速找到有问题的表

1、表分区大于现场剩余be节点数,缩容会自动停止,需要调整数据库表分区满足大于3个以上小于现场剩余be节点数

ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port"; 开启安全下线be节点 #例如:ALTER SYSTEM DECOMMISSION BACKEND "192.168.10.172:9050"; 开启安全下线be节点 CANCEL DECOMMISSION BACKEND "be_host:be_heartbeat_service_port"; 关闭be安全下线

可通过数据库执行命令:

可以查询到是哪张表不满足缩容要求

DECOMMISSION 命令说明:

  1. 该命令用于安全删除 BE 节点。命令下发后,Doris 会尝试将该 BE 上的数据向其他 BE 节点迁移,当所有数据都迁移完成后,Doris 会自动删除该节点。

  2. 该命令是一个异步操作。执行后,可以通过 SHOW PROC ‘/backends’; 看到该 BE 节点的 isDecommission 状态为 true。表示该节点正在进行下线。

  3. 该命令不一定执行成功。比如剩余 BE 存储空间不足以容纳下线 BE 上的数据,或者剩余机器数量不满足最小副本数时,该命令都无法完成,并且 BE 会一直处于 isDecommission 为 true 的状态。

  4. DECOMMISSION 的进度,可以通过 SHOW PROC ‘/backends’; 中的 TabletNum 查看,如果正在进行,TabletNum 将不断减少。

Q、如何调整数据库表分区,修改表分区到

要继续进行缩容,需要调整表的默认表分区和默认分区,需要都进行调整

修改doris partitions 分区命令

#改全局默认副本数 ALTER TABLE t_face_group SET ("replication_num" = "3"); ##改动态分区专属副本数 ALTER TABLE t_face_group SET ("dynamic_partition.replication_num" = "3"); #改已有分区(示例:先查所有分区,再批量改) #先查分区列表 SHOW PARTITIONS FROM t_face_group; #再批量修改(替换成你的分区名) ##替换特定分区分片数量 ALTER TABLE t_face_group MODIFY PARTITION (p20260301, p20260302) SET ("replication_num" = "3"); ##替换该数据表所有分区分片数量 ALTER TABLE your_table_name MODIFY PARTITION (*) SET ("replication_num" = "3");

可以通过

show partitions 查看表分区

Q、数据缩容执行成功但是迁移速度缓慢,达不到理论上数据迁移速度怎么办

当我们成功在cluster_manger上执行be节点下线后,有可能会出现短时间有数据在均衡,但是长时间会存在无数据在均衡的问题;

通过命令

show backends; #能查看节点状态,需要下线的节点上使用了多少容量,有多少个数据块需要进行迁移 show proc '/cluster_balance'; #能查看数据均衡的相关情况

当数据均衡缓慢时,需要进一步了解doris均衡机制

doris负载均衡的主要思想是,对某些分片,先在低负载的节点上创建一个副本,然后再删除这些分片在高负载节点上的副本。同时,因为不同存储介质的存在,在同一个集群内的不同 BE 节点上,可能存在一种或两种存储介质。我们要求存储介质为 A 的分片在均衡后,尽量依然存储在存储介质 A 中。所以我们根据存储介质,对集群的 BE 节点进行划分。然后针对不同的存储介质的 BE 节点集合,进行负载均衡调度。

可以了解图中三个个主要参数代表含义:

  • pending_tablets 等待被调度的任务

  • running_tablets 正在运行的任务

  • history_tablets 已结束任务

可以通过命令查看三种任务运行情况

查看三种被调度的任务

SHOW PROC '/cluster_balance/pending_tablets'; SHOW PROC '/cluster_balance/running_tablets'; SHOW PROC '/cluster_balance/history_tablets';
+----------+--------+-----------------+---------+----------+----------+-------+---------+--------+----------+---------+---------------------+---------------------+---------------------+----------+------+-------------+---------------+---------------------+------------+---------------------+--------+---------------------+-------------------------------+ | TabletId | Type | Status | State | OrigPrio | DynmPrio | SrcBe | SrcPath | DestBe | DestPath | Timeout | Create | LstSched | LstVisit | Finished | Rate | FailedSched | FailedRunning | LstAdjPrio | VisibleVer | VisibleVerHash | CmtVer | CmtVerHash | ErrMsg | +----------+--------+-----------------+---------+----------+----------+-------+---------+--------+----------+---------+---------------------+---------------------+---------------------+----------+------+-------------+---------------+---------------------+------------+---------------------+--------+---------------------+-------------------------------+ | 4203036 | REPAIR | REPLICA_MISSING | PENDING | HIGH | LOW | -1 | -1 | -1 | -1 | 0 | 2019-02-21 15:00:20 | 2019-02-24 11:18:41 | 2019-02-24 11:18:41 | N/A | N/A | 2 | 0 | 2019-02-21 15:00:43 | 1 | 0 | 2 | 0 | unable to find source replica | +----------+--------+-----------------+---------+----------+----------+-------+---------+--------+----------+---------+---------------------+---------------------+---------------------+----------+------+-------------+---------------+---------------------+------------+---------------------+--------+---------------------+-------------------------------+

各列的具体含义如下:

TabletId:等待调度的 Tablet 的 ID。一个调度任务只针对一个 Tablet

Type:任务类型,可以是 REPAIR(修复)或 BALANCE(均衡)

Status:该 Tablet 当前的状态,如 REPLICA_MISSING(副本缺失)

State:该调度任务的状态,可能为 PENDING/RUNNING/FINISHED/CANCELLED/TIMEOUT/UNEXPECTED

OrigPrio:初始的优先级

DynmPrio:当前动态调整后的优先级,可能为LOW/NORMAL/HIGH

SrcBe:源端 BE 节点的 ID

SrcPath:源端 BE 节点的路径的 hash 值

DestBe:目的端 BE 节点的 ID

DestPath:目的端 BE 节点的路径的 hash 值

Timeout:当任务被调度成功后,这里会显示任务的超时时间,单位秒

Create:任务被创建的时间

LstSched:上一次任务被调度的时间

LstVisit:上一次任务被访问的时间。这里“被访问”指包括被调度,任务执行汇报等和这个任务相关的被处理的时间点

Finished:任务结束时间

Rate:clone 任务的数据拷贝速率

FailedSched:任务调度失败的次数

FailedRunning:任务执行失败的次数

LstAdjPrio:上一次优先级调整的时间

CmtVer/CmtVerHash/VisibleVer/VisibleVerHash:用于执行 clone 任务的 version 信息

ErrMsg:任务被调度和运行过程中,出现的错误信息

可以通过观察三种任务来判断数据是否正在均衡,例如当需要调度的任务在减少,表示任务正在进行处理,如果正在运行的任务一直在变化,也表示任务正在进行处理,但如果需要调度的任务一直处于峰值一般默认为2000个任务左右,在运行任务一直为0,表示doris调度模块已经积压,无法处理需要调度的任务

积压问题存在的原因(doris的副本均衡逻辑):Doris 的副本均衡逻辑会先增加一个正常副本,然后在删除老的副本,以达到副本迁移的目的。而在删除老副本时,Doris 会等待这个副本上已经开始执行的导入任务完成(当存在大分区的时候例如存在100G以上的表副本),以避免均衡任务影响导入任务。但这样会降低均衡逻辑的执行速度。此时可以通过修改以下参数,让 Doris 忽略这个等待,直接删除老副本:

执行命令:

admin set frontend config ("enable_force_drop_redundant_replica"="true");
http://www.jsqmd.com/news/720259/

相关文章:

  • 2026年测定粘结指数标准无烟煤企业推荐:基于综合评估 - 深度智识库
  • 告别时间漂移:手把手教你用C语言和Winsock实现一个简易NTP客户端(附完整源码)
  • 毕业设计精选【芳心科技】基于单片机的刷卡占座座椅
  • 兴源吸塑包装专业可靠,为行业发展添砖加瓦
  • SSDTTime黑苹果配置终极指南:5分钟搞定DSDT自动补丁
  • MATLAB小白也能搞定:用FFT快速模拟菲涅尔圆孔衍射(附完整代码和参数调优心得)
  • Java Web:DispatcherServlet
  • phy_simulators之nr_pbchsim之PBCH-DMRS
  • 提升文件管理效率的终极解决方案:QuickLook文件夹预览插件
  • 邦芒忠告:新人初入职场谨防“八件事”
  • Win11Debloat:让Windows系统恢复流畅的终极优化指南
  • Winhance中文版:你的Windows系统优化终极指南 [特殊字符]
  • Linux新手必看:手把手教你搞定Realtek RTL8821CU USB无线网卡驱动(含Ubuntu 22.04实战)
  • 【锂电池】锂离子电池RC二阶等效电路递推最小二乘法在线参数辨识simulink(附参考文献)
  • 军训晒不黑的防晒推荐,防晒黑绝绝子!6款不暗沉防晒天菜 - 全网最美
  • 2026年十大央国企AI+场景标杆案例集
  • 3DMAX模型转Web 3D?用Max2Babylon插件导出glTF的完整避坑指南
  • 告别配置恐惧:手把手教你用ETAS ISOLAR配置AUTOSAR DcmDsp(附避坑清单)
  • 架构实战:分布式 机器人梯控 系统的边缘解耦与状态机设计
  • 绍兴昱泽吊装:绍兴登高车租赁哪家好 - LYL仔仔
  • 如何在Blender中轻松导入和导出Sketchfab模型:完整插件使用指南
  • PHP 8.9错误日志智能分级实战(含PSR-3兼容方案),告别ERROR/WARNING混杂的运维噩梦
  • 你的 Agent 服务是如何保证高可用和稳健性的?
  • SSL 证书品牌如何选?国产自主可控 全球信任轻松看懂 - 速递信息
  • 告别AutoCAD字体烦恼:FontCenter智能字体管理插件完全指南
  • 信息学奥赛一本通C++刷题保姆级指南:从分支结构到正确提交(附2051-2056题解)
  • 晒不黑的防晒推荐,用一次就离不开了,从此告别晒黑 - 全网最美
  • 国内供应链物流管理系统开发公司核心能力排行盘点 - 奔跑123
  • 3步彻底解决Windows系统依赖修复工具:终极运行时库解决方案指南
  • 零代码文本分类神器:nli-MiniLM2-L6-H768 5分钟快速上手教程