docs-v2/content/enterprise_influxdb/v1.6/administration/cluster-commands.md

1061 lines
37 KiB
Markdown
Raw Normal View History

2020-07-30 21:39:59 +00:00
---
title: InfluxDB Enterprise cluster management utilities
description: Use the "influxd-ctl" and "influx" command line tools to interact with your InfluxDB Enterprise cluster and data.
aliases:
- /enterprise/v1.6/features/cluster-commands/
menu:
enterprise_influxdb_1_6:
name: Cluster management utilities
weight: 30
parent: Administration
---
InfluxDB Enterprise includes two utilities for interacting with and managing your clusters.
The [`influxd-ctl`](#influxd-ctl-cluster-management-utility) utility provides commands
for managing your InfluxDB Enterprise clusters.
The [`influx` command line interface](#influx-command-line-interface-cli) is used
for interacting with and managing your data.
#### Content
* [`influxd-ctl` cluster management utility](#influxd-ctl-cluster-management-utility)
* [Syntax](#syntax)
* [Global options](#global-options)
* [`-auth-type`](#auth-type-none-basic-jwt)
* [`-bind-tls`](#bind-tls)
* [`-config`](#config-path-to-configuration-file)
* [`-pwd`](#pwd-password)
* [`-k`](#k)
* [`-secret`](#secret-jwt-shared-secret)
* [`-user`](#user-username)
* [Commands](#commands)
* [`add-data`](#add-data)
* [`add-meta`](#add-meta)
* [`backup`](#backup)
* [`copy-shard`](#copy-shard)
* [`copy-shard-status`](#copy-shard-status)
* [`entropy`](#entropy)
* [`join`](#join)
* [`kill-copy-shard`](#kill-copy-shard)
* [`leave`](#leave)
* [`remove-data`](#remove-data)
* [`remove-meta`](#remove-meta)
* [`remove-shard`](#remove-shard)
* [`restore`](#restore)
* [`show`](#show)
* [`show-shards`](#show-shards)
* [`update-data`](#update-data)
* [`token`](#token)
* [`truncate-shards`](#truncate-shards)
* [`influx` command line interface (CLI)](#influx-command-line-interface-cli)
## `influxd-ctl` cluster management utility
Use the `influxd-ctl` cluster management utility to manage your cluster nodes, back up and restore data, and rebalance clusters.
The `influxd-ctl` utility is available on all [meta nodes](/enterprise_influxdb/v1.6/concepts/glossary/#meta-node).
### Syntax
```
influxd-ctl [ global-options ] <command> [ arguments ]
```
### Global options
Optional arguments are in brackets.
#### `[ -auth-type [ none | basic | jwt ] ]`
Specify the type of authentication to use. Default value is `none`.
#### `[ -bind <hostname>:<port> ]`
Specify the bind HTTP address of a meta node to connect to. Default value is `localhost:8091`.
#### `[ -bind-tls ]`
Use TLS. If you have enabled HTTPS, you MUST use this argument in order to connect to the meta node.
#### `[ -config '<path-to-configuration-file> ]'`
Specify the path to the configuration file.
#### `[ -pwd <password> ]`
Specify the users password. This argument is ignored if `-auth-type basic` isnt specified.
#### `[ -k ]`
Skip certificate verification; use this argument with a self-signed certificate. `-k` is ignored if `-bind-tls` isn't specified.
#### `[ -secret <JWT-shared-secret> ]`
Specify the JSON Web Token (JWT) shared secret. This argument is ignored if `-auth-type jwt` isn't specified.
#### `[ -user <username> ]`
Specify the users username. This argument is ignored if `-auth-type basic` isnt specified.
### Examples
The following examples use the `influxd-ctl` utility's [`show` option](#show).
#### Binding to a remote meta node
```
$ influxd-ctl -bind meta-node-02:8091 show
```
The `influxd-ctl` utility binds to the meta node with the hostname `meta-node-02` at port `8091`.
By default, the tool binds to the meta node with the hostname `localhost` at port `8091`.
#### Authenticating with JWT
```
$ influxd-ctl -auth-type jwt -secret oatclusters show
```
The `influxd-ctl` utility uses JWT authentication with the shared secret `oatclusters`.
If authentication is enabled in the cluster's [meta node configuration files](/enterprise_influxdb/v1.6/administration/config-meta-nodes#auth-enabled-false) and [data node configuration files](/enterprise_influxdb/v1.6/administration/config-data-nodes#meta-auth-enabled-false) and the `influxd-ctl` command does not include authentication details, the system returns:
```
Error: unable to parse authentication credentials.
```
If authentication is enabled and the `influxd-ctl` command provides the incorrect shared secret, the system returns:
```
Error: signature is invalid.
```
#### Authenticating with basic authentication
To authenticate a user with basic authentication, use the `-auth-type basic` option on the `influxd-ctl` utility, with the `-user` and `-password` options.
In the following example, the `influxd-ctl` utility uses basic authentication for a cluster user.
```
$ influxd-ctl -auth-type basic -user admini -pwd mouse show
```
If authentication is enabled in the cluster's [meta node configuration files](/enterprise_influxdb/v1.6/administration/config-meta-nodes#auth-enabled-false) and [data node configuration files](/enterprise_influxdb/v1.6/administration/config-data-nodes#meta-auth-enabled-false) and the `influxd-ctl` command does not include authentication details, the system returns:
```
Error: unable to parse authentication credentials.
```
If authentication is enabled and the `influxd-ctl` command provides the incorrect username or password, the system returns:
```
Error: authorization failed.
```
## Commands
### `add-data`
Adds a data node to a cluster.
By default, `influxd-ctl` adds the specified data node to the local meta node's cluster.
Use `add-data` instead of the [`join` argument](#join) when performing a [production installation](/enterprise_influxdb/v1.6/install-and-deploy/production_installation/data_node_installation/) of an InfluxDB Enterprise cluster.
#### Syntax
```
add-data <data-node-TCP-bind-address>
```
Resources: [Production installation](/enterprise_influxdb/v1.6/install-and-deploy/production_installation/data_node_installation/)
#### Examples
##### Adding a data node to a cluster using the local meta node
In the following example, the `add-data` command contacts the local meta node running at `localhost:8091` and adds a data node to that meta node's cluster.
The data node has the hostname `cluster-data-node` and runs on port `8088`.
```
$ influxd-ctl add-data cluster-data-node:8088
Added data node 3 at cluster-data-node:8088
```
##### Adding a data node to a cluster using a remote meta node
In the following example, the command contacts the meta node running at `cluster-meta-node-01:8091` and adds a data node to that meta node's cluster.
The data node has the hostname `cluster-data-node` and runs on port `8088`.
```
$ influxd-ctl -bind cluster-meta-node-01:8091 add-data cluster-data-node:8088
Added data node 3 at cluster-data-node:8088
```
### `add-meta`
Adds a meta node to a cluster.
By default, `influxd-ctl` adds the specified meta node to the local meta node's cluster.
Use `add-meta` instead of the [`join` argument](#join) when performing a [Production Installation](/enterprise_influxdb/v1.6/install-and-deploy/production_installation/meta_node_installation/) of an InfluxDB Enterprise cluster.
Resources: [Production installation](/enterprise_influxdb/v1.6/install-and-deploy/production_installation/data_node_installation/)
#### Syntax
```
influxd-ctl add-meta <meta-node-HTTP-bind-address>
```
#### Examples
##### Adding a meta node to a cluster using the local meta node
In the following example, the `add-meta` command contacts the local meta node running at `localhost:8091` and adds a meta node to that local meta node's cluster.
The added meta node has the hostname `cluster-meta-node-03` and runs on port `8091`.
```
$ influxd-ctl add-meta cluster-meta-node-03:8091
Added meta node 3 at cluster-meta-node:8091
```
##### Adding a meta node to a cluster using a remote meta node**
In the following example, the `add-meta` command contacts the meta node running at `cluster-meta-node-01:8091` and adds a meta node to that meta node's cluster.
The added meta node has the hostname `cluster-meta-node-03` and runs on port `8091`.
```
$ influxd-ctl -bind cluster-meta-node-01:8091 add-meta cluster-meta-node-03:8091
Added meta node 3 at cluster-meta-node-03:8091
```
#### `backup`
Creates a backup of a cluster's [metastore](/influxdb/v1.6/concepts/glossary/#metastore) and [shard](/influxdb/v1.6/concepts/glossary/#shard) data at that point in time and stores the copy in the specified directory.
Backups are incremental by default; they create a copy of the metastore and shard data that have changed since the previous incremental backup.
If there are no existing incremental backups, the system automatically performs a complete backup.
#### Syntax
```
influxd-ctl backup [ -db <database> | -from <data-node-TCP-bind-address> | -full | -rp <retention-policy> | -shard <shard-id> ] <backup-directory>
```
##### Arguments
Optional arguments are in brackets.
#### [ `-db <db_name>` ]
Name of the single database to back up.
#### [ `-from <data-node-TCP-address>` ]
TCP address of the target data node.
#### [ `-full` ]
Perform a [full](/enterprise_influxdb/v1.6/administration/backup-and-restore/#backup) backup.
#### [ `-rp <rp_name>` ]
Name of the single [retention policy](/influxdb/v1.6/concepts/glossary/#retention-policy-rp) to back up (requires the `-db` flag).
#### [ `-shard <shard_ID>` ]
Identifier of the shard to back up.
> Restoring a `-full` backup and restoring an incremental backup require different syntax.
To prevent issues with [`restore`](#restore), keep `-full` backups and incremental backups in separate directories.
Resources: [Backing up and restoring in InfluxDB Enterprise ](/enterprise_influxdb/v1.6/administration/backup-and-restore/)
#### Examples
##### Performing an incremental backup
In the following example, the command performs an incremental backup and stores it in the current directory.
If there are any existing backups the current directory, the system performs an incremental backup.
If there arent any existing backups in the current directory, the system performs a complete backup of the cluster.
```
$ influxd-ctl backup .
```
Output:
```
Backing up meta data... Done. 421 bytes transferred
Backing up node cluster-data-node:8088, db telegraf, rp autogen, shard 4... Done. Backed up in 903.539567ms, 307712 bytes transferred
Backing up node cluster-data-node:8088, db _internal, rp monitor, shard 1... Done. Backed up in 138.694402ms, 53760 bytes transferred
Backing up node cluster-data-node:8088, db _internal, rp monitor, shard 2... Done. Backed up in 101.791148ms, 40448 bytes transferred
Backing up node cluster-data-node:8088, db _internal, rp monitor, shard 3... Done. Backed up in 144.477159ms, 39424 bytes transferred
Backed up to . in 1.293710883s, transferred 441765 bytes
$ ls
20160803T222310Z.manifest 20160803T222310Z.s1.tar.gz 20160803T222310Z.s3.tar.gz
20160803T222310Z.meta 20160803T222310Z.s2.tar.gz 20160803T222310Z.s4.tar.gz
```
#### Performing a full backup
In the following example, the `backup` command performs a full backup of the cluster and stores the backup in the existing directory `backup_dir`.
```
$ influxd-ctl backup -full backup_dir
```
Output:
```
Backing up meta data... Done. 481 bytes transferred
Backing up node cluster-data-node:8088, db _internal, rp monitor, shard 1... Done. Backed up in 33.207375ms, 238080 bytes transferred
Backing up node cluster-data-node:8088, db telegraf, rp autogen, shard 2... Done. Backed up in 15.184391ms, 95232 bytes transferred
Backed up to backup_dir in 51.388233ms, transferred 333793 bytes
~# ls backup_dir
20170130T184058Z.manifest
20170130T184058Z.meta
20170130T184058Z.s1.tar.gz
20170130T184058Z.s2.tar.gz
```
#### `copy-shard`
Copies a [shard](/influxdb/v1.6/concepts/glossary/#shard) from a source data node to a destination data node.
#### Syntax
```
influxd-ctl copy-shard <data-node-source-TCP-address> <data-node-destination-TCP-address> <shard-id>
```
Resources: [Rebalancing InfluxDB Enterprise clusters](/enterprise_influxdb/v1.6/guides/rebalance/)
#### Examples
###### Copying a shard from one data node to another data node
In the following example, the `copy-shard` command copies the shard with the id `22` from the data node running at `cluster-data-node-01:8088` to the data node running at `cluster-data-node-02:8088`.
```
$ influxd-ctl copy-shard cluster-data-node-01:8088 cluster-data-node-02:8088 22'
Copied shard 22 from cluster-data-node-01:8088 to cluster-data-node-02:8088
```
#### `copy-shard-status`
Shows all in-progress [copy shard](#copy-shard) operations, including the shard's source node, destination node, database, [retention policy](/influxdb/v1.6/concepts/glossary/#retention-policy-rp), shard ID, total size, current size, and the operation's start time.
#### Syntax
```
influxd-ctl copy-shard-status
```
#### Examples
###### Displaying all in-progress copy-shard operations
In this example, the `copy-shard-status` command returns one in-progress copy-shard operation.
The system is copying shard `34` from `cluster-data-node-02:8088` to `cluster-data-node-03:8088`.
Shard `34` is associated with the `telegraf` database and the `autogen` retention policy.
The `TotalSize` and `CurrentSize` columns are reported in bytes.
```
$ influxd-ctl copy-shard-status
Source Dest Database Policy ShardID TotalSize CurrentSize StartedAt
cluster-data-node-02:8088 cluster-data-node-03:8088 telegraf autogen 34 119624324 119624324 2017-06-22 23:45:09.470696179 +0000 UTC
```
#### `entropy`
Manage entropy and the [anti-entropy](/enterprise_influxdb/v1.6/administration/anti-entropy/) process among shards in a cluster.
It includes the following subcommands:
**`show`**
Lists shards that are in an inconsistent state and in need of repair as well as
shards currently in the repair queue.
**`repair`**
Queues a shard for repair.
It requires a Shard ID which is provided in the `influxd-ctl entropy show` output.
**`kill-repair`**
Removes a shard from the repair queue.
It requires a Shard ID which is provided in the `influxd-ctl entropy show` output.
#### Syntax
```
influxd-ctl entropy <subcommand> [<arguments>]
```
#### Examples
###### Displaying all shards with entropy
In this example, the `entropy show` command returns all shards with detected entropy.
```
$ influxd-ctl entropy show
Entropy
==========
ID Database Retention Policy Start End Expires Status
21179 statsdb 1hour 2017-10-09 00:00:00 +0000 UTC 2017-10-16 00:00:00 +0000 UTC 2018-10-22 00:00:00 +0000 UTC diff
25165 statsdb 1hour 2017-11-20 00:00:00 +0000 UTC 2017-11-27 00:00:00 +0000 UTC 2018-12-03 00:00:00 +0000 UTC diff
```
###### Adding a shard with entropy to the repair queue
In this example, the `entropy repair` command adds a shard with detected entropy to the repair queue.
The `repair` subcommand requires a Shard ID, which can be obtained from the `influxd-ctl entropy show` output.
```
$ influxd-ctl entropy repair 21179
Repair Shard 21179 queued
```
###### Remove a shard in the repair queue
In this example, the `entropy kill-repair` command removes a shard from the repair queue.
The `kill-repair` subcommand requires a Shard ID, which can be obtained from the `influxd-ctl entropy show` output.
```
$ influxd-ctl entropy kill-repair 21179
Shard 21179 removed from repair queue
```
> This only applies to shards in the repair queue.
> It does not cancel repairs on nodes that are in the process of being repaired.
> Once a repair has started, requests to cancel it are ignored.
#### `join`
Joins a meta node and/or data node to a cluster.
By default, `influxd-ctl` joins the local meta node and/or data node into a new cluster.
#### Syntax
```
influxd-ctl join [-v] <meta-node-HTTP-bind-address>
```
##### Arguments
Optional arguments are in brackets.
###### [ `-v` ]
Print verbose information about the join.
###### `<meta-node-HTTP-bind-address>`
Address of a meta node in an existing cluster.
Use this argument to add the un-joined meta node and/or data node to an existing cluster.
#### Examples
###### Joining a meta and data node into a cluster
In this example, the `join` command joins the meta node running at `cluster-node-03:8091` and the data node running at `cluster-node-03:8088` into a new cluster.
```
$ influxd-ctl join
Joining meta node at localhost:8091
Searching for meta node on cluster-node-03:8091...
Searching for data node on cluster-node-03:8088...
Successfully created cluster
* Added meta node 1 at cluster-node-03:8091
* Added data node 2 at cluster-node-03:8088
To join additional nodes to this cluster, run the following command:
influxd-ctl join cluster-node-03:8091
```
###### Joining a meta and data node to an existing cluster
The command joins the meta node running at `cluster-node-03:8091` and the data node running at `cluster-node-03:8088` to an existing cluster.
The existing cluster includes the meta node running at `cluster-meta-node-02:8091`.
```
$ influxd-ctl join cluster-meta-node-02:8091
Joining meta node at cluster-meta-node-02:8091
Searching for meta node on cluster-node-03:8091...
Searching for data node on cluster-node-03:8088...
Successfully joined cluster
* Added meta node 3 at cluster-node-03:8091
* Added data node 4 at cluster-node-03:8088
```
###### Joining a meta node to an existing cluster
The command joins the meta node running at `cluster-meta-node-03:8091` to an existing cluster.
The existing cluster includes the meta node running at `cluster-meta-node-02:8091`.
The system doesn't join a data node to the cluster because it doesn't find a data node at `cluster-meta-node-03:8088`.
```
$ influxd-ctl join cluster-meta-node-02:8091
Joining meta node at cluster-meta-node-02:8091
Searching for meta node on cluster-meta-node-03:8091...
Searching for data node on cluster-meta-node-03:8088...
Successfully joined cluster
* Added meta node 18 at cluster-meta-node-03:8091
* No data node added. Run with -v to see more information
```
####### Joining a meta node to an existing cluster and show detailed information about the join
The command joins the meta node running at `cluster-meta-node-03:8091` to an existing cluster.
The existing cluster includes the meta node running at `cluster-meta-node-02:8091`.
The `-v` argument prints detailed information about the join.
```
$ influxd-ctl join -v meta-node-02:8091
Joining meta node at meta-node-02:8091
Searching for meta node on meta-node-03:8091...
Searching for data node on data-node-03:8088...
No data node found on data-node-03:8091!
If a data node is running on this host,
you may need to add it manually using the following command:
influxd-ctl -bind meta-node-02:8091 add-data <dataAddr:port>
Common problems:
* The influxd process is using a non-standard port (default 8088).
* The influxd process is not running. Check the logs for startup errors.
Successfully joined cluster
* Added meta node 18 at meta-node-03:8091
* No data node added. Run with -v to see more information
```
#### `kill-copy-shard`
Aborts an in-progress [`copy-shard`](#copy-shard) command.
#### Syntax
```
influxd-ctl kill-copy-shard <data-node-source-TCP-address> <data-node-destination-TCP-address> <shard-ID>
```
#### Examples
###### Stopping an in-progress `copy-shard` command
In this example, the `kill-copy-shard` command aborts the `copy-shard` command that was copying shard `39` from `cluster-data-node-02:8088` to `cluster-data-node-03:8088`.
```
$ influxd-ctl kill-copy-shard cluster-data-node-02:8088 cluster-data-node-03:8088 39
Killed shard copy 39 from cluster-data-node-02:8088 to cluster-data-node-03:8088
```
#### `leave`
Removes a meta node and/or data node from the cluster.
{{% warn %}}The `leave` argument is destructive; it erases all metastore information from meta nodes and all data from data nodes.
Use `leave` only if you want to *permanently* remove a node from a cluster.
{{% /warn %}}
#### Syntax
```
influxd-ctl leave [-y]
```
##### Arguments
Optional arguments are in brackets.
###### [ `-y` ]
Assume yes (`y`) to all prompts.
#### Examples
###### Removing a meta and data node from a cluster
In this example, the `leave` command removes the meta node running at `cluster-node-03:8091` and the data node running at `cluster-node-03:8088` from an existing cluster.
Here, we respond yes (`y`) to the two prompts that ask if we'd like to remove the data node and if we'd like to remove the meta node from the cluster.
```
$ influxd-ctl leave
Searching for data node on cluster-node-03:8088...
Remove data node cluster-node-03:8088 from the cluster [y/N]: y
Removed cluster-node-03:8088 from the cluster
Searching for meta node on cluster-node-03:8091...
Remove meta node cluster-node-03:8091 from the cluster [y/N]: y
Successfully left cluster
* Removed data node cluster-node-03:8088 from cluster
* Removed meta node cluster-node-03:8091 from cluster
```
###### Removing a meta and data node from a cluster and assume yes to all prompts
In this example, the `leave` command removes the meta node running at `cluster-node-03:8091` and the data node running at `cluster-node-03:8088` from an existing cluster.
Because we specify the `-y` flag, the system assumes that we'd like to remove both the data node and meta node from the cluster and does not prompt us for responses.
```
$ influxd-ctl leave -y
Searching for data node on cluster-node-03:8088...
Removed cluster-node-03:8088 from the cluster
Searching for meta node on cluster-node-03:8091...
Successfully left cluster
* Removed data node cluster-node-03:8088 from cluster
* Removed meta node cluster-node-03:8091 from cluster
```
###### Removing a meta node from a cluster
In this example, the `leave` command removes the meta node running at `cluster-meta-node-03:8091` from an existing cluster.
The system doesn't remove a data node from the cluster because it doesn't find a data node running at `cluster-meta-node-03:8088`.
```
$ influxd-ctl leave
Searching for data node on cluster-meta-node-03:8088...
* No data node found.
Searching for meta node on cluster-meta-node-03:8091...
Remove meta node cluster-meta-node-03:8091 from the cluster [y/N]: y
Successfully left cluster
* No data node removed from cluster
* Removed meta node cluster-meta-node-03:8091 from cluster
```
#### `remove-data`
Removes a data node from a cluster.
Use `remove-data` instead of the [`leave`](#leave) argument if you set up your InfluxDB Enterprise cluster with the [Production Installation](/enterprise_influxdb/v1.6/install-and-deploy/production_installation/) process.
{{% warn %}}The `remove-data` argument is destructive; it erases all data from the specified data node.
Use `remove-data` only if you want to *permanently* remove a data node from a cluster.
{{% /warn %}}
#### Syntax
```
influxd-ctl remove-data [ -force ] <data-node-TCP-bind-address>
```
##### Arguments
Optional arguments are in brackets.
###### [ `-force` ]
Forces the removal of the data node.
Use `-force` if the data node process is not running.
#### Examples
###### Removing a data node from a cluster
In this example, the `remove-data` command removes a data node running at `cluster-data-node-03:8088` from an existing cluster.
```
~# influxd-ctl remove-data cluster-data-node-03:8088
Removed data node at cluster-data-node-03:8088
```
#### `remove-meta`
Removes a meta node from the cluster.
Use `remove-meta` instead of the [`leave`](#leave) command if you set up your InfluxDB Enterprise cluster with the [Production Installation](/enterprise_influxdb/v1.6/install-and-deploy/production_installation/) process.
{{% warn %}}The `remove-meta` argument is destructive; it erases all metastore information from the specified meta node.
Use `remove-meta` only if you want to *permanently* remove a meta node from a cluster.
{{% /warn %}}
#### Syntax
```
influxd-ctl remove-meta [ -force | -tcpAddr <meta-node-TCP-bind_address> | -y ] <meta-node-HTTP-bind-address>
```
##### Arguments
Optional arguments are in brackets.
###### [ `-force` ]
Forces the removal of the meta node.
Use `-force` if the meta node process if not running, and the node is not reachable and unrecoverable.
If a meta node restarts after being `-force` removed, it may interfere with the cluster.
This argument requires the `-tcpAddr` argument.
###### [ `-tcpAddr <meta-node-TCP-bind_address>` ]
The TCP address of the meta node to remove from the cluster.
Use this argument with the `-force` argument.
###### [ `-y` ]
Assumes `Yes` to all prompts.
#### Examples
###### Removing a meta node from a cluster
In this example, the `remove-meta` command removes the meta node at `cluster-meta-node-02:8091` from an existing cluster.
In the example, we respond yes (`y`) to the prompt that asks if we'd like to remove the meta node from the cluster.
```
$ influxd-ctl remove-meta cluster-meta-node-02:8091
Remove cluster-meta-node-02:8091 from the cluster [y/N]: y
Removed meta node at cluster-meta-node-02:8091
```
###### Forcefully removing an unresponsive meta node from a cluster
In this example, the `remove-data` command forcefully removes the meta node running at the TCP address `cluster-meta-node-02:8089` and HTTP address `cluster-meta-node-02:8091` from the cluster.
In the example, we respond yes (`y`) to the prompt that asks if we'd like to force remove the meta node from the cluster.
Note that if the meta node at `cluster-meta-node-02:8091` restarts, it may interfere with the cluster.
Only perform a force removal of a meta node if the node is not reachable and unrecoverable.
```
$ influxd-ctl remove-meta -force -tcpAddr cluster-meta-node-02:8089 cluster-meta-node-02:8091
Force remove cluster-meta-node-02:8091 from the cluster [y/N]:y
Removed meta node at cluster-meta-node-02:8091
```
#### `remove-shard`
Removes a shard from a data node.
Removing a shard is an irrecoverable, destructive action; please be cautious with this command.
#### Syntax
```
influxd-ctl remove-shard <data-node-source-TCP-address> <shard-id>
```
Resources: [Cluster Rebalance](/enterprise_influxdb/v1.6/guides/rebalance/)
#### Examples
###### Removing a shard from a running data node
In this example, the `remove-shard` command removes shard `31` from the data node running at `cluster-data-node-02:8088`.
```
~# influxd-ctl remove-shard cluster-data-node-02:8088 31
Removed shard 31 from cluster-data-node-02:8088
```
#### `restore`
Restore a [backup](#backup) to an existing cluster or a new cluster.
> **Note:** The existing cluster must contain no data in the databases affected by the restore.
Restore supports both full backups and incremental backups; the syntax for a restore differs depending on the backup type.
#### Syntax
```
influxd-ctl restore [ -db <db_name> | -full | -list | -newdb <newdb_name> | -newrf <newrf_integer> | -newrp <newrp_name> | -rp <rp_name> | shard <shard_ID> ] ( <path-to-backup-manifest-file> | <path-to-backup-directory> )
```
The `restore` command must specify either the `path-to-backup-manifest-file` or the `path-to-backup-directory`.
If the restore uses the `-full` argument, specify the `path-to-backup-manifest-file`.
If the restore doesn't use the `-full` argument, specify the `<path-to-backup-directory>`.
##### Arguments
Optional arguments are in brackets.
###### [ `-db <db_name>` ]
Name of the single database to restore.
###### [ `-full` ]
Restore a backup that was created with the `-full` flag.
A restore command with the `-full` flag requires the `path-to-backup-manifest-file`.
###### [ `-list` ]
Show the contents of the backup.
###### [ `-newdb <newdb_name>` ]
Name of the new database to restore to (must specify with `-db`).
###### [ `-newrf <newrf_integer>` ]
Integer of the new [replication factor](/influxdb/v1.6/concepts/glossary/#replication-factor) to restore to (this is capped to the number of data nodes in the cluster).
###### [ `-newrp <newrp_name>` ]
Name of the new [retention policy](/influxdb/v1.6/concepts/glossary/#retention-policy-rp) to restore to (must specify with `-rp`).
###### [ `-rp <rp_name>` ]
Name of the single retention policy to restore.
###### [ `-shard <shard_ID>` ]
Identifier of the [shard](/influxdb/v1.6/concepts/glossary/#shard) to restore.
Resources: [Backing up and restoring in InfluxDB Enterprise](/enterprise_influxdb/v1.6/administration/backup-and-restore/#restore)
#### Examples
###### Restoring from an incremental backup
In this example, the `restore` command restores an incremental backup stored in the `my-incremental-backup/` directory.
```
$ influxd-ctl restore my-incremental-backup/
Using backup directory: my-incremental-backup/
Using meta backup: 20170130T231333Z.meta
Restoring meta data... Done. Restored in 21.373019ms, 1 shards mapped
Restoring db telegraf, rp autogen, shard 2 to shard 2...
Copying data to <hostname>:8088... Copying data to <hostname>:8088... Done. Restored shard 2 into shard 2 in 61.046571ms, 588800 bytes transferred
Restored from my-incremental-backup/ in 83.892591ms, transferred 588800 bytes
```
###### Restoring from a full backup
In this example, the `restore` command is used to restore a full backup that includes the manifest file at `my-full-backup/20170131T020341Z.manifest`.
```
$ influxd-ctl restore -full my-full-backup/20170131T020341Z.manifest
Using manifest: my-full-backup/20170131T020341Z.manifest
Restoring meta data... Done. Restored in 9.585639ms, 1 shards mapped
Restoring db telegraf, rp autogen, shard 2 to shard 2...
Copying data to <hostname>:8088... Copying data to <hostname>:8088... Done. Restored shard 2 into shard 2 in 48.095082ms, 569344 bytes transferred
Restored from my-full-backup in 58.58301ms, transferred 569344 bytes
```
#### `show`
Shows all [meta nodes](/enterprise_influxdb/v1.6/concepts/glossary/#meta-node) and [data nodes](/enterprise_influxdb/v1.6/concepts/glossary/#data-node) that are part of the cluster.
The output includes the InfluxDB Enterprise version number.
#### Syntax
```
influxd-ctl show
```
#### Examples
###### Showing all meta and data nodes in a cluster
In this example, the `show` command output displays that the cluster includes three meta nodes and two data nodes.
Every node is using InfluxDB Enterprise `1.3.x-c1.3.x`.
```
$ influxd-ctl show
Data Nodes
==========
ID TCP Address Version
2 cluster-node-01:8088 1.3.x-c1.3.x
4 cluster-node-02:8088 1.3.x-c1.3.x
Meta Nodes
==========
TCP Address Version
cluster-node-01:8091 1.3.x-c1.3.x
cluster-node-02:8091 1.3.x-c1.3.x
cluster-node-03:8091 1.3.x-c1.3.x
```
#### `show-shards`
Outputs details about existing [shards](/influxdb/v1.6/concepts/glossary/#shard) of the cluster, including shard ID, database, [retention policy](/influxdb/v1.6/concepts/glossary/#retention-policy-rp), desired replicas, [shard group](/influxdb/v1.6/concepts/glossary/#shard-group), starting timestamp, ending timestamp, expiration timestamp, and [data node](/enterprise_influxdb/v1.6/concepts/glossary/#data-node) owners.
```
influxd-ctl show-shards
```
#### Examples
###### Showing the existing shards in a cluster
In this example, the `show-shards` output shows that there are two shards in the cluster.
The first shard has an id of `51` and it's in the `telegraf` database and the `autogen` retention policy.
The desired number of copies for shard `51` is `2` and it belongs to shard group `37`.
The data in shard `51` cover the time range between `2017-03-13T00:00:00Z` and `2017-03-20T00:00:00Z`, and the shard has no expiry time; `telegraf`'s `autogen` retention policy has an infinite duration so the system never removes shard `51`.
Finally, shard `51` appears on two data nodes: `cluster-data-node-01:8088` and `cluster-data-node-03:8088`.
```
$ influxd-ctl show-shards
Shards
==========
ID Database Retention Policy Desired Replicas Shard Group Start End Expires Owners
51 telegraf autogen 2 37 2017-03-13T00:00:00Z 2017-03-20T00:00:00Z [{26 cluster-data-node-01:8088} {33 cluster-data-node-03:8088}]
52 telegraf autogen 2 37 2017-03-13T00:00:00Z 2017-03-20T00:00:00Z [{5 cluster-data-node-02:8088} {26 cluster-data-node-01:8088}]
```
#### `update-data`
Updates a data node's address in the [meta store](/enterprise_influxdb/v1.6/concepts/glossary/#meta-service).
#### Syntax
```
influxd-ctl update-data <data-node-old-TCP-bind-address> <data-node-new-TCP-bind-address>
```
#### Examples
###### Updating a data node hostname
In this example, the `update-data` command updates the address for data node `26` from `cluster-node-01:8088` to `cluster-data-node-01:8088`.
```
$ influxd-ctl update-data cluster-node-01:8088 cluster-data-node-01:8088
updated data node 26 to cluster-data-node-01:8088
```
#### `token`
Generates a signed JSON Web Token (JWT) token.
The token argument only works when using JWT authentication in the cluster and when using the [`-auth-type jwt`](#auth-type-none-basic-jwt) and [`-secret <shared-secret>`](#secret-jwt-shared-secret) arguments.
#### Syntax
```
influxd-ctl token [-exp <duration>]
```
##### Arguments
Optional arguments are in brackets.
###### [ `-exp <duration>` ]
Determines the time after which the token expires.
By default, the token expires after one minute.
#### Examples
###### Creating a signed JWT token
In this example, the `token` command returns a signed JWT token.
```
$ influxd-ctl -auth-type jwt -secret oatclusters token
hereistokenisitgoodandsoareyoufriend.timingisaficklefriendbutwherewouldwebewithoutit.timingthentimeseriesgood-wevemadetheleap-nowletsgetdownanddataandqueryallourheartsout
```
###### Attempting to create a signed JWT token with basic authentication
In this example, the `token` command returns an error because the command doesn't use JWT authentication.
```
$ influxd-ctl -auth-type basic -user admini -pwd mouse token
token: tokens can only be created when using bearer authentication
```
#### `truncate-shards`
Truncates hot [shards](/influxdb/v1.6/concepts/glossary/#shard), that is, shards that cover the time range that includes the current time ([`now()`](/influxdb/v1.6/concepts/glossary/#now)).
The `truncate-shards` command creates a new shard and the system writes all new points to that shard.
#### Syntax
```
influxd-ctl truncate-shards [-delay <duration>]
```
##### Arguments
Optional arguments are in brackets.
###### [ `-delay <duration>` ]
Determines when to truncate shards after [`now()`](/influxdb/v1.6/concepts/glossary/#now).
By default, the tool sets the delay to one minute.
The `duration` is an integer followed by a [duration unit](/influxdb/v1.6/query_language/spec/#durations).
Resources: [Cluster rebalancing](/enterprise_influxdb/v1.6/guides/rebalance/)
#### Examples
###### Truncating shards with the default delay time
In this example, after running the `truncate-shards` command and waiting one minute, the output of the [`show-shards` command](#show-shards) shows that the system truncated shard `51` (truncated shards have an asterisk (`*`) on the timestamp in the `End` column) and created the new shard with the id `54`.
```
$ influxd-ctl truncate-shards
Truncated shards.
$ influxd-ctl show-shards
Shards
==========
ID Database Retention Policy Desired Replicas Shard Group Start End Expires Owners
51 telegraf autogen 2 37 2017-03-13T00:00:00Z 2017-03-13T20:40:15.753443255Z* [{26 cluster-data-node-01:8088} {33 cluster-data-node-03:8088}]
54 telegraf autogen 2 38 2017-03-13T00:00:00Z 2017-03-20T00:00:00Z [{26 cluster-data-node-01:8088} {33 cluster-data-node-03:8088}]
```
###### Truncating shards with a user-provided delay timestamp
In this example, after running the `truncate-shards` command and waiting three minutes, the output of the [`show-shards` command](#show-shards) shows that the system truncated shard `54` (truncated shards have an asterix (`*`) on the timestamp in the `End` column) and created the new shard with the id `58`.
```
$ influxd-ctl truncate-shards -delay 3m
Truncated shards.
$ influxd-ctl show-shards
Shards
==========
ID Database Retention Policy Desired Replicas Shard Group Start End Expires Owners
54 telegraf autogen 2 38 2017-03-13T00:00:00Z 2017-03-13T20:59:14.665827038Z* [{26 cluster-data-node-01:8088} {33 cluster-data-node-03:8088}]
58 telegraf autogen 2 40 2017-03-13T00:00:00Z 2017-03-20T00:00:00Z [{26 cluster-data-node-01:8088} {33 cluster-data-node-03:8088}]
```
## `influx` command line interface (CLI)
Use the `influx` command line interface (CLI) to write data to your cluster, query data interactively, and view query output in different formats.
The `influx` CLI is available on all [data nodes](/enterprise_influxdb/v1.6/concepts/glossary/#data-node).
See [InfluxDB command line interface (CLI/shell)](/influxdb/v1.6/tools/shell/) in the InfluxDB OSS documentation for details on using the `influx` command line interface utility.