【问题标题】:How to prevent dataloss on restart of a influxdb server?如何防止重新启动 influxdb 服务器时的数据丢失?
【发布时间】:2016-06-07 22:54:38
【问题描述】:

我在一个相对较小的设备上运行一个 influxdb 实例来收集时间序列 IoT 传感器数据。有时有必要重新启动该设备(更新或类似的东西),我注意到重新启动后,如果我查询一些数据,我的 influxdb 历史记录中有数据丢失。使用我当前的配置,由于重新启动,我丢失了大约 16 小时的数据。 如何确保设备重启后所有数据仍然存在?

谢谢!

【问题讨论】:

  • 你使用的是什么版本的 InfluxDB?是否使用了任何非标准配置参数? InfluxDB 默认将所有点存储在磁盘上。
  • 我使用的是 0.13 版和一个默认配置,除了:reporting-disabled = true cache-max-memory-size = 5242880 cache-snapshot-memory-size = 512 [shard-precreation ] enabled = false 和一些数据存储路径以及将http接口绑定到localhost。
  • 所有数据存储路径(Meta Stack Overflow dir、[data] dir 和 wal-dir)是否都映射到磁盘存储?还有,cache-snapshot-memory-size 极低(单位是字节)。
  • 元和数据目录指向磁盘存储(/data/.influxdb/data),而 wal-dir 指向/tmp/.influxdb/wal,这可能是个问题吗?我选择了一个非常低的cache-snapshot-memory-size,因为在重新启动时会丢失大量(1 周)数据。降低此值后,损失要小得多。

标签: database time-series influxdb


【解决方案1】:

在 InfluxDB 中,持久性数据存储在 /wal/data/meta 目录中。 /wal 目录包含预写日志,它作为最近写入点的暂存区,在它们被压缩为时间序列合并文件以长期存储在/data 目录之前进行存储。

在 Unix 系统上,/tmp directory 有时会在重新启动时被清除。由于wal-dir 配置设置被指定为/tmp/.influxdb/wal,预写日志中的持久数据可能会在重新启动时被清除。这解释了为什么您只看到最近数据的数据丢失。旧数据刷新到/data 目录,重启时不会清除。

简而言之,wal-dir 配置设置需要设置为/data/.influxdb/wal 或其他重启时未清除的目录。

【讨论】:

    猜你喜欢
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多