influxdb数据库结构小结

转载请注明出处: 

InfluxDB 是一个开源的时序型数据库,它的数据主要存储在三个文件夹中:datameta 和 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```

 

参考链接:

InfluxDB 的存储机制解析

https://zhuanlan.zhihu.com/p/604131607

发表评论

相关文章