rovy
rovy

Reputation: 2647

How to change influxdb storage location

I have installed influxdb in docker container (Kubernetes) and I have mounted a persistent volume to that container. But influxdb is not writing data to that volume. Can anyone please tell me steps, so that influxdb will write data in particular volume. Thanks

Upvotes: 5

Views: 21417

Answers (4)

Hansch
Hansch

Reputation: 121

For InfluxDB 2.0.4:

There is now a official image on Docker Hub. But unlike the quay.io/influxdb/influxdb:v2.0.4 image, where data is stored in /root/.influxdbv2, you have to mount /var/lib/influxdb2 as a volume.

Upvotes: 6

debuglevel
debuglevel

Reputation: 508

For InfluxDB 2.0:

In InfluxDB 2.0 (or 2.0.3 at least) the data directory has changed. Things are now stored under ~/.influxdbv2 by default (where ~ is /root/ in the quay.io/influxdb/influxdb:v2.0.3 image), which does not seem very docker-ish to me.

Actually, there are 2 data storages for bolt (various key-value configurations) and engine (the TSM database). If you like, you could change them via the --engine-path=/data/engine --bolt-path=/data/bolt paramaters to influxd.

The following docker-compose.yml should therefore store the InfluxDB2 data into a volume.

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:

Right now, there is no official _/influxdb:2.0 on Docker Hub (see also influxdb#16649). I hope that this image (once released) has some better defaults (quay.io/influxdb/influxdb:v2.0.3 does not even create an anonymous volume; any data is lost therefore once the container is removed). So please check Docker Hub if there is an image InfluxDB 2.0 before trying these things here.

Upvotes: 9

vishnu narayanan
vishnu narayanan

Reputation: 3953

Short Answer:

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

Modify $PWD with the path to external volume.

Long answer:

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

By default this will store the data in /var/lib/influxdb. All InfluxDB data lives in there. To make that a persistent volume (recommended):

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

Modify $PWD to the directory where you want to store data associated with the InfluxDB container.

For example,

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

This will store the influx data in /your/home on the host.

Upvotes: 11

Farhad Farahi
Farhad Farahi

Reputation: 39507

If you pulled official influxdb image from docker library, the default path for data files is:

/var/lib/influxdb

To verify, Run an standalone instance:

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

To check out the default config:

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

Then use vim influxdb.conf

To run influxdb with custom config:

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

Upvotes: 3

Related Questions