文档

Influx Inspect 磁盘工具

本页记录了 InfluxDB OSS 的早期版本。最新稳定版本为 InfluxDB OSS v2。请参阅等效的 InfluxDB 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 行协议格式从 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 <db_name> ]

数据库名称。

-datadir <data_dir>

data 目录的路径。

[ -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(Write Ahead Log)文件的目录。

示例

转换节点上的所有分片
$ 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.json

deletetsm

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

警告:仅在 InfluxDB 实例脱机(influxd 服务未运行)时使用 deletetsm 命令。

语法

influx_inspect deletetsm -measurement <measurement_name> [ arguments ] <path>
<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 <series_path>

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

[ -series ]

输出原始系列数据。

[ -measurements ]

输出原始 度量 数据。

[ -tag-keys ]

输出原始 标签键

[ -tag-values ]

输出原始 标签值

[ -tag-value-series ]

为每个标签值输出原始系列。

[ -measurement-filter <regular_expression> ]

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

[ -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 行协议数据格式导出所有 TSM 文件。此输出文件可以使用 influx 命令导入。

语法

influx_inspect export [ options ]

选项

方括号中是可选参数。

[ -compress ]

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

[ -database <db_name> ]

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

-datadir <data_dir>

数据目录的路径。默认值是 "$HOME/.influxdb/data"

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

仅以行协议格式输出数据。不包含注释或数据定义语言(DDL),如 CREATE 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"

示例

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

# DML
# CONTEXT-DATABASE:MY_DB_NAME
# CONTEXT-RETENTION-POLICY:autogen
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 <int> ]

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

-db-path <string>

必需:数据库的路径。

[ -detailed ]

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

[ -exact ]

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

[ -rollup <string> ]

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

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

report-disk

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

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

对于新实例或数据量最小的实例,磁盘使用情况可能为空,直到第一次从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

报告执行以下操作

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

当出现基数变化且不清楚是哪个度量负责这种变化,以及进一步地,何时发生这种变化时,reporttsi 命令非常有用。为每个测量和每个分片估算准确的基数分解将有助于回答这些问题。

语法

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

选项

方括号中是可选参数。

-db-path <path-to-db>

数据库的路径。

[ -top <n> ]

限制每个分片内的结果数量为指定的数量。

性能

reporttsi 命令使用简单的切片/映射来存储低基数度量,这可以节省初始化位图的成本。对于高基数度量,该工具使用roaring 位图,这意味着在运行工具时我们不需要在堆上存储所有系列 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

验证墓碑的一致性。

语法

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 v3 增强功能和 InfluxDB 集群版现已正式发布

新功能,包括更快的查询性能和管理工具,推进了 InfluxDB v3 产品线。InfluxDB 集群版现已正式发布。

InfluxDB v3 性能和功能

InfluxDB v3 产品线在查询性能方面取得了显著提升,并提供了新的管理工具。这些增强包括用于监控 InfluxDB 集群健康状态的运营仪表板、InfluxDB Cloud 专用版中的单点登录(SSO)支持和新的令牌和数据库管理 API。

了解新的 v3 增强功能


InfluxDB 集群版正式发布

InfluxDB 集群版现已正式发布,为您在自管理的堆栈中提供了 InfluxDB v3 的强大功能。

与我们讨论 InfluxDB 集群版