当前位置: 首页 > 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.cnnetsun.cn/news/2147587.html

相关文章:

  • 联想拯救者BIOS隐藏功能解锁:释放硬件潜能的完整技术解锁工具指南
  • ArcGIS Pro里Excel数据导不进去?除了装驱动,这个‘曲线救国’的方法更香(附Excel转表工具实操)
  • 告别风扇噪音烦恼:Fan Control让你的电脑安静如初
  • Pytorch图像去噪实战(七):Noise2Noise自监督图像去噪实战,没有干净图也能训练模型
  • Pytorch图像去噪实战(十):Restormer图像去噪实战,用高效Transformer解决高分辨率去噪问题
  • Flowframes终极指南:免费AI视频插帧工具让普通视频秒变流畅大片
  • 别再手动排期了!用Microsoft Project 2007三步搞定你的第一个项目计划(附WBS实战)
  • 终极指南:如何用Deep3D免费将2D视频秒变沉浸式3D立体影像
  • 氛!某插件肆意搜集信息,吾爱论坛站长打造完美替代品来救场
  • 如何用BiliTools跨平台工具箱轻松下载B站视频:完整指南
  • BepInEx Unity插件框架架构演进:从Mono到IL2CPP的技术突破与性能优化路径
  • 【仅限持牌机构技术负责人可见】:某头部支付平台PHP国密迁移内部白皮书节选(含性能损耗压测数据:TPS下降≤3.7%,密钥轮换耗时<86ms)
  • CircuitJS1 Desktop Mod:零基础入门电子电路仿真的完整指南
  • 当ISO镜像不再需要实体光驱:WinCDEmu的驱动级虚拟化方案
  • **超融合架构下的自动化运维:基于Python的容器化部署与监控实战**在现代数据中心演进中,**超融合架构(Hyper-Converg
  • YooAsset:企业级Unity资源管理框架的架构设计与实施指南
  • 如何快速掌握Charticulator:零代码图表设计的完整入门指南
  • 模型选型背后的成本工程:DeepSeek-V4、GPT-5.5与中国大模型API成本全解析
  • 绝地求生罗技鼠标宏压枪脚本:5分钟从新手到精准射击高手
  • AJ-Captcha行为验证码技术架构深度解析:构建智能人机识别系统的实践指南
  • 告别打包烦恼:用Auto.js Pro 9.0.0 + VSCode插件高效开发手机自动化脚本(附Scrcpy投屏技巧)
  • 任务分配的底层逻辑:告别 “能者多劳”,让每个人都 “物尽其用”
  • GLM-4.1V-9B-Base保姆级教程:Web界面UI功能分区与交互逻辑详解
  • Win11Debloat:Windows 11终极优化工具,5分钟还你一个干净高效的系统
  • 免费Switch模拟器Ryujinx:在PC上畅玩任天堂游戏的终极指南
  • 英雄联盟国服换肤神器:R3nzSkin免费解锁全皮肤完整教程
  • 29000+ 个 AI Skill 怎么选?这个工具帮你 30 秒找到最佳选择(附方法论)
  • 从MES到ERP:一份简历讲透你的技术栈演进,让猎头主动找上门
  • 别再只改主干网络了!YOLOv5模型轻量化避坑指南:从MobileNetV3、ShuffleNetV2到GhostNet的全面对比实验
  • 如何永久免费使用IDM?开源激活脚本完整指南