Influx Inspect 磁盘实用工具
此页面记录了 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 <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(预写日志)文件的目录。
默认值为 $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.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>
]
按标签值正则表达式过滤数据。
示例
指定 _series
和 index
目录的路径
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 文件或单个 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
]
仅以行协议格式输出数据。不输出数据定义语言 (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 的文件系统布局。
[ -tsmfile <tsm_file>
]
要导出的单个 tsm 文件的路径。这需要同时指定 -database
和 -retention
。
示例
导出所有数据库并压缩输出
influx_inspect export -compress
从特定数据库和保留策略导出数据
influx_inspect export -database DATABASE_NAME -retention RETENTION_POLICY
从单个 TSM 文件导出数据
influx_inspect export \
-database DATABASE_NAME \
-retention RETENTION_POLICY \
-tsmfile TSM_FILE_NAME
输出文件
# 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 "<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
:测量 (默认)
report-disk
使用 report-disk
命令查看指定目录中 TSM 文件的分片和测量的磁盘使用情况。对于确定容量规划的磁盘使用情况以及识别哪些测量或分片占用最多空间非常有用。
计算指定目录的总磁盘大小 (total_tsm_size
)(以字节为单位)、分片数 (shards
) 和 tsm 文件数 (tsm_files
)。还计算每个分片的磁盘大小 (size
) 和 tsm 文件数 (tsm_files
)。使用 -detailed
标志按数据库 (db
)、保留策略 (rp
) 和测量 (measurement
) 报告磁盘使用情况 (size
)。
语法
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 <path-to-db>
数据库的路径。
[ -top <n>
]
将结果限制为每个分片中指定的前 n 个数字。
性能
reporttsi
命令使用简单的切片/映射来存储低基数测量,这节省了初始化位图的成本。对于高基数测量,该工具使用 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
验证逻辑删除文件的完整性。
语法
influx_inspect verify-tombstone [ options ]
查找并验证指定目录路径(默认情况下为 ~/.influxdb/data
)下的所有逻辑删除文件。文件按顺序验证。
选项
可选参数在方括号中。
[ -dir <path>
]
指定根数据路径。默认为 ~/.influxdb/data
。此路径可以是任意路径,例如,它不需要是 InfluxDB 数据目录。
[ -v
]
启用详细日志记录。确认正在验证文件,并每 500 万个逻辑删除条目显示进度。
[ -vv
]
启用非常详细的日志记录。显示逻辑删除文件中每个序列键和时间范围的进度。时间戳以自 Epoch (1970-01-01T00:00:00Z
) 以来的纳秒为单位显示。
[ -vvv
]
启用非常非常详细的日志记录。显示逻辑删除文件中每个序列键和时间范围的进度。时间戳以 RFC3339 格式显示,精度为纳秒。
更高的详细程度级别会覆盖较低的级别。
注意事项
系统在导出 TSM 分片时无权访问元存储。因此,它始终使用无限持续时间和 1 的复制因子创建保留策略。如果最终用户要导入到集群或想要不同的保留持续时间,则可能需要在重新导入之前更改此设置。
此页是否对您有帮助?
感谢您的反馈!