文档文档

Influx Inspect 磁盘实用程序

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

Influx Inspect 是一个 InfluxDB 磁盘实用程序,可用于

  • 查看关于磁盘分片的详细信息。
  • 将分片中的数据导出为 InfluxDB Line Protocol,以便可以将其重新插入数据库。
  • 将 TSM 索引分片转换为 TSI 索引分片。

influx_inspect 实用程序

语法

influx_inspect [ [ command ] [ options ] ]

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

influx_inspect 命令

influx_inspect 命令在此处进行了总结,并提供指向每个命令详细信息的链接。

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

buildtsi

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

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

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

注意: 使用您将用来运行数据库的用户帐户运行 buildtsi 命令,或者确保在运行命令后权限匹配。

选项

可选参数在方括号中。

[ -batch-size ]

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

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

[ -compact-series-file ]

不重建索引。 压缩现有序列文件,包括离线序列。迭代每个段中的序列,并将索引中未标记为 tombstone 的序列重写到段旁边的新的 .tmp 文件中。一旦所有段都转换完成,临时文件将覆盖原始段。

[ -concurrency ]

专用于分片索引构建的工作线程数。默认为 GOMAXPROCS 值。

[ -database <db_name> ]

数据库的名称。

-datadir <data_dir>

data 目录 的路径。

默认值为 $HOME/.influxdb/data。请参阅系统上 InfluxDB 的 文件系统布局

[ -max-cache-size ]

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

[ -max-log-file-size ]

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

[ -retention <rp_name> ]

保留策略的名称。

[ -shard <shard_ID> ]

分片的标识符。

[ -v ]

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

-waldir <wal_dir>

(WAL(预写日志)](/influxdb/v1/concepts/file-system-layout/#wal-directory) 文件的目录。

默认值为 $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 <string> ]

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

[ -path <string> ]

fields.idx 文件所在的目录路径。默认为当前工作目录 .

[ -schema-file <string> ]

应写入 schema 数据的文件名。默认为 schema.json

deletetsm

使用 deletetsm -measurement 从原始 TSM 文件(从指定分片)中删除 measurement。使用 deletetsm -sanitize 从原始 TSM 文件(从指定分片)中删除包含非打印 Unicode 字符的所有标签和字段键。

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

语法

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

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

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

选项

-measurement-sanitize 标志是必需的。

-measurement

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

-sanitize

用于从 TSM 文件中删除包含非打印 Unicode 字符的所有键的标志。

-v

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

示例

从单个分片中删除 measurement

从单个分片中删除 measurement h2o_feet

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

从数据库中的所有分片中删除 measurement 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 <series_path>

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

[ -series ]

转储原始序列数据。

[ -measurements ]

转储原始 measurement 数据。

[ -tag-keys ]

转储原始 标签键

[ -tag-values ]

转储原始 标签值

[ -tag-value-series ]

为每个标签值转储原始序列。

[ -measurement-filter <regular_expression> ]

按 measurement 正则表达式过滤数据。

[ -tag-key-filter <regular_expression> ]

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

[ -tag-value-filter <regular_expression> ]

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

示例

指定 _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>

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

选项

可选参数在方括号中。

[ -index ]

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

[ -blocks ]

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

[ -all ]

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

[ -filter-key <key_name> ]

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

dumptsmwal

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

语法

influx_inspect dumptsmwal [ options ] <wal_dir>

选项

可选参数在方括号中。

[ -show-duplicates ]

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

export

以 InfluxDB Line Protocol 数据格式导出所有 TSM 文件。可以使用 influx 命令导入此输出文件。

语法

influx_inspect export [ options ]

选项

可选参数在方括号中。

[ -compress ]

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

[ -database <db_name> ]

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

-datadir <data_dir>

data 目录 的路径。

默认值为 $HOME/.influxdb/data。请参阅系统上 InfluxDB 的 文件系统布局

[ -end <timestamp> ]

时间范围结束的时间戳。必须采用 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 ]

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

[ -out <export_dir>-out -]

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

默认值为 $HOME/.influxdb/export

[ -retention <rp_name> ]

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

[ -start <timestamp> ]

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

[ -waldir <wal_dir> ]

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 命令 的一组 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 "<regular expression/wildcard>" ]

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

[ -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 <int> ]

设置工作线程并发数。默认为 1

-db-path <string>

必需:数据库的路径。

[ -detailed ]

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

[ -exact ]

报告精确基数计数而不是估计值。这种计算方法可能会使用大量内存。

[ -rollup <string> ]

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

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

report-disk

使用 report-disk 命令来查看指定目录中 TSM 文件的分片和 measurement 的磁盘使用情况。对于确定容量规划的磁盘使用情况以及识别哪些 measurement 或分片正在使用最多空间非常有用。

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

对于新实例或数据最少的实例,磁盘使用情况可能显示为空白,直到首次将数据从 WAL 目录 (wal-dir) 刷新到 TSM 目录 (dir) 时。

语法

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

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

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

选项

可选参数在方括号中。

[ -detailed ]

包含此标志以报告按 measurement 的磁盘使用情况。

示例

报告按分片的磁盘大小
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}
  ]
}
报告按 measurement 的磁盘大小
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

该报告执行以下操作

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

当基数发生变化但不清楚哪个 measurement 导致此变化,以及更进一步地,何时发生变化时,reporttsi 命令主要有用。估算每个 measurement 和每个分片的准确基数细分将有助于回答这些问题。

语法

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

选项

可选参数在方括号中。

-db-path <path-to-db>

数据库的路径。

[ -top <n> ]

将结果限制为每个分片中指定的前 n 个。

性能

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

verify

验证 TSM 文件的完整性。

语法

influx_inspect verify [ options ]

选项

可选参数在方括号中。

-dir <storage_root>

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

verify-seriesfile

验证序列文件的完整性。

语法

influx_inspect verify-seriesfile [ options ]

选项

可选参数在方括号中。

[ -c <number> ]

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

[ -dir <path> ]

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

[ -db <db_name> ]

将验证序列文件限制为数据目录中指定的数据库。

[ -series-file <path> ]

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

[ -v ]

启用详细日志记录。

verify-tombstone

验证 tombstone 的完整性。

语法

influx_inspect verify-tombstone [ options ]

查找并验证指定目录路径(默认为 ~/.influxdb/data)下的所有 tombstone。文件按顺序验证。

选项

可选参数在方括号中。

[ -dir <path> ]

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

[ -v ]

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

[ -vv ]

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

[ -vvv ]

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

关于详细日志记录的注意: 更高的详细程度级别会覆盖较低的级别。

注意事项

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


此页内容对您有帮助吗?

感谢您的反馈!


Flux 的未来

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

阅读更多

InfluxDB 3 开源版本现已公开发布 Alpha 版

InfluxDB 3 开源版本现已可用于 Alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布作为 Alpha 版一部分的两款产品。

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

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