转载请注明出处:
InfluxDB 是一个开源的时序型数据库,它的数据主要存储在三个文件夹中:data
、meta
和 wal
。
data
文件夹:这个文件夹存储的是 InfluxDB 的数据文件,也称为 TSM 文件。TSM 文件是 InfluxDB 自研的一种存储引擎,它将时序数据和索引数据一起存储在一个文件中,通过这种方式减少了磁盘 I/O 的开销,提高了查询性能。在data
文件夹下,每个数据库都有一个子文件夹,每个子文件夹下面存储的是该数据库的所有 TSM 文件 。
meta
文件夹:这个文件夹存储的是 InfluxDB 的元数据,包括数据库、用户、保留策略等信息。元数据是 InfluxDB 运行的重要组成部分,它用于存储 InfluxDB 的配置信息和数据的元信息。在meta
文件夹下,有一个meta.db
文件,这个文件是一个 SQLite 数据库,它存储了 InfluxDB 的所有元数据 。
wal
文件夹:这个文件夹存储的是 InfluxDB 的预写日志(Write-Ahead Logging,简称 WAL)。WAL 是一种日志记录技术,它用于保证数据的一致性和可靠性。在 InfluxDB 中,所有的写入操作首先会被记录在 WAL 文件中,然后才会被写入到 TSM 文件中。这样做的好处是,即使 InfluxDB 在写入操作完成后崩溃,重启后仍然可以从 WAL 文件中恢复数据,防止数据丢失 。InfluxDB 的 WAL 文件存放在wal
文件夹中。在wal
文件夹下,每个数据库都有一个子文件夹,每个子文件夹下面存储的是该数据库的所有 WAL 文件。这些 WAL 文件按照时间顺序命名,例如000000001-000000002.wal
,表示这个 WAL 文件包含了从时间戳000000001
到000000002
的所有写入操作 。
InfluxDB 的目录结构如下:
/var/lib/influxdb ├── data │ ├── db1 │ │ ├── autogen │ │ │ ├── 1 │ │ │ │ ├── 000000001-000000002.tsm │ │ │ │ └── ... │ │ │ ├── 2 │ │ │ │ ├── 000000002-000000003.tsm │ │ │ │ └── ... │ │ │ └── ... │ ├── db2 │ │ └── ... │ └── ... ├── meta │ └── meta.db └── wal ├── db1 │ ├── autogen │ │ ├── 1 │ │ │ ├── 000000001-000000002.wal │ │ │ └── ... │ ├── 2 │ │ ├── 000000002-000000003.wal │ │ └── ... │ └── ... ├── db2```
参考链接:
https://zhuanlan.zhihu.com/p/604131607