Documentation

Back up and restore data

InfluxDB 3 Core persists all data and metadata to object storage. Back up your data by copying object storage files in a specific order to ensure consistency and reliability.

Currently, InfluxDB 3 Core does not include built-in backup and restore tools. Because copying files during periods of activity is a transient process, we highly recommended you follow the below procedures and copy order to minimize risk of creating inconsistent backups.

Supported object storage

InfluxDB 3 supports the following object storage backends for data persistence:

  • File system (local directory)
  • AWS S3 and S3-compatible storage (MinIO)
  • Azure Blob Storage
  • Google Cloud Storage

Backup and restore procedures don’t apply to memory-based object stores.

File structure

LocationDescription
<node_id>/Root directory for all node state
<node_id>/_catalog_checkpointCatalog state checkpoint file
<node_id>/catalogs/Catalog log files tracking catalog state changes
<node_id>/wal/Write-ahead log files containing written data
<node_id>/snapshots/Snapshot files summarizing persisted Parquet files
<node_id>/dbs/<db>/<table>/<date>/Parquet files organized by database, table, and time
<node_id>/table-snapshots/<db>/<table>/Table snapshot files (regenerated on restart, optional for backup)

Backup process

Copy files in the recommended order to reduce risk of creating inconsistent backups. Perform backups during downtime or minimal load periods when possible.

Recommended backup order:

  1. Snapshots directory
  2. Database (dbs) directory
  3. WAL directory
  4. Catalogs directory
  5. Catalog checkpoint file
#!/bin/bash
NODE_ID
="
NODE_ID
"
DATA_DIR="/path/to/data" BACKUP_DIR="/backup/$(date +%Y%m%d-%H%M%S)" mkdir -p "$BACKUP_DIR" # Copy in recommended order cp -r $DATA_DIR/${
NODE_ID
}/snapshots "$BACKUP_DIR/"
cp -r $DATA_DIR/${
NODE_ID
}/dbs "$BACKUP_DIR/"
cp -r $DATA_DIR/${
NODE_ID
}/wal "$BACKUP_DIR/"
cp -r $DATA_DIR/${
NODE_ID
}/catalogs "$BACKUP_DIR/"
cp $DATA_DIR/${
NODE_ID
}/_catalog_checkpoint "$BACKUP_DIR/"
echo "Backup completed to $BACKUP_DIR"

Replace NODE_ID with your node ID.

This example works with Docker containers that use volume mounts for data persistence. Adjust the DATA_DIR path to match your volume mount configuration.

#!/bin/bash
NODE_ID
="
NODE_ID
"
SOURCE_BUCKET
="
SOURCE_BUCKET
"
BACKUP_BUCKET
="
BACKUP_BUCKET
"
BACKUP_PREFIX="backup-$(date +%Y%m%d-%H%M%S)" # Copy in recommended order aws s3 sync s3://${
SOURCE_BUCKET
}/${
NODE_ID
}/snapshots \
s3://${
BACKUP_BUCKET
}/${BACKUP_PREFIX}/${
NODE_ID
}/snapshots/
aws s3 sync s3://${
SOURCE_BUCKET
}/${
NODE_ID
}/dbs \
s3://${
BACKUP_BUCKET
}/${BACKUP_PREFIX}/${
NODE_ID
}/dbs/
aws s3 sync s3://${
SOURCE_BUCKET
}/${
NODE_ID
}/wal \
s3://${
BACKUP_BUCKET
}/${BACKUP_PREFIX}/${
NODE_ID
}/wal/
aws s3 sync s3://${
SOURCE_BUCKET
}/${
NODE_ID
}/catalogs \
s3://${
BACKUP_BUCKET
}/${BACKUP_PREFIX}/${
NODE_ID
}/catalogs/
aws s3 cp s3://${
SOURCE_BUCKET
}/${
NODE_ID
}/_catalog_checkpoint \
s3://${
BACKUP_BUCKET
}/${BACKUP_PREFIX}/${
NODE_ID
}/
echo "Backup completed to s3://${
BACKUP_BUCKET
}/${BACKUP_PREFIX}"

Replace the following:

  • NODE_ID: your node ID
  • SOURCE_BUCKET: your InfluxDB data bucket
  • BACKUP_BUCKET: your backup destination bucket

Restore process

Restoring overwrites existing data. Always verify you have correct backups before proceeding.

Recommended restore order:

  1. Catalog checkpoint file
  2. Catalogs directory
  3. WAL directory
  4. Database (dbs) directory
  5. Snapshots directory

File system restore example

#!/bin/bash
NODE_ID
="
NODE_ID
"
BACKUP_DIR="/backup/
BACKUP_DATE
"
DATA_DIR="/path/to/data" # 1. Stop InfluxDB systemctl stop influxdb3 || docker stop influxdb3-core # 2. Optional: Clear existing data for clean restore rm -rf ${DATA_DIR}/${
NODE_ID
}/*
# 3. Restore in reverse order of backup mkdir -p ${DATA_DIR}/${
NODE_ID
}
cp ${BACKUP_DIR}/_catalog_checkpoint ${DATA_DIR}/${
NODE_ID
}/
cp -r ${BACKUP_DIR}/catalogs ${DATA_DIR}/${
NODE_ID
}/
cp -r ${BACKUP_DIR}/wal ${DATA_DIR}/${
NODE_ID
}/
cp -r ${BACKUP_DIR}/dbs ${DATA_DIR}/${
NODE_ID
}/
cp -r ${BACKUP_DIR}/snapshots ${DATA_DIR}/${
NODE_ID
}/
# 4. Set correct permissions (important for Docker) chown -R influxdb:influxdb ${DATA_DIR}/${
NODE_ID
}
# 5. Start InfluxDB systemctl start influxdb3 || docker start influxdb3-core

Replace the following:

  • NODE_ID: your node ID
  • BACKUP_DATE: backup directory timestamp (for example, 20240115-143022)

S3 restore example

#!/bin/bash
NODE_ID
="
NODE_ID
"
BACKUP_BUCKET
="
BACKUP_BUCKET
"
BACKUP_PREFIX="backup-
BACKUP_DATE
"
TARGET_BUCKET
="
TARGET_BUCKET
"
# 1. Stop InfluxDB # Implementation depends on your deployment method # 2. Optional: Clear existing data for clean restore aws s3 rm s3://${
TARGET_BUCKET
}/${
NODE_ID
} --recursive
# 3. Restore from backup aws s3 sync s3://${
BACKUP_BUCKET
}/${BACKUP_PREFIX}/${
NODE_ID
}/ \
s3://${
TARGET_BUCKET
}/${
NODE_ID
}/
# 4. Start InfluxDB # Implementation depends on your deployment method

Replace the following:

  • NODE_ID: your node ID
  • BACKUP_DATE: backup timestamp
  • BACKUP_BUCKET: bucket containing backup
  • TARGET_BUCKET: target bucket for restoration

Important considerations

Recovery expectations

Recovery succeeds to a consistent point in time, which is the latest snapshot included in the backup. Data written after that snapshot may not be present if its WAL was deleted after the backup. Any Parquet files without a snapshot reference are ignored.

Docker considerations

When running InfluxDB 3 Core in containers:

  • Volume consistency: Use the same volume mounts for backup and restore operations
  • File permissions: Ensure container user can read restored files (use chown if needed)
  • Backup access: Mount a backup directory to copy files from containers to the host

Table snapshot files

Files in <node_id>/table-snapshots/ are intentionally excluded from backup:

  • These files are periodically overwritten
  • They regenerate automatically on server restart
  • Including them doesn’t harm but increases backup size unnecessarily

Timing recommendations

  • Perform backups during downtime or minimal load periods
  • Copying files while the database is active may create inconsistent backups
  • Consider using filesystem or storage snapshots if available
  • Compression is optional but recommended for long-term storage

Was this page helpful?

Thank you for your feedback!


The future of Flux

Flux is going into maintenance mode. You can continue using it as you currently are without any changes to your code.

Read more

New in InfluxDB 3.4

Key enhancements in InfluxDB 3.4 and the InfluxDB 3 Explorer 1.2.

See the Blog Post

InfluxDB 3.4 is now available for both Core and Enterprise, which introduces offline token generation for use in automated deployments and configurable license type selection that lets you bypass the interactive license prompt. InfluxDB 3 Explorer 1.2 is also available, which includes InfluxDB cache management and other new features.

For more information, check out: