Fixes #8819. Previously, the process of dropping expired shards according to the retention policy duration, was managed by two independent goroutines in the retention policy service. This behaviour was introduced in #2776, at a time when there were both data and meta nodes in the OSS codebase. The idea was that only the leader meta node would run the meta data deletions in the first goroutine, and all other nodes would run the local deletions in the second goroutine. InfluxDB no longer operates in that way and so we ended up with two independent goroutines that were carrying out an action that was really dependent on each other. If the second goroutine runs before the first then it may not see the meta data changes indicating shards should be deleted and it won't delete any shards locally. Shortly after this the first goroutine will run and remove the meta data for the shard groups. This results in a situation where it looks like the shards have gone, but in fact they remain on disk (and importantly, their series within the index) until the next time the second goroutine runs. By default that's 30 minutes. In the case where the shards to be removed would have removed the last occurences of some series, then it's possible that if the database was already at its maximum series limit (or tag limit for that matter), no further new series can be inserted. |
||
|---|---|---|
| .github | ||
| .hooks | ||
| client | ||
| cmd | ||
| coordinator | ||
| etc | ||
| importer | ||
| influxql | ||
| internal | ||
| man | ||
| models | ||
| monitor | ||
| pkg | ||
| prometheus | ||
| query | ||
| releng | ||
| scripts | ||
| services | ||
| stress | ||
| tcp | ||
| tests | ||
| toml | ||
| tsdb | ||
| uuid | ||
| .dockerignore | ||
| .gitignore | ||
| .mention-bot | ||
| CHANGELOG.md | ||
| CODING_GUIDELINES.md | ||
| CONTRIBUTING.md | ||
| Dockerfile_build_ubuntu32 | ||
| Dockerfile_build_ubuntu64 | ||
| Dockerfile_build_ubuntu64_git | ||
| Dockerfile_build_ubuntu64_go19 | ||
| Dockerfile_test_ubuntu32 | ||
| Godeps | ||
| LICENSE | ||
| LICENSE_OF_DEPENDENCIES.md | ||
| QUERIES.md | ||
| README.md | ||
| TODO.md | ||
| appveyor.yml | ||
| build.py | ||
| build.sh | ||
| circle-test.sh | ||
| circle.yml | ||
| errors.go | ||
| gobuild.sh | ||
| influxdb.go | ||
| nightly.sh | ||
| node.go | ||
| test.sh | ||
README.md
InfluxDB

An Open-Source Time Series Database
InfluxDB is an open source time series database with no external dependencies. It's useful for recording metrics, events, and performing analytics.
Features
- Built-in HTTP API so you don't have to write any server side code to get up and running.
- Data can be tagged, allowing very flexible querying.
- SQL-like query language.
- Simple to install and manage, and fast to get data in and out.
- It aims to answer queries in real-time. That means every data point is indexed as it comes in and is immediately available in queries that should return in < 100ms.
Installation
We recommend installing InfluxDB using one of the pre-built packages. Then start InfluxDB using:
service influxdb startif you have installed InfluxDB using an official Debian or RPM package.systemctl start influxdbif you have installed InfluxDB using an official Debian or RPM package, and are running a distro withsystemd. For example, Ubuntu 15 or later.$GOPATH/bin/influxdif you have built InfluxDB from source.
Getting Started
Create your first database
curl -XPOST "http://localhost:8086/query" --data-urlencode "q=CREATE DATABASE mydb"
Insert some data
curl -XPOST "http://localhost:8086/write?db=mydb" \
-d 'cpu,host=server01,region=uswest load=42 1434055562000000000'
curl -XPOST "http://localhost:8086/write?db=mydb" \
-d 'cpu,host=server02,region=uswest load=78 1434055562000000000'
curl -XPOST "http://localhost:8086/write?db=mydb" \
-d 'cpu,host=server03,region=useast load=15.4 1434055562000000000'
Query for the data
curl -G "http://localhost:8086/query?pretty=true" --data-urlencode "db=mydb" \
--data-urlencode "q=SELECT * FROM cpu WHERE host='server01' AND time < now() - 1d"
Analyze the data
curl -G "http://localhost:8086/query?pretty=true" --data-urlencode "db=mydb" \
--data-urlencode "q=SELECT mean(load) FROM cpu WHERE region='uswest'"
Documentation
- Read more about the design goals and motivations of the project.
- Follow the getting started guide to learn the basics in just a few minutes.
- Learn more about InfluxDB's key concepts.
Contributing
If you're feeling adventurous and want to contribute to InfluxDB, see our contributing doc for info on how to make feature requests, build from source, and run tests.
Looking for Support?
InfluxDB offers a number of services to help your project succeed. We offer Developer Support for organizations in active development, Managed Hosting to make it easy to move into production, and Enterprise Support for companies requiring the best response times, SLAs, and technical fixes. Visit our support page or contact sales@influxdb.com to learn how we can best help you succeed.