Documentation

Influx 检查磁盘工具

此页面记录了早期版本的 InfluxDB OSS。InfluxDB OSS v2 是最新的稳定版本。请参阅等效的 InfluxDB v2 文档: influxd inspect

Influx Inspect 是一个 InfluxDB 磁盘工具,可用于:

  • 查看有关磁盘分片的详细信息。
  • 将数据从分片导出为 InfluxDB 行协议,可以重新插入数据库中。
  • 将TSM索引分片转换为TSI索引分片。

influx_inspect 工具

语法

influx_inspect [ [ command ] [ options ] ]

-help 是默认命令,打印工具的语法和使用信息。

influx_inspect 命令

这里总结了influx_inspect命令,并提供了每个命令的详细信息链接。

  • buildtsi: 将内存中的(基于TSM的)分片转换为TSI。
  • check-schema: 检查分片之间的类型冲突。
  • deletetsm: 批量删除原始TSM文件中的一个测量值。
  • dumptsi: 转储关于TSI文件的低级详细信息。
  • dumptsm: 转储有关TSM文件的低级详细信息。
  • dumptsmwal: 从WAL文件中导出所有数据。
  • export: 以InfluxDB行协议格式导出分片中的原始数据。
  • merge-schema: 合并来自check-schema命令的一组模式文件。
  • report: 显示分片级别的报告。
  • report-db: 估算数据库的 InfluxDB Cloud (TSM) 基数。
  • report-disk: 报告分片和度量的磁盘使用情况。
  • reporttsi: 报告分片和测量的基数。
  • verify: 验证TSM文件的完整性。
  • verify-seriesfile: 验证系列文件的完整性。
  • verify-tombstone: 验证墓碑的完整性。

buildtsi

构建基于磁盘的TSI(时间序列索引)分片索引文件和相关的系列文件。 索引被写入临时位置,直到完成,然后移至永久位置。 如果发生错误,则此操作将回退到原始的内存索引。

注意: 仅用于离线转换。 当TSI启用时,新分片使用TSI索引。 现有分片继续作为基于TSM的分片,直到 离线转换。

语法
influx_inspect buildtsi -datadir <data_dir> -waldir <wal_dir> [ options ]

注意: 使用 buildtsi 命令时,请使用您将要以其运行数据库的用户账户,或在运行命令后确保权限匹配。

选项

可选参数在括号中。

[ -batch-size ]

写入索引的批次大小。默认值是 10000

警告: 设置此值可能对性能和堆大小产生不良影响。

[ -compact-series-file ]

不重建索引。 压缩现有的系列文件,包括离线系列。遍历每个段中的系列,并将索引中非墓碑系列重写到与该段相邻的新 .tmp 文件中。一旦所有段都被转换,临时文件将覆盖原始段。

[ -concurrency ]

分配给分片索引构建的工人数量。 默认为 GOMAXPROCS 值。

[ -database ]

数据库的名称。

-datadir

data 目录 的路径。

默认值是 $HOME/.influxdb/data。 请查看 文件系统布局 以获取您系统上 InfluxDB 的信息。

[ -max-cache-size ]

缓存的最大大小,在开始拒绝写入之前。 这个值覆盖了配置设置 [data] cache-max-memory-size。 默认值为 1073741824

[ -max-log-file-size ]

日志文件的最大大小。默认值为 1048576

[ -retention ]

保留策略的名称。

[ -shard ]

分片的标识符。

[ -v ]

启用详细模式下输出的标志。

-waldir

(WAL(预写日志)文件的目录。

默认值是 $HOME/.influxdb/wal。 请参阅 文件系统布局 以了解您系统上的 InfluxDB。

示例

在节点上转换所有分片
$ influx_inspect buildtsi -datadir ~/.influxdb/data -waldir ~/.influxdb/wal
转换数据库的所有分片
$ influx_inspect buildtsi -database mydb -datadir ~/.influxdb/data -waldir ~/.influxdb/wal
转换特定分片
$ influx_inspect buildtsi -database stress -shard 1 -datadir ~/.influxdb/data -waldir ~/.influxdb/wal

check-schema

检查分片之间的类型冲突。

语法

influx_inspect check-schema [ options ]

选项

[ -conflicts-file ]

应写入冲突数据的文件名。默认是 conflicts.json

[ -path ]

存放 fields.idx 文件的目录路径。默认是当前工作目录 .

[ -schema-file ]

应该写入架构数据的文件名。默认是 schema.json

deletetsm

使用 deletetsm -measurement 删除原始 TSM 文件中的一个测量(来自指定的分片)。 使用 deletetsm -sanitize 删除原始 TSM 文件中包含不可打印的 Unicode 字符的所有标签和字段键(来自指定的分片)。

警告: 仅当您的 InfluxDB 实例离线时(influxd 服务未运行),才使用 deletetsm 命令。

语法

influx_inspect deletetsm -measurement <measurement_name> [ arguments ] <path>

默认情况下,.tsm 文件位于 data 目录中的路径。

在指定路径时,通配符 (*) 可以替代一个或多个字符。

选项

必须提供 -measurement-sanitize 标志。

-measurement

要从TSM文件中删除的测量名称。

-sanitize

标志以从TSM文件中删除所有包含不可打印Unicode字符的键。

-v

可选。启用详细日志记录的标志。

示例

从单个分片中删除测量

从单个分片中删除测量 h2o_feet

./influx_inspect deletetsm -measurement h2o_feet /influxdb/data/location/autogen/1384/*.tsm
从数据库中所有分片删除一个测量

从数据库中所有分片删除测量 h2o_feet

./influx_inspect deletetsm -measurement h2o_feet /influxdb/data/location/autogen/*/*.tsm

dumptsi

转储关于TSI文件的低级细节,包括 .tsl 日志文件和 .tsi 索引文件。

语法

influx_inspect dumptsi [ options ] <index_path>

如果没有指定选项,将为每个文件提供汇总统计信息。

选项

可选参数在括号中。

-series-file

在数据库 data 目录下 _series 目录的路径。必填。

[ -series ]

转储原始系列数据。

[ -measurements ]

导出原始 measurement 数据。

[ -tag-keys ]

转储原始 tag keys

[ -tag-values ]

转储原始 tag values

[ -tag-value-series ]

转储每个标签值的原始系列。

[ -measurement-filter ]

通过测量正则表达式过滤数据。

[ -tag-key-filter ]

按标签键正则表达式过滤数据。

[ -tag-value-filter ]

按标签值的正则表达式过滤数据。

示例

指定路径到 _seriesindex 目录
$ influx_inspect dumptsi -series-file /path/to/db/_series /path/to/index
指定_series目录和index文件的路径
$ influx_inspect dumptsi -series-file /path/to/db/_series /path/to/index/file0
指定_series目录和多个index文件的路径
$ influx_inspect dumptsi -series-file /path/to/db/_series /path/to/index/file0 /path/to/index/file1 ...

dumptsm

转储有关 TSM 文件的低级详细信息,包括 TSM (.tsm) 文件和 WAL (.wal) 文件。

语法

influx_inspect dumptsm [ options ] <path>
<path>

默认情况下位于data目录中的.tsm文件的路径。

选项

可选参数在括号中。

[ -index ]

用于转储原始索引数据的标志。
默认值为 false

[ -blocks ]

导出原始区块数据的标志。
默认值是 false

[ -all ]

转储所有数据的标志。注意:这可能会打印大量信息。 默认值是 false

[ -filter-key ]

仅显示与此关键子字符串匹配的索引数据和块数据。 默认值为 ""

dumptsmwal

仅从一个或多个WAL (.wal) 文件中转储所有条目,并排除TSM (.tsm) 文件。

语法

influx_inspect dumptsmwal [ options ] <wal_dir>

选项

可选参数在括号中。

[ -show-duplicates ]

标志用于显示具有重复或无序时间戳的密钥。 如果用户用客户端设置的时间戳写入点,则可以写入多个具有相同时间戳(或具有时间递减时间戳)的点。

export

以InfluxDB行协议数据格式导出所有TSM文件。 这个输出文件可以使用influx命令导入。

语法

influx_inspect export [ options ]

选项

可选参数在括号中。

[ -compress ]

使用 gzip 压缩输出的标志。 默认值为 false

[ -database ]

要导出的数据库名称。 默认值为 ""

-datadir <data_dir>

data 目录 的路径。

默认值是 $HOME/.influxdb/data。 请查看 文件系统布局 以获取您系统上 InfluxDB 的信息。

[ -end ]

时间范围结束的时间戳。必须采用RFC3339格式

RFC3339要求非常特定的格式。例如,要表示没有时区偏移(UTC +0),必须在秒后面包含Z或+00:00。有效的RFC3339格式示例包括:

无偏移

YYYY-MM-DDTHH:MM:SS+00:00
YYYY-MM-DDTHH:MM:SSZ
YYYY-MM-DDTHH:MM:SS.nnnnnnZ (fractional seconds (.nnnnnn) are optional)

带偏移量

YYYY-MM-DDTHH:MM:SS-08:00
YYYY-MM-DDTHH:MM:SS+07:00

注意: 在偏移量中,避免用 Z 替换 + 或 - 符号。这可能会导致错误或打印 Z(ISO 8601 行为)而不是时区偏移。

[ -lponly ]

仅以行协议格式输出数据。 不输出数据定义语言(DDL)语句(例如 CREATE DATABASE)或 DML 上下文元数据(例如 # CONTEXT-DATABASE)。

[ -out -out -]

导出分片数据的位置。指定一个导出目录以导出文件,或在 out 后添加一个连字符 (-out -) 以将分片数据导出到标准输出 (stdout) 并将状态消息发送到标准错误 (stderr)。

默认值为 $HOME/.influxdb/export.

[ -retention ]

要导出的保留策略的名称。默认值为""

[ -start ]

时间范围开始的时间戳。 时间戳字符串必须采用 RFC3339 格式

[ -waldir ]

WAL目录的路径。

默认值是 $HOME/.influxdb/wal。 请参阅 文件系统布局 以了解您系统上的 InfluxDB。

示例

导出所有数据库并压缩输出
influx_inspect export -compress
从特定数据库和保留政策导出数据
influx_inspect export -database DATABASE_NAME -retention RETENTION_POLICY 
输出文件
# DDL
CREATE DATABASE DATABASE_NAME 
CREATE RETENTION POLICY <RETENTION_POLICY> ON <DATABASE_NAME> DURATION inf REPLICATION 1

# DML
# CONTEXT-DATABASE:DATABASE_NAME
# CONTEXT-RETENTION-POLICY:RETENTION_POLICY
randset value=97.9296104805 1439856000000000000
randset value=25.3849066842 1439856100000000000

merge-schema

check-schema 命令 合并一组模式文件。

语法

influx_inspect merge-schema [ options ]

选项

[ -conflicts-file <string> ]

文件名冲突数据应写入。默认值为 conflicts.json

[ -schema-file <string> ]

输出文件的文件名。默认是 schema.json

report

显示所有分片的序列元数据。
默认位置是 $HOME/.influxdb

语法

influx_inspect report [ options ] <path>

选项

可选参数在括号中。

<path>

InfluxDB data 目录 的路径。

[ -pattern "" ]

用于匹配包含的文件的正则表达式或通配符模式。 默认值是 ""

[ -detailed ]

报告详细基数估计的标志。 默认值是 false

[ -exact ]

报告精确基数计数而不是估计值的标志。
默认值为 false
注意:这可能会使用很多内存。

report-db

使用 report-db 命令来估计迁移到 InfluxDB Cloud (TSM) 的数据库中数据的系列基数。InfluxDB Cloud (TSM) 在系列键中包含字段键,因此唯一的字段键会影响总基数。在 InfluxDB 1.x 数据库中数据的总系列基数可能与同一数据迁移到 InfluxDB Cloud (TSM) 时的系列基数不同。

语法

influx_inspect report-db [ options ]

选项

[ -c ]

设置工作并发。默认值是 1

-db-path

必需: 数据库的路径。

[ -detailed ]

在命令输出中包含字段、标签的计数。

[ -exact ]

报告精确的基数计数,而不是估算。
这种计算方法可能会消耗大量内存。

[ -rollup ]

指定基数“汇总”级别——基数报告的粒度:

  • t: 总计
  • d: 数据库
  • r: 保留策略
  • m: 测量 (默认)

report-disk

使用 report-disk 命令查看指定目录中TSM文件按分片和度量的磁盘使用情况。对容量规划和识别哪些度量或分片占用最多空间非常有用。

计算指定目录中的总磁盘大小 (total_tsm_size) 以字节为单位,分片数 (shards) 和 tsm 文件数 (tsm_files)。还计算每个分片的磁盘大小 (size) 和 tsm 文件数 (tsm_files)。使用 -detailed 标志按数据库 (db)、保留策略 (rp) 和测量 (measurement) 报告磁盘使用情况 (size)。

对于新的实例或数据很少的实例,磁盘使用情况可能会出现空白,直到第一次将数据从WAL目录(wal-dir)刷新到TSM目录(dir)为止。

语法

influx_inspect report-disk [ options ] <path>
<path>

报告磁盘使用情况的 .tsm 文件所在目录的路径。默认位置是 $HOME/.influxdb/data

在指定路径时,通配符 (*) 可以替代一个或多个字符。

选项

可选参数在括号中。

[ -detailed ]

包含此标志以根据测量报告磁盘使用情况。

示例

按分片的磁盘大小报告
influx_inspect report-disk ~/.influxdb/data/
输出
{
  "Summary": {"shards": 2, "tsm_files": 8, "total_tsm_size": 149834637 },
  "Shard": [
    {"db": "stress", "rp": "autogen", "shard": "3", "tsm_files": 7, "size": 147022321},
    {"db": "telegraf", "rp": "autogen", "shard": "2", "tsm_files": 1, "size": 2812316}
  ]
}
按测量报告磁盘大小
influx_inspect report-disk -detailed ~/.influxdb/data/
输出
{
  "Summary": {"shards": 2, "tsm_files": 8, "total_tsm_size": 149834637 },
  "Shard": [
    {"db": "stress", "rp": "autogen", "shard": "3", "tsm_files": 7, "size": 147022321},
    {"db": "telegraf", "rp": "autogen", "shard": "2", "tsm_files": 1, "size": 2812316}
  ],
  "Measurement": [
    {"db": "stress", "rp": "autogen", "measurement": "ctr", "size": 107900000},
    {"db": "telegraf", "rp": "autogen", "measurement": "cpu", "size": 1784211},
    {"db": "telegraf", "rp": "autogen", "measurement": "disk", "size": 374121},
    {"db": "telegraf", "rp": "autogen", "measurement": "diskio", "size": 254453},
    {"db": "telegraf", "rp": "autogen", "measurement": "mem", "size": 171120},
    {"db": "telegraf", "rp": "autogen", "measurement": "processes", "size": 59691},
    {"db": "telegraf", "rp": "autogen", "measurement": "swap", "size": 42310},
    {"db": "telegraf", "rp": "autogen", "measurement": "system", "size": 59561}
  ]
}

reporttsi

该报告执行以下操作:

  • 计算数据库中总的精确序列基数。
  • 通过测量对基数进行划分,并发出这些基数值。
  • 发出数据库中每个分片的总精确基数。
  • 每个分片的每个测量的确切基数分段。
  • 可选地将每个分片中的结果限制为“前 n”。

当基数发生变化且不清楚哪个测量负责此变化时,reporttsi 命令主要是有用的,并且进一步地, 这种变化发生。准确估计每个测量和每个分片的基数细分将有助于回答这些问题。

语法

influx_inspect reporttsi -db-path <path-to-db> [ options ]

选项

可选参数在括号中。

-db-path <数据库路径>

数据库的路径。

[ -top ]

限制每个分片内结果的数量到指定的前几名。

性能

这个 reporttsi 命令使用简单的切片/映射来存储低基数测量,这样可以节省初始化位图的成本。对于高基数测量,该工具使用 roaring bitmaps,这意味着在运行工具时我们不需要将所有系列 ID 存储在堆上。低基数到高基数表示的转换是在工具运行时自动完成的。

verify

验证TSM文件的完整性。

语法

influx_inspect verify [ options ]

选项

可选参数在括号中。

-dir

存储根目录的路径。
默认值为 "/root/.influxdb"

verify-seriesfile

验证系列文件的完整性。

语法

influx_inspect verify-seriesfile [ options ]

选项

可选参数在括号中。

[ -c ]

指定要为此命令运行的并发工作线程的数量。默认值等于 GOMAXPROCS 的值。如果性能受到不利影响,您可以设置较低的值。

[ -dir ]

指定根数据路径。默认为 ~/.influxdb/data

[ -db ]

限制验证系列文件仅针对数据目录中的指定数据库。

[ -series-file ]

特定系列文件的路径;覆盖 -db-dir

[ -v ]

启用详细日志记录。

verify-tombstone

验证墓碑的完整性。

语法

influx_inspect verify-tombstone [ options ]

在指定的目录路径下查找并验证所有墓碑(默认情况下为 ~/.influxdb/data)。文件将按照顺序进行验证。

选项

可选参数在括号中。

[ -dir <path> ]

指定根数据路径。默认为 ~/.influxdb/data。此路径可以是任意的,例如,它不需要是 InfluxDB 数据目录。

[ -v ]

启用详细日志记录。确认正在验证文件,并每500万个墓碑条目显示进度。

[ -vv ]

启用非常详细的日志记录。显示墓碑文件中每个系列键和时间范围的进度。时间戳以自纪元(1970-01-01T00:00:00Z)以来的纳秒为单位显示。

[ -vvv ]

启用非常详细的日志记录。显示墓碑文件中每个系列键和时间范围的进度。时间戳以RFC3339格式显示,具有纳秒精度。

关于详细日志记录的说明: 较高的详细级别会覆盖较低的级别。

注意事项

在导出TSM分片时,系统无法访问元存储。因此,它始终创建具有无限持续时间和复制因子为1的保留策略。最终用户可能希望在重新导入之前更改此设置,如果他们是导入到集群中或希望有不同的保留持续时间。



Flux的未来

Flux 正在进入维护模式。您可以像现在一样继续使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB 3 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

InfluxDB 3 核心,是我们新的开源产品。 它是一个用于时间序列和事件数据的实时数据引擎。 InfluxDB 3 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

有关如何开始的更多信息,请查看: