content/shared/influxctl/database/create.md
The influxctl database create command creates a new database with a specified
retention period in an {{< product-name omit=" Clustered" >}} cluster.
The retention period defines the maximum age of data retained in the database,
based on the timestamp of the data.
The retention period value is a time duration value made up of a numeric value
plus a duration unit. For example, 30d means 30 days.
A zero duration retention period is infinite and data will not expire.
The retention period value cannot be negative or contain whitespace.
{{< flex >}} {{% flex-content "half" %}}
{{% /flex-content %}} {{% flex-content "half" %}}
0d: infinite/none3d: 3 days6w: 6 weeks1mo: 1 month (30 days)1y: 1 year30d30d: 60 days2.5d: 60 hours{{% /flex-content %}} {{< /flex >}}
You can override the default partition template (%Y-%m-%d) of the database
with the --template-tag, --template-tag-bucket, and --template-timeformat
flags when you create the database.
Provide a time format using Rust strftime, partition by specific tag, or partition tag values
into a specified number of "buckets."
Each of these can be used as part of the partition template.
Be sure to follow partitioning best practices.
[!Note]
Always provide a time format when using custom partitioning
If defining a custom partition template for your database with any of the
--template-*flags, always include the--template-timeformatflag with a time format to use in your partition template. Otherwise, InfluxDB omits time from the partition template and won't compact partitions.
[!Warning]
Wait before writing to a new database with the same name as a deleted database
After deleting a database from your {{% product-name omit=" Clustered" %}} cluster, you can reuse the name to create a new database, but wait two to three minutes after deleting the previous database before writing to the new database to allow write caches to clear.
influxctl database create [flags] <DATABASE_NAME>
| Argument | Description |
|---|---|
| DATABASE_NAME | InfluxDB database name |
| Flag | Description | |
|---|---|---|
--retention-period | Database retention period (default is 0s, infinite) | |
--max-tables | Maximum tables per database (default is 500, 0 uses default) | |
--max-columns | Maximum columns per table (default is 250, 0 uses default) | |
--template-tag | Tag to add to partition template (can include multiple of this flag) | |
--template-tag-bucket | Tag and number of buckets to partition tag values into separated by a comma--for example: tag1,100 (can include multiple of this flag) | |
--template-timeformat | Timestamp format for partition template (default is %Y-%m-%d) | |
-h | --help | Output command help |
{{% caption %}}
Also see influxctl global flags.
{{% /caption %}}
influxctl database create mydb
influxctl database create \
--retention-period 30d \
mydb
influxctl database create \
--max-tables 200 \
--max-columns 150 \
mydb
The following example creates a new mydb database and applies a partition
template that partitions by two tags (room and sensor-type) and by day using
the time format %Y-%m-%d:
influxctl database create \
--template-tag room \
--template-tag sensor-type \
--template-tag-bucket customerID,1000 \
--template-timeformat '%Y-%m-%d' \
mydb
For more information about custom partitioning, see Manage data partitioning.
{{% expand "View command updates" %}}
--template-tag-bucket flag to group tag values into buckets
and partition by each tag bucket.--template-tag and --template-timeformat flags that define
a custom partition template for a database.{{% /expand %}}