首页 > 数据库 > > VictoriaMetrics如何快照数TB的时序数据
VictoriaMetrics是一个快速的时间序列数据库。它支持Prometheus PromQL查询,其具有以下突出特点:
让我们研究一下VictoriaMetrics支持下的即时快照如何工作。
VictoriaMetrics将数据存储在类似于ClickHouse的 MergeTree表 数据结构中。它是用于分析数据和其他事件流的最快的数据库。在典型的分析查询上,它的性能要比PostgreSQL和MySQL等传统数据库高10到1000倍。这意味着单个ClickHouse服务器可以替代大量的常规数据库。
ClickHouse的速度如此之快,这要归功于其MergeTree表引擎的架构。
MergeTree是面向列的表引擎,其建立在类似于Log Structured Merge Tree 的数据结构上。 MergeTree属性:
接下来真正介绍VictoriaMetrics中的即时快照。
VictoriaMetrics将时间序列数据存储在类似MergeTree的表中,因此它受益于上述功能。此外,它还存储了倒排索引,以便通过给定的时间序列选择器进行快速查找。倒排索引存储在mergeset中--一种数据结构,该数据结构建立在MergeTree思想的基础上,并针对倒排索引查找进行了优化。
MergeTree还有一个上面没有提到的重要属性--原子性。这意味着:
这意味着MergeTree始终处于一致状态。
许多文件系统都提供诸如硬链接之类的"怪兽"。硬链接文件共享原始文件的内容。它与原始文件没有区别。硬链接不会在文件系统上占用额外的空间。删除原始文件后,硬链接文件将成为“原始文件”,因为它成为指向原始文件内容的唯一文件。无论文件大小如何,都会立即创建硬链接。
VictoriaMetrics使用硬链接为时间序列数据和倒排索引创建即时快照,因为它们都存储在类似MergeTree的数据结构中。它只是从原子上将所有parts的所有文件硬链接到快照目录。这是安全的,因为parts永远不会改变。之后,可以使用任何合适的工具(例如,用于云存储的rsync或cp)将快照备份/存档到任何存储(例如,Amazon S3或Google Cloud Storage)。存档前无需进行快照压缩,因为它已包含高度压缩的数据--VictoriaMetrics为时间序列数据提供了最佳的压缩率。
新创建的快照在文件系统上不占用额外的空间,因为其文件指向MergeTree表中的现有文件。即使快照大小超过10 TB也是如此!在原始MergeTree合并/删除从快照链接的部分之后,快照开始占用额外的空间。因此,不要忘记删除旧快照以释放磁盘空间。
VictoriaMetrics基于ClickHouse中MergeTree表引擎的出色构想构建了即时快照。可以随时创建这些快照,而不会在VictoriaMetrics上造成任何停机时间或正常操作的中断。
可以在单docker镜像或单服务器二进制文件上评估快照功能。可通过以下http处理程序使用:
/snapshot/list — 列出所有可用的快照/snapshot/create — 创建一个新的快照/snapshot/delete?snapshot=… — 删除指定的快照创建的快照位于/<-storageDataPath>/snapshots目录下,其中-storageDataPath是命令行标志,其中包含VictoriaMetrics存储数据的文件系统路径。
PS: 本文属于翻译,原文
https://zhuanlan.zhihu.com/p/315583711
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69999831/viewspace-3170179/ ,如需转载,请注明出处,否则将追究法律责任。