如何更改 influxdb 存储位置

How to change influxdb storage location

我已经在 docker 容器 (Kubernetes) 中安装了 influxdb,并且我已经将一个持久卷挂载到该容器。但是 influxdb 没有将数据写入该卷。 谁能告诉我步骤,以便 influxdb 将数据写入特定的卷。 谢谢

如果你从docker库中拉取了官方的influxdb镜像,数据文件的默认路径是:

/var/lib/influxdb

要验证,运行 独立实例:

docker run -p 8083:8083 -p 8086:8086 \
      -v $PWD:/var/lib/influxdb \
      influxdb

查看默认配置:

docker run --rm influxdb influxd config > influxdb.conf

然后使用vim influxdb.conf

使用自定义配置 运行 influxdb:

docker run -p 8086:8086 \
      -v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro \
      influxdb -config /etc/influxdb/influxdb.conf

简答:

   $ docker run -p 8083:8083 -p 8086:8086 \
          -v $PWD:/var/lib/influxdb \
          influxdb

用外部卷的路径修改 $PWD。

长答案:

docker run -p 8083:8083 -p 8086:8086 influxdb

默认情况下,这会将数据存储在 /var/lib/influxdb 中。所有 InfluxDB 数据都存储在那里。要使其成为持久卷(推荐):

$ docker run -p 8083:8083 -p 8086:8086 \
      -v $PWD:/var/lib/influxdb \
      influxdb

将 $PWD 修改为您要存储与 InfluxDB 容器关联的数据的目录。

例如,

 $ docker run -p 8083:8083 -p 8086:8086 \
              -v /your/home:/var/lib/influxdb \
              influxdb

这会将涌入数据存储在主机上的 /your/home 中。

对于 InfluxDB 2.0:

在 InfluxDB 2.0(或至少 2.0.3)中,数据目录已更改。东西现在默认存储在 ~/.influxdbv2 下(其中 ~quay.io/influxdb/influxdb:v2.0.3 图像中是 /root/),这对我来说似乎不是很 docker。

实际上,bolt (various key-value configurations) and engine(TSM 数据库)有 2 个数据存储。如果愿意,您可以通过 --engine-path=/data/engine --bolt-path=/data/bolt 参数将它们更改为 influxd.

因此,下面的docker-compose.yml应该将 InfluxDB2 数据存储到一个卷中。

version: '3.3'
services:
  influxdb:
    image: 'quay.io/influxdb/influxdb:v2.0.3'
    restart: unless-stopped
    ports:
      - '8086:8086'
    volumes:
      - data:/root/.influxdbv2
volumes:
  data:

现在,没有 官方 _/influxdb:2.0 Docker Hub (see also influxdb#16649)。我希望这个图像(一旦发布)有一些更好的默认值(quay.io/influxdb/influxdb:v2.0.3 甚至不创建匿名卷;因此一旦容器被删除,任何数据都会丢失)。因此,在此处尝试这些操作之前,请检查 Docker Hub 是否有图像 InfluxDB 2.0。

对于 InfluxDB 2.0.4:

现在 Docker Hub 上有一张官方图片。但与 quay.io/influxdb/influxdb:v2.0.4 映像不同的是,数据存储在 /root/.influxdbv2 中,您必须将 /var/lib/influxdb2 作为卷装载。