OpenMLDB v0.6 新版本运维功能增强
admin
2024-03-23 17:54:54
0

导读

在过去的一个月里,OpenMLDB 快速迭代了多个小版本 (v0.6.4-v0.6.6),在增强功能的同时,也提高了运维效率。在运维方面,进行了对易用性、可观测性、自动化等方面的改进。本文将介绍 OpenMLDB 在 v0.6 版本迭代过程中运维方面所做的优化。

增强的集群状态查询

1

针对数据库的异常状态展示,OpenMLDB 增强了 SHOW TABLE STATUS 命令,更有利于排查数据库可能存在的问题。相比之前,增加了更多的逻辑检查,还增加了一列 Warnings ,用于显示当前数据库表格的异常状态。目前可以查询到的异常状态包括:

  • Nameserver 上记录的 leader/follower 信息和 tablet 上面的实际分布不一致。可能的原因为 tablet 或者 nameserver 访问 ZooKeeper 出现异常。
  • 分片状态异常。包括分片不存在、未成功加载和正在加载中(稍等可用)。造成分片不存在或者未成功加载的原因可能为 tablet 重启后,未成功恢复出表中数据,比如 auto_failover 设置为 false 或者多副本表所在 tablet 异常退出,造成处于不可自动恢复状态。
  • 副本数目和配置的 replicanum 不匹配。可能的原因为 tablet 启动后,部分副本恢复异常。
  • follower 和 leader 未连接(通常和上述的副本数目不匹配问题同时出现)。其可能的原因为添加新副本后,由于网络原因,tablets 和 nameserver 同步异常。

详情请参考 SHOW TABLE STATUS 命令,地址:https://openmldb.ai/docs/zh/main/reference/sql/ddl/SHOW_TABLE_STATUS.html

异常状态下数据快速恢复

2

一般情况,当您重启服务时,表中数据会自动恢复,并不需要干预。但是如果出现上述的集群异常状态,一般需要进行手动数据恢复。在以前的 OpenMLDB 版本中,手动数据恢复需要登录 ns client 后手动运行一系列命令,相当复杂繁琐。为此,OpenMLDB 新增了一个运维工具,拥有一键数据恢复功能,运行以下命令实现:

python tools/openmldb_ops.py --openmldb_bin_path=./bin/openmldb --zk_cluster=172.24.4.40:30481 --zk_root_path=/openmldb --cmd=recoverdata

详情请参考 运维 FAQ,地址:

https://openmldb.ai/docs/zh/main/maintain/faq.html#id3

扩缩容自动化分片迁移

3

为了实现扩缩容,在新节点加入或者移除以后,需要进行分片的迁移。在以往的版本中,分片迁移需要通过手动方式进行(详情请参考 阔缩容文档,地址:

https://openmldb.ai/docs/zh/main/maintain/scale.html)。手动方式可以提供精准的按需迁移,但是也增加了运维门槛。v0.6 版本引入了分片自动迁移机制,通过运维工具的 scaleout 和 scalein 命令,可以实现分片自动迁移,如:

python tools/openmldb_ops.py --openmldb_bin_path=./bin/openmldb --zk_cluster=172.24.4.40:30481 --zk_root_path=/openmldb --cmd=scaleout

详情请参考 运维工具说明,地址:

https://openmldb.ai/docs/zh/main/maintain/openmldb_ops.html

目前,自动化迁移策略会分别对每个数据库下面的所有表进行分片的均衡,目标为分片数目在所有 tablets 上尽量平均。算法基于启发式算法,基本思路如下:

  • 从拥有分片最多的 tablet 里,随机选择某一个分片,迁移到拥有分片最少的 tablet 上。
  • 所有 tablets 的分片数目基本一致,即:当拥有最多分片的 tablet 比拥有最少分片的 tablet 的分片数目不大于 1 时,算法终止。

我们将持续改进分片自动迁移算法,以满足不同场景下的负载自动平衡。

了解更多:

OpenMLDB GitHub:

https://github.com/4paradigm/OpenMLDB

OpenMLDB 官网:

https://openmldb.ai/

OpenMLDB 文档:

https://openmldb.ai/docs/zh/

相关内容

热门资讯

【MySQL】锁 锁 文章目录锁全局锁表级锁表锁元数据锁(MDL)意向锁AUTO-INC锁...
【内网安全】 隧道搭建穿透上线... 文章目录内网穿透-Ngrok-入门-上线1、服务端配置:2、客户端连接服务端ÿ...
GCN的几种模型复现笔记 引言 本篇笔记紧接上文,主要是上一篇看写了快2w字,再去接入代码感觉有点...
数据分页展示逻辑 import java.util.Arrays;import java.util.List;impo...
Redis为什么选择单线程?R... 目录专栏导读一、Redis版本迭代二、Redis4.0之前为什么一直采用单线程?三、R...
【已解决】ERROR: Cou... 正确指令: pip install pyyaml
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
Lock 接口解读 前置知识点Synchronized synchronized 是 Java 中的关键字,...
Win7 专业版安装中文包、汉... 参考资料:http://www.metsky.com/archives/350.htm...
3 ROS1通讯编程提高(1) 3 ROS1通讯编程提高3.1 使用VS Code编译ROS13.1.1 VS Code的安装和配置...
大模型未来趋势 大模型是人工智能领域的重要发展趋势之一,未来有着广阔的应用前景和发展空间。以下是大模型未来的趋势和展...
python实战应用讲解-【n... 目录 如何在Python中计算残余的平方和 方法1:使用其Base公式 方法2:使用statsmod...
学习u-boot 需要了解的m... 一、常用函数 1. origin 函数 origin 函数的返回值就是变量来源。使用格式如下...
常用python爬虫库介绍与简... 通用 urllib -网络库(stdlib)。 requests -网络库。 grab – 网络库&...
药品批准文号查询|药融云-中国... 药品批文是国家食品药品监督管理局(NMPA)对药品的审评和批准的证明文件...
【2023-03-22】SRS... 【2023-03-22】SRS推流搭配FFmpeg实现目标检测 说明: 外侧测试使用SRS播放器测...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
初级算法-哈希表 主要记录算法和数据结构学习笔记,新的一年更上一层楼! 初级算法-哈希表...
进程间通信【Linux】 1. 进程间通信 1.1 什么是进程间通信 在 Linux 系统中,进程间通信...
【Docker】P3 Dock... Docker数据卷、宿主机与挂载数据卷的概念及作用挂载宿主机配置数据卷挂载操作示例一个容器挂载多个目...