doris版本1.1.1 内存持续增长,版本升级到1.1.5稳定版本的记录

文章描述了在使用Doris1.1.1版本时遇到的内存持续增长问题,尝试通过调整配置如`trash_file_expire_time_sec`,`total_permits_for_compaction_score`,`max_segment_num_per_rowset`等来缓解,但未彻底解决。了解到1.1.3之前的版本有此问题,选择较为稳定的1.1.5版本进行升级。升级过程包括停服、备份、更新软件包、启动新版本以及后续的集群恢复和错误处理。对于查询错误,通过删除表并从回收站恢复解决了问题。

2022年12月下载了doris1.1.1之后出现了各种问题,其中最重大的是内存持续缓慢增长,直至超过最大mem_limit限制后仍旧增长
更改前:
在这里插入图片描述
期间为了解决这个问题更改了:

------------------主要调控内存现象
trash_file_expire_time_sec=86400   		#清理文件的时间间隔(秒)
total_permits_for_compaction_score=1000 #合并文件的同时进行数  默认10000   是消耗内存的大客户  
max_segment_num_per_rowset=200			#用于限制导入 新产生的 rowset中的segment数量
描述: 用于限制导入时,新产生的rowset中的segment数量。如果超过阈值,导入会失败并报错 -238。
过多的 segment 会导致compaction占用大量内存引发 OOM 错误。
segment_cache_capacity=100000			#Segment Cache 缓存的 Segment 最大数量
默认值目前只是一个经验值,可能需要根据实际场景修改。
增大该值可以缓存更多的segment从而避免一些IO。减少该值则会降低内存使用。
write_buffer_size=104857600				#默认值:104857600
刷写前缓冲区的大小
导入数据在 BE 上会先写入到一个内存块,当这个内存块达到阈值后才会写回磁盘。
默认大小是 100MB。过小的阈值可能导致 BE 上存在大量的小文件。
可以适当提高这个阈值减少文件数量。但过大的阈值可能导致 RPC 超时。
load_process_max_memory_limit_percent=48318382080 #最大写入单节点上所有的导入线程占据的内存上限
将这些默认值设置得很大,因为我们不想在用户升级 Doris 时影响负载性能。 如有必要,用户应正确设置这些配置。
mem_limit=30%

只是减缓了内存的增长速度并没有解决内存缓慢增长的问题,官网浏览版本更新介绍在1.1.3版本中有介绍说1.1.0-1.1.2版本都是没有解决内存缓慢增长的问题,只能检索版本查看稳定版,最新的1.2.X性能强大,但是刚出现并不能确定版本是否稳定,能确定较稳定的版本只有0.15和1.1.5,但是0.15 相对性能较差,因而选定了1.1.5。
下面来说更新版本的操作:
sql 执行

admin set frontend config("disable_balance" = "true");
admin set frontend config("disable_colocate_balance" = "true");
admin set frontend config("disable_tablet_scheduler" = "true");

停止文件的交换和写入。
下载apache-doris-fe-1.1.5-bin.tar.gz 和 apache-doris-be-1.1.5-bin-x86_64.tar.gz分发到对应的fe、be节点,解压。
1、停止FE,重命名fe数据存储目录为fe-two,作为备份
在fe的fe.conf中有:
meta_dir=/datassd03/doris/doris-meta

sh stop_fe.sh
cp -r /datassd03/doris/doris-meta /datassd03/doris/doris-meta_two

2、停止BE,重命名be数据存储目录be为be-two,作为备份
在be的be.conf中有:
storage_root_path = /datassd03/doris/disk1/data

sh stop_be.sh
cp -r /datassd03/doris/disk1/data /datassd03/doris/disk1/data_two

3、fe 主节点fe.conf 添加 metadata_failure_recovery=true 多个fe节点先只启动一个作为master节点。

sh  start_fe.sh --daemon

4、启动BE

sh start_be.sh --daemon

5、查看log日志检测是否成功
6、成功后,可选择删除two后缀文件夹
7、其他fe节点 ,删除本地的存储文件,删除后重新添加
删除除了已经启动的master节点外的所有fe节点
要注意的是先前保存的fe.conf中meta_dir对应的目录要删掉后重新创建新的,用来加载元数据。

ALTER SYSTEM drop FOLLOWER "follower_host:edit_log_port";

启动:

./bin/start_fe.sh --helper master_fe_host:edit_log_port --daemon

添加

ALTER SYSTEM add FOLLOWER "follower_host:edit_log_port";

一天后运行所有已有程序内存展现:

在这里插入图片描述

成功解决。
题外话:
源数据同步理论上是没啥问题了,但是我这里查询一些表报编号-230错误,最后sql尝试删除后从回收站恢复:

drop table database_name.table_name;
RECOVER TABLE database_name.table_name;

并且设置了参数:
ignore_rowset_stale_unconsistent_delete=true

–文件修复 报错 detailMessage = Failed to get scan range, no queryable replica found in tablet: 9719453
show tablet 9719453;
----将字段DetailCmd 值粘出执行
SHOW PROC ‘/dbs/10018/7901884/partitions/7901883/7901885/7901898’;
----可以查到backend_id 给文件的状态付给bad值 ,有副本的话 会自动恢复副本文件
ADMIN SET REPLICA STATUS PROPERTIES(“tablet_id” = “7901898”, “backend_id” = “10110”, “status” = “bad”);

如果没有副本,

当确认数据已经无法恢复后,可以通过执行以下命令,生成空白副本
ADMIN SET FRONTEND CONFIG (“recover_with_empty_tablet” = “true”);
五分钟后执行
查询 报错的表,正常展示
ADMIN SET FRONTEND CONFIG (“recover_with_empty_tablet” = “false”);

以上如果无法解决就得清空表重新运行

SHOW PROC ‘/cluster_health/tablet_health’; —查看整个文件系统的健康状态 会显示各种文件状态

<think>好的,用户现在问的是Doris版本升级怎么做。之前他问过关于字符串处理的问题,现在可能是在实际使用Doris过程中遇到了需要升级的情况。我得先确定用户的具体需求,可能他是系统管理员或者负责维护Doris集群的工程师,需要了解升级步骤和注意事项。 首先,用户可能对Doris的升级流程不太熟悉,担心升级过程中会出现问题,比如数据丢失或者服务中断。所以,我需要详细说明升级前的准备工作,比如备份数据、检查版本兼容性,以及升级的具体步骤,包括逐个节点升级和验证过程。 然后,用户可能关心的是如何回滚,以防升级失败。因此,我需要提到回滚方案,包括备份元数据和数据目录,这样在出现问题时可以快速恢复。另外,用户可能不知道升级需要的时间,是否需要停机,所以需要说明升级通常是滚动进行,尽量减少服务中断。 还要注意不同版本的升级路径,比如从1.x到1.y是否需要先升级到中间版本,或者直接升级到2.x。可能需要提示用户查阅官方文档,确认当前版本和目标版本的升级路径。此外,可能用户的环境有特殊配置,比如使用了插件或者自定义函数,这些在升级后可能需要重新配置或验证。 另外,用户可能对升级后的验证步骤不太清楚,需要具体说明如何检查集群状态、执行查询测试以及监控系统运行情况。最后,提醒用户关注升级后的性能变化和已知问题,确保系统稳定运行。总结来说,要提供清晰、分步骤的指导,并涵盖常见问题和注意事项,帮助用户顺利完成升级。</think>Doris(Apache Doris)的版本升级需要谨慎操作以确保数据安全和集群稳定性。以下是标准升级流程及关键注意事项: --- ### **一、升级前准备** 1. **备份数据** - **元数据备份**:执行 `mysqldump` 导出 FE 元数据 ```bash mysqldump -h FE_HOST -P FE_QUERY_PORT -u root --databases doris_cluster > fe_metadata.sql ``` - **数据目录备份**:备份所有 BE 节点的 `storage/` 目录(默认路径为 `/opt/doris/be/storage`)。 2. **版本兼容性检查** - 查阅 [官方升级文档](https://doris.apache.org/docs/dev/administrator-guide/upgrade/) 确认当前版本到目标版本的升级路径(如是否支持直接跨版本升级)。 3. **环境检查** - 确保所有节点磁盘空间充足(至少预留 20% 空间)。 - 关闭集群自动均衡(避免升级期间触发数据迁移)。 --- ### **二、升级流程(滚动升级)** #### **Step 1: 升级 Frontend(FE)** ```bash # 停止 FE 节点(逐个操作,保持多数 FE 存活) ./bin/stop_fe.sh # 替换二进制文件(保留原配置) cp -r /path/to/new/fe/* /opt/doris/fe/ # 启动 FE 节点 ./bin/start_fe.sh --daemon # 验证 FE 状态 SHOW PROC '/frontends'\G ``` #### **Step 2: 升级 Backend(BE)** ```bash # 停止 BE 节点(逐个操作,保持多数 BE 在线) ./bin/stop_be.sh # 替换二进制文件(保留原配置) cp -r /path/to/new/be/* /opt/doris/be/ # 启动 BE 节点 ./bin/start_be.sh --daemon # 验证 BE 状态 SHOW PROC '/backends'\G ``` #### **Step 3: 升级 Broker(可选)** 若使用了 HDFS/S3 等外部存储: ```bash # 停止 Broker ./bin/stop_broker.sh # 替换二进制文件 cp -r /path/to/new/apache_hdfs_broker/* /opt/doris/broker/ # 启动 Broker ./bin/start_broker.sh --daemon ``` --- ### **三、升级后验证** 1. **集群状态检查** ```sql -- 检查 FE/BE 状态 SHOW PROC '/frontends'; SHOW PROC '/backends'; -- 验证表数据完整性 SELECT COUNT(*) FROM key_table; ``` 2. **功能测试** - 执行典型查询语句,验证结果一致性。 - 测试数据导入/导出流程(如 Broker Load、Stream Load)。 3. **监控告警** - 观察 Grafana 监控面板的 CPU/内存/磁盘指标。 - 检查错误日志(`fe/log/fe.warn.log`、`be/log/be.WARNING`)。 --- ### **四、注意事项** 1. **回滚方案** - 若升级失败,需用备份的元数据和 `storage/` 目录恢复原有版本。 - 禁止混合版本运行(所有 FE/BE 必须升级到同一版本)。 2. **特殊版本升级** - **从 1.x 升级到 2.0**:需执行元数据迁移工具(参考 [2.0 Upgrade Guide](https://doris.apache.org/docs/dev/admin-manual/upgrade/2.0-upgrade-guide/))。 - **跨大版本升级**(如 0.151.0):需通过中间版本逐步过渡。 3. **已知问题规避** - 部分版本存在 JDBC 驱动兼容性问题,需更新 `fe/lib/` 下的驱动包。 - 升级后首次启动可能触发元数据回放,耗时较长(耐心等待)。 --- ### **五、升级时间估算** | 组件 | 单节点耗时 | 备注 | |--------|------------|--------------------------| | FE | 3~5 分钟 | 依赖元数据量大小 | | BE | 5~10 分钟 | 需等待数据版本合并完成 | | Broker | 1~2 分钟 | 无状态组件,影响最小 | --- 建议在低峰期操作,并通过灰度升级(先升级测试集群)降低风险。如遇问题,及时联系社区或技术支持。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值