Home MonitoringInfluxDB How To Create a Database on InfluxDB 1.7 & 2.0

How To Create a Database on InfluxDB 1.7 & 2.0

by schkn

This tutorial details all the steps to create a database on InfluxDB 1.7.x and 2.x.

Created on 2013 by InfluxData, InfluxDB is probably one of the most popular time series databases available.

Popular for its very high ingestion rate, InfluxDB stores millions of data points in structures called databases.

In those databases, data are arranged by measurements and indexed later on by the popular TSI, standing for Time Series Index.

InfluxDB database internals

In today’s tutorial, we are going to see the different ways to create a database on InfluxDB.

This tutorial covers both InfluxDB 1.7.x and InfluxDB 2.x versions as the two versions are currently co-existing for now.

InfluxDB tutorial up to date

Here is how to create a database on InfluxDB.

I – Creating an InfluxDB Database using the CLI

The first way and easiest way to create an InfluxDB database is through the InfluxDB CLI.

a – Launch the InfluxDB CLI

On InfluxDB 1.7.x, simply launch the influx binary.

$ influx
Connected to http://localhost:8086 version 1.7.7
InfluxDB shell version: 1.7.7

b – Verify that you have admin rights on the InfluxDB server

This step only applies if you have enabled the authentication on your InfluxDB server.

It means that you connected to the InfluxDB CLI by specifying your username and password.

To verify that you have admin rights on InfluxDB, issue the following command.

$ SHOW USERS
user    admin
----    -----
admin   true

If you are not admin, ask your system administrator to grant you the permissions.

c – Create your InfluxDB database

The “CREATE DATABASE” command takes multiple arguments. Here is the syntax.

CREATE DATABASE <database_name> [WITH [DURATION <duration>] [REPLICATION <n>] [SHARD DURATION <duration>] [NAME <retention-policy-name>]]

The database name is a mandatory parameter, but all of the other parameters are optional.

By default, InfluxDB uses a default retention policy called autogen.

Autogen keeps data forever (infinite retention policy) and the default shard duration is 168h, or 7 days.

InfluxDB retention policies autogen

Knowing that, here is a description of the different parameters used in the “CREATE DATABASE” command:

  • DURATION: sets the duration value of the “autogen” retention policy for the current database.
$ CREATE DATABASE "example" WITH DURATION 1h
InfluxDB retention policies with duration
  • REPLICATION: in case you are using an InfluxDB cluster, your databases will probably be replicated among multiple different shards. The default is set to 1, but feel free to tweak this parameter if you are working with multiple different instances of InfluxDB.
  • SHARD DURATION: defines the minimum duration until your InfluxDB server starts collecting data is a new shard. It is quite important to correctly setup this parameter if you are working with your own custom retention policies.
  • NAME: the name of your database
InfluxDB retention policies with shard duration

II – Create an InfluxDB database using the InfluxDB API

Alternatively, there is another way to create an InfluxDB database which is by sending a HTTP request to the InfluxDB REST API.

a – Using cURL

If you don’t have cURL already, make sure to install it first.

$ sudo apt-get install curl
$ curl --help

Make sure that the HTTP API is enabled in the InfluxDB configuration file.

$ sudo vi /etc/influxdb/influxdb.conf

[http]
  # Determines whether HTTP endpoint is enabled.
  enabled = true
  
  # The bind address used by the HTTP service.
  bind-address = ":8086"

Restart your InfluxDB server is necessary, and create your database via the /query endpoint.

$ sudo systemctl restart influxdb
$ curl -XPOST 'http://localhost:8086/query' --data-urlencode 'q=CREATE DATABASE "devconnected"'

{"results":[{"statement_id":0}]}

If you are using authentication, you need to specify the user password combination.

$ curl --user admin:password -XPOST 'http://localhost:8086/query' --data-urlencode 'q=CREATE DATABASE "devconnected"'

{"results":[{"statement_id":0}]}

If you are using InfluxDB with HTTPS on self-signed certificates, you need the cURL -k option for unsafe checks.

$ curl --user admin:password -k -XPOST 'http://localhost:8086/query' --data-urlencode 'q=CREATE DATABASE "devconnected"'

{"results":[{"statement_id":0}]}

Verify that your database is correctly created via the InfluxDB CLI.

$ influx
Connected to http://localhost:8086 version 1.7.7
InfluxDB shell version: 1.7.7

> SHOW DATABASES
name: databases
name
----
_internal
devconnected

Great! You have successfully created a database on InfluxDB!

If you prefer to use Postman, here’s how to do it.

b – Using Postman

For this tutorial, let’s assume that you already have Postman installed on your computer.

First, unblock the “SSL Certificate Verification” option on Postman.

Head over to Settings > General, and uncheck the SSL verification option.

Postman settings

Create a POST request to the /query endpoint.

In the body panel, select the “x-www-form-urlencoded” option, and put the following values.

Create an InfluxDB database from Postman

In the Authorization panel, select a “Basic Auth” option, and fill the following fields with the correct credentials.

Postman credentials for InfluxDB database

Click on “Send” and verify that you are getting the correct HTTP response.

InfluxDB database successfully created in Postman

Check again on the InfluxDB server that the database was correctly created.

$ influx
Connected to http://localhost:8086 version 1.7.7
InfluxDB shell version: 1.7.7

> SHOW DATABASES
name: databases
name
----
_internal
devconnected
postman

Great!

You have successfully created an InfluxDB database from Postman.

III – Create a Database using InfluxDB clients

In order to interact with the InfluxDB HTTP API, developers have created multiple clients in different languages: Java, Javascript, Go, .NET, Perl and many others.

Using those clients is another way to create an InfluxDB database (if the developers exposed a method for it of course)

a – Creating a database in Java

As an example, the influxdb-java library allows you to create an InfluxDB database very easily.

In your Java project, import the influxdb-java package in your pom file.

<dependency>
    <groupId>org.influxdb</groupId>
    <artifactId>influxdb-java</artifactId>
    <version>2.15</version>
</dependency>

Next, connect to your InfluxDB instance, and create a database.

InfluxDB influxDB = InfluxDBFactory.connect("http://localhost:8086", "admin", "password");

influxDB.createDatabase("java-database");
influxDB.createRetentionPolicy(
  "one-year", "java-database", "365d", 1, true);

Again, make sure that your database was created successfully using the InfluxDB CLI.

$ influx
Connected to http://localhost:8086 version 1.7.7
InfluxDB shell version: 1.7.7

> SHOW DATABASES
name: databases
name
----
_internal
java-database

Awesome, you created an InfluxDB database using a Java client library.

b – Create a database in Javascript / NodeJS

As a second example, let’s see how you can create an InfluxDB database using Javascript and the Node runtime.

For this, we are going to use the node-influx library available on Github (developed by Ben Evans and Connor Peet)

First, install the node module to your project.

$ npm install --save influx

Database creation is done by using the createDatabase method available in the API.

const Influx = require('influx');
const influx = new Influx.InfluxDB({
  host: 'localhost',
  port: 8086,
  username: 'admin',
  password: 'password'
})

// Create an InfluxDB database
influx.createDatabase('node-database')

Did you know?

This is the library that I used to design Stream Highlights, a real time highlights detection platform for Twitch.

Finally, make sure that your database was successfully created.

$ influx
Connected to http://localhost:8086 version 1.7.7
InfluxDB shell version: 1.7.7

> SHOW DATABASES
name: databases
name
----
_internal
node-database

IV – Create a database with the InfluxDB 2.0 CLI

At the beginning of the year, InfluxDB 2.0 was announced in alpha and the product is now actively developed.

Instead of having four different tools, also known as the TICK (Telegraf, InfluxDB, Chronograf, Kapacitor) stack, InfluxDB 2.0 will be one single platform for you to perform all your tasks.

In InfluxDB 2.0, databases no longer exist, they are replaced by buckets.

Conceptually, buckets are pretty much like databases, but we will need different commands to create them.

a – Get a secure token

If you try to execute a command with the Influx CLI without being authorized, you will get the following message.

InfluxDB 2.0 unauthorized access

On InfluxDB 2.0, you have to specify a token when performing a request.

Head over to your InfluxDB 2.0 platform located at http://localhost:9999 by default.

Click on “Settings

InfluxDB 2.0 Settings panel

Then click on the “Tokens” option.

InfluxDB 2.0 Tokens panel

If a token already exists, simply click on it, and copy the token shown in the popup window.

Token in InfluxDB 2.0

Make sure that your token has at least the “read” permission for the “orgs” section, and the “write” for the “buckets” section.

Permissions in InfluxDB 2.0

If your token doesn’t exist already, you can generate one by clicking on the “Generate” option located at the top-right corner of the window.

Generating a token in InfluxDB 2.0

Click on “All Access Token”, give a name to your token, and you are ready to go!

Choosing a name for your token

b – Get your organization ID

In order to create a bucket, you will need your organization ID.

To find your organization ID, execute the following command.

$ influx org find -t yoursecrettoken
ID                     Name
044dc0bcf1860000       devconnected

c – Create your bucket

Now that your have your organization ID, you can create your bucket.

Here’s the command :

$ influx bucket create -n bucketname --org-id 044dc0bcf1860000 -r 10h -t yoursecrettoken

In this command, multiple flags are specified:

  • -n : the name of the bucket
  • –org-id : the organization ID (that you previously grabbed)
  • -r : the bucket retention time in nanoseconds
  • -t : the secret token
Creating an InfluxDB database on InfluxDB 2.0

Make sure that your bucket was correctly created with the following command.

$ influx bucket find -t yoursecrettoken

V – Create a database using the InfluxDB 2.0 UI

If you prefer clicking buttons than running commands in a terminal, this method is for you.

Click on “Settings” > “Bucket”

InfluxDB 2.0 bucket view

Click on the “Create bucket” option at the top-right corner of the window.

Creating a custom database in InfluxDB 2.0

Give a name to your bucket, and define a retention policy for it. I chose 10 hours in the previous example.

Simply click on “Create” to end the creation process.

Awesome, your bucket has been created!

InfluxDB 2.0 bucket list

VI – Conclusion

In this tutorial, we detailed all the different ways to create an InfluxDB database or bucket depending on the version that you are using.

It you need more details about InfluxDB, make sure to read the definitive guide to InfluxDB.

Concepts detailed are for InfluxDB 1.7.x, but most of them still apply if you are using InfluxDB 2.0.

If you need more practical tutorials, here’s how you can monitor SSH hackers on a Linux server using InfluxDB.

Until then, have fun, as always.

You may also like

3 comments

Links 13/8/2019: KDevelop 5.4.1 and DragonFly 5.6.2 Released | Techrights August 13, 2019 - 10:18 am

[…] How To Create a Database on InfluxDB 1.7 & 2.0 […]

Reply
jim December 12, 2021 - 2:20 pm

Trying to create database with CURL throws an error: {“results”:[{“statement_id”:0,”error”:”not implemented: CREATE DATABASE”}]}

Reply
Alavi July 22, 2022 - 10:04 am

Thank you, man. You saved lots of searching times for me.

Reply

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.