content/shared/influxdb3-admin/upgrade.md
Upgrade your {{% product-name %}} version.
Before upgrading your {{% product-name %}} {{% show-in "core" %}}instance{{% /show-in %}}{{% show-in "enterprise" %}}cluster{{% /show-in %}}, review the release notes for compatibility requirements and then plan your upgrade strategy.
Before upgrading, verify the {{% product-name %}} version running on each node.
{{< tabs-wrapper >}} {{% tabs %}} CLI Docker {{% /tabs %}} {{% tab-content %}}
influxdb3 --version
{{% /tab-content %}} {{% tab-content %}}
docker exec CONTAINER_NAME influxdb3 --version
Replace the following:
CONTAINER_NAME{{% /code-placeholder-key %}}: The name of your {{% product-name %}} container{{% /tab-content %}} {{< /tabs-wrapper >}}
The command returns version information similar to the following:
<!--pytest-codeblocks:expected-output-->influxdb3 {{% latest-patch %}}
[!Tip]
Verify your InfluxDB version
Before and after upgrading, verify the {{% product-name %}} version running on your instance.
{{< tabs-wrapper >}} {{% tabs %}} Install script systemctl Docker Docker Compose Windows {{% /tabs %}} {{% tab-content %}}
curl -O https://www.influxdata.com/d/install_influxdb3.sh \
&& sh install_influxdb3.sh {{< product-key >}}
{{% /tab-content %}} {{% tab-content %}}
# 1. Download the new version
curl -L https://dl.influxdata.com/influxdb/releases/influxdb3-{{< product-key >}}-{{< latest-patch >}}_linux_amd64.tar.gz \
-o influxdb3-{{< product-key >}}.tar.gz
# 2. Extract the archive
tar xvzf influxdb3-{{< product-key >}}.tar.gz
# 3. Stop the service
sudo systemctl stop influxdb3
# 4. Install the new binary
sudo cp influxdb3 /usr/local/bin/
# 5. Start the service
sudo systemctl start influxdb3
{{% /tab-content %}} {{% tab-content %}}
docker stop CONTAINER_NAME
docker pull influxdb:{{< product-key >}}
docker start CONTAINER_NAME
Replace the following:
CONTAINER_NAME{{% /code-placeholder-key %}}: The name of your {{% product-name %}} container{{% /tab-content %}} {{% tab-content %}}
docker compose down
docker compose pull
docker compose up -d
{{% /tab-content %}} {{% tab-content %}}
# Download the latest Windows binary
Invoke-WebRequest `
-Uri "https://dl.influxdata.com/influxdb/releases/influxdb3-{{< product-key >}}-{{< latest-patch >}}-windows_amd64.zip" `
-OutFile "influxdb3-{{< product-key >}}.zip"
# Extract the binary
Expand-Archive -Path influxdb3-{{< product-key >}}.zip -DestinationPath . -Force
# Stop the service, replace the binary, and start the service
Stop-Service influxdb3
Copy-Item -Path "influxdb3.exe" -Destination "C:\Program Files\InfluxData\influxdb3\" -Force
Start-Service influxdb3
{{% /tab-content %}} {{< /tabs-wrapper >}}
{{% show-in "enterprise" %}}
Upgrade {{% product-name %}} instances to newer versions using rolling upgrades to minimize downtime. When upgrading multi-node clusters, you need to understand catalog version constraints and the recommended upgrade order for different node modes.
{{% product-name %}} uses a catalog to track metadata about tables, tags, and fields. Some versions introduce catalog version updates that affect how nodes can interoperate during rolling upgrades.
[!Important]
Important version transitions
- 3.4.x: Introduced a catalog version update that requires all nodes to upgrade before catalog modifications can resume.
- 3.2.x to 3.5.x: Nodes running 3.2.1 can temporarily coexist with nodes running 3.5.0, but catalog modifications are blocked until all nodes complete the upgrade.
During a rolling upgrade across a catalog version boundary, nodes running older versions cannot modify the catalog. This affects writes that add new tables, tags, or fields, but allows writes to existing tables, tags, and fields.
Follow these steps to upgrade your {{% product-name %}} deployment with minimal downtime.
The order in which you upgrade nodes affects the availability of catalog modifications during the upgrade. Different node modes have different impacts on catalog updates:
influxdb3 create table), but less frequently than ingest nodes.Recommended upgrade order:
Follow these steps to upgrade each node in your deployment:
{{< tabs-wrapper >}} {{% tabs %}} systemctl Docker Docker Compose {{% /tabs %}} {{% tab-content %}}
# 1. Stop the service
sudo systemctl stop influxdb3
# 2. Install the new version
# Follow the installation instructions for your platform:
# https://docs.influxdata.com/influxdb3/enterprise/install/
# 3. Start the service
sudo systemctl start influxdb3
# 4. Verify the version
influxdb3 --version
# 5. Check the node's health
influxdb3 query \
--database _internal \
--token ADMIN_TOKEN \
"SELECT * FROM system.queries LIMIT 5"
Replace the following:
ADMIN_TOKEN{{% /code-placeholder-key %}}: An admin token{{% /tab-content %}} {{% tab-content %}}
# 1. Stop the container
docker stop CONTAINER_NAME
# 2. Pull the latest image
docker pull influxdb:enterprise
# 3. Start the container with the new image
# IMPORTANT: Adjust the docker run command to match your existing
# container configuration, including environment variables, volume mounts,
# object store settings, and network settings.
docker run -d \
--name CONTAINER_NAME \
-p 8181:8181 \
-e [email protected] \
-v ~/.influxdb3/data:/var/lib/influxdb3/data \
influxdb:enterprise \
influxdb3 serve \
--node-id NODE_ID \
--cluster-id CLUSTER_ID \
--object-store OBJECT_STORE_TYPE \
--data-dir /var/lib/influxdb3/data
# 4. Verify the version
docker exec CONTAINER_NAME influxdb3 --version
# 5. Check the node's health
docker exec CONTAINER_NAME influxdb3 query \
--database _internal \
--token ADMIN_TOKEN \
"SELECT * FROM system.queries LIMIT 5"
Replace the following:
CONTAINER_NAME{{% /code-placeholder-key %}}: The name of your {{% product-name %}} containerNODE_ID{{% /code-placeholder-key %}}: The node identifier for this instanceCLUSTER_ID{{% /code-placeholder-key %}}: The cluster identifier for your deploymentOBJECT_STORE_TYPE{{% /code-placeholder-key %}}: The object store type (for example, file, s3, azure, or google)ADMIN_TOKEN{{% /code-placeholder-key %}}: An admin token[!Note]
Use the influxdb:enterprise image tag
The
influxdb:enterprisetag always points to the latest InfluxDB 3 Enterprise release. Usedocker pull influxdb:enterpriseto pull the latest version, or specify a version tag directly (for example,influxdb:{{< latest-patch >}}-enterprise) to upgrade to a specific version.
[!Important] If you use a cloud object store (S3, Azure, or Google Cloud), include the appropriate credentials and bucket configuration in the
docker runcommand.
{{% /tab-content %}} {{% tab-content %}}
# 1. Stop the services
docker compose down
# 2. Update the image in your compose.yaml file
# Change the image version to: influxdb:enterprise
# 3. Start the services with the new image
docker compose up -d
# 4. Verify the version
docker compose exec influxdb3 influxdb3 --version
# 5. Check the node's health
docker compose exec influxdb3 influxdb3 query \
--database _internal \
--token ADMIN_TOKEN \
"SELECT * FROM system.queries LIMIT 5"
Replace the following:
ADMIN_TOKEN{{% /code-placeholder-key %}}: An admin token[!Note]
Use the influxdb:enterprise image tag
The
influxdb:enterprisetag always points to the latest InfluxDB 3 Enterprise release. Update theimage:field in yourcompose.yamltoinfluxdb:enterpriseto pull the latest version, or specify a version tag directly (for example,influxdb:{{< latest-patch >}}-enterprise) to upgrade to a specific version. {{% /tab-content %}} {{< /tabs-wrapper >}}
Repeat these steps for each remaining node in the recommended order.
Understand the constraints that apply during rolling upgrades to avoid unexpected write failures.
When upgrading from v3.3.x (or earlier) to v3.4.x, nodes running older versions cannot modify the catalog during the rolling upgrade.
Behavior by write type:
For example, if you're upgrading from 3.2.1 to 3.5.0:
When a node running an older version receives a write that attempts to add a new measurement, the write fails with an error similar to:
<!--pytest-codeblocks:expected-output-->Error: Catalog modification failed: node is running an older version
If writes fail during a rolling upgrade, verify that you're not attempting to add new measurements, tags, or fields to nodes running older versions.
If you upgrade nodes out of the recommended order, you may experience longer periods where catalog modifications are blocked.
If nodes fail to communicate after an upgrade, verify that all nodes are running compatible versions.
Different version transitions may have different catalog version constraints. The v3.3.x → v3.4.x transition has specific constraints, but other version transitions may differ.
Before upgrading, review the release notes for your target version to understand:
{{% /show-in %}}