From 0ddd5a22578c9d0ec92bf170555c7c5513eb2735 Mon Sep 17 00:00:00 2001 From: Jason Stirnaman Date: Fri, 22 Aug 2025 16:14:22 -0500 Subject: [PATCH 1/6] feat(influxdb3): Back up and restore Core and Enterprise:- Recommends a process for back up and recovery of files in object storage.- Provides examples for Core and Enterprise'- Prescribes the order to stop, back up, and restart nodes. --- .../influxdb3/core/admin/backup-restore.md | 23 + .../enterprise/admin/backup-restore.md | 25 + .../shared/influxdb3-admin/backup-restore.md | 494 ++++++++++++++++++ 3 files changed, 542 insertions(+) create mode 100644 content/influxdb3/core/admin/backup-restore.md create mode 100644 content/influxdb3/enterprise/admin/backup-restore.md create mode 100644 content/shared/influxdb3-admin/backup-restore.md diff --git a/content/influxdb3/core/admin/backup-restore.md b/content/influxdb3/core/admin/backup-restore.md new file mode 100644 index 000000000..9da134730 --- /dev/null +++ b/content/influxdb3/core/admin/backup-restore.md @@ -0,0 +1,23 @@ +--- +title: Back up and restore data +seotitle: Back up and restore {{< product-name >}} +description: > + Manually back up and restore your {{< product-name >}} instance by copying + object storage files in the recommended order. +menu: + influxdb3_core: + name: Back up and restore + parent: Administer InfluxDB Core +weight: 105 +influxdb3/core/tags: [backup, restore, administration, object storage] +related: + - /influxdb3/core/admin/databases/ + - /influxdb3/core/reference/cli/influxdb3/serve/ + - /influxdb3/core/install/ + - /influxdb3/core/reference/internals/durability/ +source: /shared/influxdb3-admin/backup-restore.md +--- + + diff --git a/content/influxdb3/enterprise/admin/backup-restore.md b/content/influxdb3/enterprise/admin/backup-restore.md new file mode 100644 index 000000000..a8338f322 --- /dev/null +++ b/content/influxdb3/enterprise/admin/backup-restore.md @@ -0,0 +1,25 @@ +--- +title: Back up and restore data +seotitle: Back up and restore {{< product-name >}} +description: > + Manually back up and restore your {{< product-name >}} cluster by copying + object storage files in the recommended order for each node type. +menu: + influxdb3_enterprise: + name: Back up and restore + parent: Administer InfluxDB Enterprise +weight: 105 +influxdb3/enterprise/tags: [backup, restore, administration, cluster, object storage] +related: + - /influxdb3/enterprise/admin/databases/ + - /influxdb3/enterprise/admin/license/ + - /influxdb3/enterprise/reference/cli/influxdb3/serve/ + - /influxdb3/enterprise/install/ + - /influxdb3/enterprise/get-started/multi-server/ + - /influxdb3/enterprise/reference/internals/durability/ +source: /shared/influxdb3-admin/backup-restore.md +--- + + diff --git a/content/shared/influxdb3-admin/backup-restore.md b/content/shared/influxdb3-admin/backup-restore.md new file mode 100644 index 000000000..37e9fe98c --- /dev/null +++ b/content/shared/influxdb3-admin/backup-restore.md @@ -0,0 +1,494 @@ + +{{% product-name %}} 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. + +> [!Warning] +> Currently, {{% product-name %}} does not include built-in backup and restore tools. +> Because copying files during periods of activity is a transient process, the manual backup process _cannot guarantee 100% reliability_. +> Follow the recommended 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](/influxdb3/version/object-storage/minio/)) +- **Azure Blob Storage** +- **Google Cloud Storage** + +> [!Note] +> Backup and restore procedures don't apply to memory-based [object stores](/influxdb3/version/reference/config-options/#object-store). + +## File structure + +{{% show-in "core" %}} + +| Location | Description | +| ----------------------------------------- | --------------------------------------------------------------------------------------------- | +| `/` | Root directory for all node state | +| `/_catalog_checkpoint` | Catalog state checkpoint file | +| `/catalogs/` | Catalog log files tracking catalog state changes | +| `/wal/` | [Write-ahead log files](/influxdb3/core/reference/internals/durability/#write-ahead-log-wal-persistence) containing written data | +| `/snapshots/` | Snapshot files summarizing persisted [Parquet files](/influxdb3/core/reference/internals/durability/#parquet-storage) | +| `/dbs////` | [Parquet files](/influxdb3/core/reference/internals/durability/#parquet-storage) organized by [database](/influxdb3/core/admin/databases/), [table](/influxdb3/core/admin/tables/), and time | +| `/table-snapshots//
/` | Table snapshot files (regenerated on restart, optional for backup) | + +{{% /show-in %}} +{{% show-in "enterprise" %}} + +| Location | Description | +| ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **Cluster files** | | +| `/_catalog_checkpoint` | Catalog state checkpoint file | +| `/catalogs/` | Catalog log files | +| `/commercial_license` | Commercial [license](/influxdb3/enterprise/admin/license/) file (if applicable) | +| `/trial_or_home_license` | Trial or home [license](/influxdb3/enterprise/admin/license/) file (if applicable) | +| `/enterprise` | Enterprise configuration file | +| **Node files** | | +| `/wal/` | [Write-ahead log files](/influxdb3/enterprise/reference/internals/durability/#write-ahead-log-wal-persistence) containing written data | +| `/snapshots/` | Snapshot files | +| `/dbs//
//` | [Parquet files](/influxdb3/enterprise/reference/internals/durability/#parquet-storage) organized by [database](/influxdb3/enterprise/admin/databases/), [table](/influxdb3/enterprise/admin/tables/), and time | +| `/table-snapshots//
/` | Table snapshot files (regenerated on restart, optional for backup) | +| **Compactor node additional files** | | +| `/cs` | Compaction summary files | +| `/cd` | Compaction detail files | +| `/c` | Generation detail and [Parquet files](/influxdb3/enterprise/reference/internals/durability/#parquet-storage) | +{{% /show-in %}} + +## Backup process + +> [!Important] +> Copy files in the recommended order to reduce risk of creating inconsistent backups. Perform backups during downtime or minimal load periods when possible. + +{{% show-in "core" %}} + +**Recommended backup order:** +1. Snapshots directory +2. Database (dbs) directory +3. WAL directory +4. Catalogs directory +5. Catalog checkpoint file + +{{< tabs-wrapper >}} +{{% tabs %}} +[File system](#) +[S3](#) +{{% /tabs %}} +{{% tab-content %}} + + +```bash { placeholders="NODE_ID" } +#!/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 {{% code-placeholder-key %}}`NODE_ID`{{% /code-placeholder-key %}} with your [node ID](/influxdb3/core/reference/config-options/#node-id). + +> [!Note] +> This example works with Docker containers that use volume mounts for data persistence. Adjust the `DATA_DIR` path to match your volume mount configuration. + + +{{% /tab-content %}} +{{% tab-content %}} + + +```bash { placeholders="NODE_ID|SOURCE_BUCKET|BACKUP_BUCKET" } +#!/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: +- {{% code-placeholder-key %}}`NODE_ID`{{% /code-placeholder-key %}}: your [node ID](/influxdb3/core/reference/config-options/#node-id) +- {{% code-placeholder-key %}}`SOURCE_BUCKET`{{% /code-placeholder-key %}}: your InfluxDB data bucket +- {{% code-placeholder-key %}}`BACKUP_BUCKET`{{% /code-placeholder-key %}}: your backup destination bucket + + +{{% /tab-content %}} +{{< /tabs-wrapper >}} +{{% /show-in %}} + +{{% show-in "enterprise" %}} + +**Recommended backup order:** +1. Compactor node directories (cs, cd, c) +2. All nodes' snapshots, dbs, wal directories +3. Cluster catalog and checkpoint +4. License files + +{{< tabs-wrapper >}} +{{% tabs %}} +[S3](#) +[File system](#) +{{% /tabs %}} +{{% tab-content %}} + + +```bash { placeholders="CLUSTER_ID|COMPACTOR_NODE|NODE1|NODE2|NODE3|SOURCE_BUCKET|BACKUP_BUCKET" } +#!/bin/bash +CLUSTER_ID="CLUSTER_ID" +COMPACTOR_NODE="COMPACTOR_NODE" +DATA_NODES=("NODE1" "NODE2" "NODE3") +SOURCE_BUCKET="SOURCE_BUCKET" +BACKUP_BUCKET="BACKUP_BUCKET" +BACKUP_PREFIX="backup-$(date +%Y%m%d-%H%M%S)" + +# 1. Backup compactor node first +echo "Backing up compactor node..." +aws s3 sync s3://${SOURCE_BUCKET}/${COMPACTOR_NODE}/cs \ + s3://${BACKUP_BUCKET}/${BACKUP_PREFIX}/${COMPACTOR_NODE}/cs/ + +aws s3 sync s3://${SOURCE_BUCKET}/${COMPACTOR_NODE}/cd \ + s3://${BACKUP_BUCKET}/${BACKUP_PREFIX}/${COMPACTOR_NODE}/cd/ + +aws s3 sync s3://${SOURCE_BUCKET}/${COMPACTOR_NODE}/c \ + s3://${BACKUP_BUCKET}/${BACKUP_PREFIX}/${COMPACTOR_NODE}/c/ + +# 2. Backup all nodes (including compactor) +ALL_NODES=("${DATA_NODES[@]}" "$COMPACTOR_NODE") +for NODE_ID in "${ALL_NODES[@]}"; do + echo "Backing up node: ${NODE_ID}" + 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/ +done + +# 3. Backup cluster catalog +echo "Backing up cluster catalog..." +aws s3 sync s3://${SOURCE_BUCKET}/${CLUSTER_ID}/catalogs \ + s3://${BACKUP_BUCKET}/${BACKUP_PREFIX}/${CLUSTER_ID}/catalogs/ + +aws s3 cp s3://${SOURCE_BUCKET}/${CLUSTER_ID}/_catalog_checkpoint \ + s3://${BACKUP_BUCKET}/${BACKUP_PREFIX}/${CLUSTER_ID}/ + +aws s3 cp s3://${SOURCE_BUCKET}/${CLUSTER_ID}/enterprise \ + s3://${BACKUP_BUCKET}/${BACKUP_PREFIX}/${CLUSTER_ID}/ + +# 4. Backup license files (may not exist) +aws s3 cp s3://${SOURCE_BUCKET}/${CLUSTER_ID}/commercial_license \ + s3://${BACKUP_BUCKET}/${BACKUP_PREFIX}/${CLUSTER_ID}/ 2>/dev/null || true + +aws s3 cp s3://${SOURCE_BUCKET}/${CLUSTER_ID}/trial_or_home_license \ + s3://${BACKUP_BUCKET}/${BACKUP_PREFIX}/${CLUSTER_ID}/ 2>/dev/null || true + +echo "Backup completed to s3://${BACKUP_BUCKET}/${BACKUP_PREFIX}" +``` + +Replace the following: +- {{% code-placeholder-key %}}`CLUSTER_ID`{{% /code-placeholder-key %}}: your [cluster ID](/influxdb3/enterprise/reference/config-options/#cluster-id) +- {{% code-placeholder-key %}}`COMPACTOR_NODE`{{% /code-placeholder-key %}}: your [compactor](/influxdb3/enterprise/get-started/multi-server/#high-availability-with-a-dedicated-compactor) node ID +- {{% code-placeholder-key %}}`NODE1`, `NODE2`, `NODE3`{{% /code-placeholder-key %}}: your data [node IDs](/influxdb3/enterprise/reference/config-options/#node-id) +- {{% code-placeholder-key %}}`SOURCE_BUCKET`{{% /code-placeholder-key %}}: your InfluxDB data bucket +- {{% code-placeholder-key %}}`BACKUP_BUCKET`{{% /code-placeholder-key %}}: your backup destination bucket + + +{{% /tab-content %}} +{{% tab-content %}} + + +```bash { placeholders="CLUSTER_ID|COMPACTOR_NODE|NODE1|NODE2|NODE3" } +#!/bin/bash +CLUSTER_ID="CLUSTER_ID" +COMPACTOR_NODE="COMPACTOR_NODE" +DATA_NODES=("NODE1" "NODE2" "NODE3") +DATA_DIR="/path/to/data" +BACKUP_DIR="/backup/$(date +%Y%m%d-%H%M%S)" + +mkdir -p "$BACKUP_DIR" + +# 1. Backup compactor node first +echo "Backing up compactor node..." +cp -r $DATA_DIR/${COMPACTOR_NODE}/cs "$BACKUP_DIR/${COMPACTOR_NODE}/" +cp -r $DATA_DIR/${COMPACTOR_NODE}/cd "$BACKUP_DIR/${COMPACTOR_NODE}/" +cp -r $DATA_DIR/${COMPACTOR_NODE}/c "$BACKUP_DIR/${COMPACTOR_NODE}/" + +# 2. Backup all nodes +ALL_NODES=("${DATA_NODES[@]}" "$COMPACTOR_NODE") +for NODE_ID in "${ALL_NODES[@]}"; do + echo "Backing up node: ${NODE_ID}" + mkdir -p "$BACKUP_DIR/${NODE_ID}" + cp -r $DATA_DIR/${NODE_ID}/snapshots "$BACKUP_DIR/${NODE_ID}/" + cp -r $DATA_DIR/${NODE_ID}/dbs "$BACKUP_DIR/${NODE_ID}/" + cp -r $DATA_DIR/${NODE_ID}/wal "$BACKUP_DIR/${NODE_ID}/" +done + +# 3. Backup cluster catalog +echo "Backing up cluster catalog..." +mkdir -p "$BACKUP_DIR/${CLUSTER_ID}" +cp -r $DATA_DIR/${CLUSTER_ID}/catalogs "$BACKUP_DIR/${CLUSTER_ID}/" +cp $DATA_DIR/${CLUSTER_ID}/_catalog_checkpoint "$BACKUP_DIR/${CLUSTER_ID}/" +cp $DATA_DIR/${CLUSTER_ID}/enterprise "$BACKUP_DIR/${CLUSTER_ID}/" + +# 4. Backup license files (if they exist) +[ -f "$DATA_DIR/${CLUSTER_ID}/commercial_license" ] && \ + cp $DATA_DIR/${CLUSTER_ID}/commercial_license "$BACKUP_DIR/${CLUSTER_ID}/" +[ -f "$DATA_DIR/${CLUSTER_ID}/trial_or_home_license" ] && \ + cp $DATA_DIR/${CLUSTER_ID}/trial_or_home_license "$BACKUP_DIR/${CLUSTER_ID}/" + +echo "Backup completed to $BACKUP_DIR" +``` + +Replace the following: +- {{% code-placeholder-key %}}`CLUSTER_ID`{{% /code-placeholder-key %}}: your [cluster ID](/influxdb3/enterprise/reference/config-options/#cluster-id) +- {{% code-placeholder-key %}}`COMPACTOR_NODE`{{% /code-placeholder-key %}}: your [compactor](/influxdb3/enterprise/get-started/multi-server/#high-availability-with-a-dedicated-compactor) node ID +- {{% code-placeholder-key %}}`NODE1`, `NODE2`, `NODE3`{{% /code-placeholder-key %}}: your data [node IDs](/influxdb3/enterprise/reference/config-options/#node-id) + + +{{% /tab-content %}} +{{< /tabs-wrapper >}} +{{% /show-in %}} + +## Restore process + +> [!Warning] +> Restoring overwrites existing data. Always verify you have correct backups before proceeding. + +{{% show-in "core" %}} + +#### File system restore example + +```bash { placeholders="NODE_ID|BACKUP_DATE" } +#!/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: +- {{% code-placeholder-key %}}`NODE_ID`{{% /code-placeholder-key %}}: your [node ID](/influxdb3/core/reference/config-options/#node-id) +- {{% code-placeholder-key %}}`BACKUP_DATE`{{% /code-placeholder-key %}}: backup directory timestamp (for example, 20240115-143022) + +#### S3 restore example + +```bash { placeholders="NODE_ID|BACKUP_DATE|BACKUP_BUCKET|TARGET_BUCKET" } +#!/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: +- {{% code-placeholder-key %}}`NODE_ID`{{% /code-placeholder-key %}}: your node ID +- {{% code-placeholder-key %}}`BACKUP_DATE`{{% /code-placeholder-key %}}: backup timestamp +- {{% code-placeholder-key %}}`BACKUP_BUCKET`{{% /code-placeholder-key %}}: bucket containing backup +- {{% code-placeholder-key %}}`TARGET_BUCKET`{{% /code-placeholder-key %}}: target bucket for restoration +{{% /show-in %}} + +{{% show-in "enterprise" %}} + +#### S3 restore example + +```bash { placeholders="CLUSTER_ID|COMPACTOR_NODE|NODE1|NODE2|NODE3|BACKUP_DATE|BACKUP_BUCKET|TARGET_BUCKET" } +#!/bin/bash +CLUSTER_ID="CLUSTER_ID" +COMPACTOR_NODE="COMPACTOR_NODE" +DATA_NODES=("NODE1" "NODE2" "NODE3") +BACKUP_BUCKET="BACKUP_BUCKET" +BACKUP_PREFIX="backup-BACKUP_DATE" +TARGET_BUCKET="TARGET_BUCKET" + +# 1. Stop all InfluxDB 3 Enterprise nodes +# Implementation depends on your orchestration + +# 2. Restore cluster catalog and license first +aws s3 cp s3://${BACKUP_BUCKET}/${BACKUP_PREFIX}/${CLUSTER_ID}/_catalog_checkpoint \ + s3://${TARGET_BUCKET}/${CLUSTER_ID}/ + +aws s3 sync s3://${BACKUP_BUCKET}/${BACKUP_PREFIX}/${CLUSTER_ID}/catalogs \ + s3://${TARGET_BUCKET}/${CLUSTER_ID}/catalogs/ + +aws s3 cp s3://${BACKUP_BUCKET}/${BACKUP_PREFIX}/${CLUSTER_ID}/enterprise \ + s3://${TARGET_BUCKET}/${CLUSTER_ID}/ + +# Restore license files if they exist +aws s3 cp s3://${BACKUP_BUCKET}/${BACKUP_PREFIX}/${CLUSTER_ID}/commercial_license \ + s3://${TARGET_BUCKET}/${CLUSTER_ID}/ 2>/dev/null || true + +aws s3 cp s3://${BACKUP_BUCKET}/${BACKUP_PREFIX}/${CLUSTER_ID}/trial_or_home_license \ + s3://${TARGET_BUCKET}/${CLUSTER_ID}/ 2>/dev/null || true + +# 3. Restore all nodes +ALL_NODES=("${DATA_NODES[@]}" "$COMPACTOR_NODE") +for NODE_ID in "${ALL_NODES[@]}"; do + echo "Restoring node: ${NODE_ID}" + aws s3 sync s3://${BACKUP_BUCKET}/${BACKUP_PREFIX}/${NODE_ID}/ \ + s3://${TARGET_BUCKET}/${NODE_ID}/ +done + +# 4. Start InfluxDB Enterprise nodes +# Start in order: data nodes, compactor +``` + +Replace the following: +- {{% code-placeholder-key %}}`CLUSTER_ID`{{% /code-placeholder-key %}}: your [cluster ID](/influxdb3/enterprise/reference/config-options/#cluster-id) +- {{% code-placeholder-key %}}`COMPACTOR_NODE`{{% /code-placeholder-key %}}: your [compactor](/influxdb3/enterprise/get-started/multi-server/#high-availability-with-a-dedicated-compactor) node ID +- {{% code-placeholder-key %}}`NODE1`, `NODE2`, `NODE3`{{% /code-placeholder-key %}}: your data [node IDs](/influxdb3/enterprise/reference/config-options/#node-id) +- {{% code-placeholder-key %}}`BACKUP_DATE`{{% /code-placeholder-key %}}: backup timestamp +- {{% code-placeholder-key %}}`BACKUP_BUCKET`{{% /code-placeholder-key %}}: bucket containing backup +- {{% code-placeholder-key %}}`TARGET_BUCKET`{{% /code-placeholder-key %}}: target bucket for restoration + +#### File system restore example + +```bash { placeholders="CLUSTER_ID|COMPACTOR_NODE|NODE1|NODE2|NODE3|BACKUP_DATE" } +#!/bin/bash +CLUSTER_ID="CLUSTER_ID" +COMPACTOR_NODE="COMPACTOR_NODE" +DATA_NODES=("NODE1" "NODE2" "NODE3") +BACKUP_DIR="/backup/BACKUP_DATE" +DATA_DIR="/path/to/data" + +# 1. Stop all InfluxDB 3 Enterprise nodes +# Implementation depends on your deployment method + +# 2. Optional: Clear existing data +ALL_NODES=("${DATA_NODES[@]}" "$COMPACTOR_NODE") +for NODE_ID in "${ALL_NODES[@]}"; do + rm -rf ${DATA_DIR}/${NODE_ID}/* +done +rm -rf ${DATA_DIR}/${CLUSTER_ID}/* + +# 3. Restore cluster catalog and license +mkdir -p ${DATA_DIR}/${CLUSTER_ID} +cp ${BACKUP_DIR}/${CLUSTER_ID}/_catalog_checkpoint ${DATA_DIR}/${CLUSTER_ID}/ +cp -r ${BACKUP_DIR}/${CLUSTER_ID}/catalogs ${DATA_DIR}/${CLUSTER_ID}/ +cp ${BACKUP_DIR}/${CLUSTER_ID}/enterprise ${DATA_DIR}/${CLUSTER_ID}/ + +# Restore license files if they exist +[ -f "${BACKUP_DIR}/${CLUSTER_ID}/commercial_license" ] && \ + cp ${BACKUP_DIR}/${CLUSTER_ID}/commercial_license ${DATA_DIR}/${CLUSTER_ID}/ +[ -f "${BACKUP_DIR}/${CLUSTER_ID}/trial_or_home_license" ] && \ + cp ${BACKUP_DIR}/${CLUSTER_ID}/trial_or_home_license ${DATA_DIR}/${CLUSTER_ID}/ + +# 4. Restore all nodes +for NODE_ID in "${ALL_NODES[@]}"; do + echo "Restoring node: ${NODE_ID}" + mkdir -p ${DATA_DIR}/${NODE_ID} + cp -r ${BACKUP_DIR}/${NODE_ID}/* ${DATA_DIR}/${NODE_ID}/ +done + +# 5. Set correct permissions +chown -R influxdb:influxdb ${DATA_DIR} + +# 6. Start InfluxDB Enterprise nodes +# Start in order: data nodes, compactor +``` + +Replace the following: +- {{% code-placeholder-key %}}`CLUSTER_ID`{{% /code-placeholder-key %}}: your [cluster ID](/influxdb3/enterprise/reference/config-options/#cluster-id) +- {{% code-placeholder-key %}}`COMPACTOR_NODE`{{% /code-placeholder-key %}}: your [compactor](/influxdb3/enterprise/get-started/multi-server/#high-availability-with-a-dedicated-compactor) node ID +- {{% code-placeholder-key %}}`NODE1`, `NODE2`, `NODE3`{{% /code-placeholder-key %}}: your data [node IDs](/influxdb3/enterprise/reference/config-options/#node-id) +- {{% code-placeholder-key %}}`BACKUP_DATE`{{% /code-placeholder-key %}}: backup directory timestamp +{{% /show-in %}} + +## Important considerations + +### Recovery expectations + +> [!Warning] +> 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. + +{{% show-in "enterprise" %}} +### License files + +> [!Important] +> License files are tied to: +> - The specific cloud provider (AWS, Azure, GCS) +> - The specific bucket name +> - For file storage: the exact file path +> +> You cannot restore a license file to a different bucket or path. Contact InfluxData support if you need to migrate to a different bucket. +{{% /show-in %}} + +### Docker considerations + +When running {{% product-name %}} 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 +{{% show-in "enterprise" %}}- **Node coordination**: Stop and start all Enterprise nodes (querier, ingester, compactor) in the correct order{{% /show-in %}} + +### Table snapshot files + +Files in `/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 From f975f164fd4166810130d437cf2e16dfd188c922 Mon Sep 17 00:00:00 2001 From: Jason Stirnaman Date: Fri, 22 Aug 2025 16:58:29 -0500 Subject: [PATCH 2/6] chore(influxdb3): adjust Admin weights for the sidebar nav --- content/influxdb3/core/admin/backup-restore.md | 4 ++-- content/influxdb3/core/admin/mcp-server.md | 2 +- content/influxdb3/enterprise/admin/backup-restore.md | 4 ++-- content/influxdb3/enterprise/admin/mcp-server.md | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/content/influxdb3/core/admin/backup-restore.md b/content/influxdb3/core/admin/backup-restore.md index 9da134730..7f8cb23b9 100644 --- a/content/influxdb3/core/admin/backup-restore.md +++ b/content/influxdb3/core/admin/backup-restore.md @@ -7,8 +7,8 @@ description: > menu: influxdb3_core: name: Back up and restore - parent: Administer InfluxDB Core -weight: 105 + parent: Administer InfluxDB +weight: 120 influxdb3/core/tags: [backup, restore, administration, object storage] related: - /influxdb3/core/admin/databases/ diff --git a/content/influxdb3/core/admin/mcp-server.md b/content/influxdb3/core/admin/mcp-server.md index 65eb0ae4e..e9a680abf 100644 --- a/content/influxdb3/core/admin/mcp-server.md +++ b/content/influxdb3/core/admin/mcp-server.md @@ -8,7 +8,7 @@ menu: influxdb3_core: name: Use the InfluxDB MCP server parent: Administer InfluxDB -weight: 110 +weight: 205 influxdb3/core/tags: [MCP, LLM, AI] related: - https://github.com/influxdata/influxdb3_mcp_server, InfluxDB 3 MCP Server GitHub Repository diff --git a/content/influxdb3/enterprise/admin/backup-restore.md b/content/influxdb3/enterprise/admin/backup-restore.md index a8338f322..a82b41f7b 100644 --- a/content/influxdb3/enterprise/admin/backup-restore.md +++ b/content/influxdb3/enterprise/admin/backup-restore.md @@ -7,8 +7,8 @@ description: > menu: influxdb3_enterprise: name: Back up and restore - parent: Administer InfluxDB Enterprise -weight: 105 + parent: Administer InfluxDB +weight: 120 influxdb3/enterprise/tags: [backup, restore, administration, cluster, object storage] related: - /influxdb3/enterprise/admin/databases/ diff --git a/content/influxdb3/enterprise/admin/mcp-server.md b/content/influxdb3/enterprise/admin/mcp-server.md index 4f6760e80..a4a9e45ec 100644 --- a/content/influxdb3/enterprise/admin/mcp-server.md +++ b/content/influxdb3/enterprise/admin/mcp-server.md @@ -8,7 +8,7 @@ menu: influxdb3_enterprise: name: Use the InfluxDB MCP server parent: Administer InfluxDB -weight: 110 +weight: 205 influxdb3/enterprise/tags: [MCP, LLM, AI] related: - https://github.com/influxdata/influxdb3_mcp_server, InfluxDB 3 MCP Server GitHub Repository From 372b9b5d422fdc45bf592b5df0b6364b49545035 Mon Sep 17 00:00:00 2001 From: Jason Stirnaman Date: Fri, 22 Aug 2025 17:05:28 -0500 Subject: [PATCH 3/6] Update content/shared/influxdb3-admin/backup-restore.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- content/shared/influxdb3-admin/backup-restore.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/shared/influxdb3-admin/backup-restore.md b/content/shared/influxdb3-admin/backup-restore.md index 37e9fe98c..c8bff55ed 100644 --- a/content/shared/influxdb3-admin/backup-restore.md +++ b/content/shared/influxdb3-admin/backup-restore.md @@ -439,6 +439,7 @@ for NODE_ID in "${ALL_NODES[@]}"; do done # 5. Set correct permissions +# NOTE: Adjust 'influxdb:influxdb' to match your actual deployment user/group configuration. chown -R influxdb:influxdb ${DATA_DIR} # 6. Start InfluxDB Enterprise nodes From 311d5d01ea894d74657dea204b88d6c3a2bf80e2 Mon Sep 17 00:00:00 2001 From: Jason Stirnaman Date: Sat, 23 Aug 2025 11:42:13 -0500 Subject: [PATCH 4/6] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- content/shared/influxdb3-admin/backup-restore.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/shared/influxdb3-admin/backup-restore.md b/content/shared/influxdb3-admin/backup-restore.md index c8bff55ed..532c0bf50 100644 --- a/content/shared/influxdb3-admin/backup-restore.md +++ b/content/shared/influxdb3-admin/backup-restore.md @@ -40,7 +40,7 @@ InfluxDB 3 supports the following object storage backends for data persistence: | ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Cluster files** | | | `/_catalog_checkpoint` | Catalog state checkpoint file | -| `/catalogs/` | Catalog log files | +| `/catalogs/` | Catalog log files tracking catalog state changes | | `/commercial_license` | Commercial [license](/influxdb3/enterprise/admin/license/) file (if applicable) | | `/trial_or_home_license` | Trial or home [license](/influxdb3/enterprise/admin/license/) file (if applicable) | | `/enterprise` | Enterprise configuration file | From 3a4db18f6b76514254a59d9238d0cfa8648ccd4e Mon Sep 17 00:00:00 2001 From: Jason Stirnaman Date: Sun, 24 Aug 2025 22:30:59 -0500 Subject: [PATCH 5/6] chore: use version in links --- .../shared/influxdb3-admin/backup-restore.md | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/content/shared/influxdb3-admin/backup-restore.md b/content/shared/influxdb3-admin/backup-restore.md index 532c0bf50..1ea93c0f6 100644 --- a/content/shared/influxdb3-admin/backup-restore.md +++ b/content/shared/influxdb3-admin/backup-restore.md @@ -28,9 +28,9 @@ InfluxDB 3 supports the following object storage backends for data persistence: | `/` | Root directory for all node state | | `/_catalog_checkpoint` | Catalog state checkpoint file | | `/catalogs/` | Catalog log files tracking catalog state changes | -| `/wal/` | [Write-ahead log files](/influxdb3/core/reference/internals/durability/#write-ahead-log-wal-persistence) containing written data | -| `/snapshots/` | Snapshot files summarizing persisted [Parquet files](/influxdb3/core/reference/internals/durability/#parquet-storage) | -| `/dbs//
//` | [Parquet files](/influxdb3/core/reference/internals/durability/#parquet-storage) organized by [database](/influxdb3/core/admin/databases/), [table](/influxdb3/core/admin/tables/), and time | +| `/wal/` | [Write-ahead log files](/influxdb3/version/reference/internals/durability/#write-ahead-log-wal-persistence) containing written data | +| `/snapshots/` | Snapshot files summarizing persisted [Parquet files](/influxdb3/version/reference/internals/durability/#parquet-storage) | +| `/dbs//
//` | [Parquet files](/influxdb3/version/reference/internals/durability/#parquet-storage) organized by [database](/influxdb3/version/admin/databases/), [table](/influxdb3/version/admin/tables/), and time | | `/table-snapshots//
/` | Table snapshot files (regenerated on restart, optional for backup) | {{% /show-in %}} @@ -41,18 +41,18 @@ InfluxDB 3 supports the following object storage backends for data persistence: | **Cluster files** | | | `/_catalog_checkpoint` | Catalog state checkpoint file | | `/catalogs/` | Catalog log files tracking catalog state changes | -| `/commercial_license` | Commercial [license](/influxdb3/enterprise/admin/license/) file (if applicable) | -| `/trial_or_home_license` | Trial or home [license](/influxdb3/enterprise/admin/license/) file (if applicable) | +| `/commercial_license` | Commercial [license](/influxdb3/version/admin/license/) file (if applicable) | +| `/trial_or_home_license` | Trial or home [license](/influxdb3/version/admin/license/) file (if applicable) | | `/enterprise` | Enterprise configuration file | | **Node files** | | -| `/wal/` | [Write-ahead log files](/influxdb3/enterprise/reference/internals/durability/#write-ahead-log-wal-persistence) containing written data | +| `/wal/` | [Write-ahead log files](/influxdb3/version/reference/internals/durability/#write-ahead-log-wal-persistence) containing written data | | `/snapshots/` | Snapshot files | -| `/dbs//
//` | [Parquet files](/influxdb3/enterprise/reference/internals/durability/#parquet-storage) organized by [database](/influxdb3/enterprise/admin/databases/), [table](/influxdb3/enterprise/admin/tables/), and time | +| `/dbs//
//` | [Parquet files](/influxdb3/version/reference/internals/durability/#parquet-storage) organized by [database](/influxdb3/version/admin/databases/), [table](/influxdb3/version/admin/tables/), and time | | `/table-snapshots//
/` | Table snapshot files (regenerated on restart, optional for backup) | | **Compactor node additional files** | | | `/cs` | Compaction summary files | | `/cd` | Compaction detail files | -| `/c` | Generation detail and [Parquet files](/influxdb3/enterprise/reference/internals/durability/#parquet-storage) | +| `/c` | Generation detail and [Parquet files](/influxdb3/version/reference/internals/durability/#parquet-storage) | {{% /show-in %}} ## Backup process @@ -95,7 +95,7 @@ cp $DATA_DIR/${NODE_ID}/_catalog_checkpoint "$BACKUP_DIR/" echo "Backup completed to $BACKUP_DIR" ``` -Replace {{% code-placeholder-key %}}`NODE_ID`{{% /code-placeholder-key %}} with your [node ID](/influxdb3/core/reference/config-options/#node-id). +Replace {{% code-placeholder-key %}}`NODE_ID`{{% /code-placeholder-key %}} with your [node ID](/influxdb3/version/reference/config-options/#node-id). > [!Note] > This example works with Docker containers that use volume mounts for data persistence. Adjust the `DATA_DIR` path to match your volume mount configuration. @@ -132,7 +132,7 @@ echo "Backup completed to s3://${BACKUP_BUCKET}/${BACKUP_PREFIX}" ``` Replace the following: -- {{% code-placeholder-key %}}`NODE_ID`{{% /code-placeholder-key %}}: your [node ID](/influxdb3/core/reference/config-options/#node-id) +- {{% code-placeholder-key %}}`NODE_ID`{{% /code-placeholder-key %}}: your [node ID](/influxdb3/version/reference/config-options/#node-id) - {{% code-placeholder-key %}}`SOURCE_BUCKET`{{% /code-placeholder-key %}}: your InfluxDB data bucket - {{% code-placeholder-key %}}`BACKUP_BUCKET`{{% /code-placeholder-key %}}: your backup destination bucket @@ -213,9 +213,9 @@ echo "Backup completed to s3://${BACKUP_BUCKET}/${BACKUP_PREFIX}" ``` Replace the following: -- {{% code-placeholder-key %}}`CLUSTER_ID`{{% /code-placeholder-key %}}: your [cluster ID](/influxdb3/enterprise/reference/config-options/#cluster-id) -- {{% code-placeholder-key %}}`COMPACTOR_NODE`{{% /code-placeholder-key %}}: your [compactor](/influxdb3/enterprise/get-started/multi-server/#high-availability-with-a-dedicated-compactor) node ID -- {{% code-placeholder-key %}}`NODE1`, `NODE2`, `NODE3`{{% /code-placeholder-key %}}: your data [node IDs](/influxdb3/enterprise/reference/config-options/#node-id) +- {{% code-placeholder-key %}}`CLUSTER_ID`{{% /code-placeholder-key %}}: your [cluster ID](/influxdb3/version/reference/config-options/#cluster-id) +- {{% code-placeholder-key %}}`COMPACTOR_NODE`{{% /code-placeholder-key %}}: your [compactor](/influxdb3/version/get-started/multi-server/#high-availability-with-a-dedicated-compactor) node ID +- {{% code-placeholder-key %}}`NODE1`, `NODE2`, `NODE3`{{% /code-placeholder-key %}}: your data [node IDs](/influxdb3/version/reference/config-options/#node-id) - {{% code-placeholder-key %}}`SOURCE_BUCKET`{{% /code-placeholder-key %}}: your InfluxDB data bucket - {{% code-placeholder-key %}}`BACKUP_BUCKET`{{% /code-placeholder-key %}}: your backup destination bucket @@ -267,9 +267,9 @@ echo "Backup completed to $BACKUP_DIR" ``` Replace the following: -- {{% code-placeholder-key %}}`CLUSTER_ID`{{% /code-placeholder-key %}}: your [cluster ID](/influxdb3/enterprise/reference/config-options/#cluster-id) -- {{% code-placeholder-key %}}`COMPACTOR_NODE`{{% /code-placeholder-key %}}: your [compactor](/influxdb3/enterprise/get-started/multi-server/#high-availability-with-a-dedicated-compactor) node ID -- {{% code-placeholder-key %}}`NODE1`, `NODE2`, `NODE3`{{% /code-placeholder-key %}}: your data [node IDs](/influxdb3/enterprise/reference/config-options/#node-id) +- {{% code-placeholder-key %}}`CLUSTER_ID`{{% /code-placeholder-key %}}: your [cluster ID](/influxdb3/version/reference/config-options/#cluster-id) +- {{% code-placeholder-key %}}`COMPACTOR_NODE`{{% /code-placeholder-key %}}: your [compactor](/influxdb3/version/get-started/multi-server/#high-availability-with-a-dedicated-compactor) node ID +- {{% code-placeholder-key %}}`NODE1`, `NODE2`, `NODE3`{{% /code-placeholder-key %}}: your data [node IDs](/influxdb3/version/reference/config-options/#node-id) {{% /tab-content %}} @@ -313,7 +313,7 @@ systemctl start influxdb3 || docker start influxdb3-core ``` Replace the following: -- {{% code-placeholder-key %}}`NODE_ID`{{% /code-placeholder-key %}}: your [node ID](/influxdb3/core/reference/config-options/#node-id) +- {{% code-placeholder-key %}}`NODE_ID`{{% /code-placeholder-key %}}: your [node ID](/influxdb3/version/reference/config-options/#node-id) - {{% code-placeholder-key %}}`BACKUP_DATE`{{% /code-placeholder-key %}}: backup directory timestamp (for example, 20240115-143022) #### S3 restore example @@ -392,9 +392,9 @@ done ``` Replace the following: -- {{% code-placeholder-key %}}`CLUSTER_ID`{{% /code-placeholder-key %}}: your [cluster ID](/influxdb3/enterprise/reference/config-options/#cluster-id) -- {{% code-placeholder-key %}}`COMPACTOR_NODE`{{% /code-placeholder-key %}}: your [compactor](/influxdb3/enterprise/get-started/multi-server/#high-availability-with-a-dedicated-compactor) node ID -- {{% code-placeholder-key %}}`NODE1`, `NODE2`, `NODE3`{{% /code-placeholder-key %}}: your data [node IDs](/influxdb3/enterprise/reference/config-options/#node-id) +- {{% code-placeholder-key %}}`CLUSTER_ID`{{% /code-placeholder-key %}}: your [cluster ID](/influxdb3/version/reference/config-options/#cluster-id) +- {{% code-placeholder-key %}}`COMPACTOR_NODE`{{% /code-placeholder-key %}}: your [compactor](/influxdb3/version/get-started/multi-server/#high-availability-with-a-dedicated-compactor) node ID +- {{% code-placeholder-key %}}`NODE1`, `NODE2`, `NODE3`{{% /code-placeholder-key %}}: your data [node IDs](/influxdb3/version/reference/config-options/#node-id) - {{% code-placeholder-key %}}`BACKUP_DATE`{{% /code-placeholder-key %}}: backup timestamp - {{% code-placeholder-key %}}`BACKUP_BUCKET`{{% /code-placeholder-key %}}: bucket containing backup - {{% code-placeholder-key %}}`TARGET_BUCKET`{{% /code-placeholder-key %}}: target bucket for restoration @@ -447,9 +447,9 @@ chown -R influxdb:influxdb ${DATA_DIR} ``` Replace the following: -- {{% code-placeholder-key %}}`CLUSTER_ID`{{% /code-placeholder-key %}}: your [cluster ID](/influxdb3/enterprise/reference/config-options/#cluster-id) -- {{% code-placeholder-key %}}`COMPACTOR_NODE`{{% /code-placeholder-key %}}: your [compactor](/influxdb3/enterprise/get-started/multi-server/#high-availability-with-a-dedicated-compactor) node ID -- {{% code-placeholder-key %}}`NODE1`, `NODE2`, `NODE3`{{% /code-placeholder-key %}}: your data [node IDs](/influxdb3/enterprise/reference/config-options/#node-id) +- {{% code-placeholder-key %}}`CLUSTER_ID`{{% /code-placeholder-key %}}: your [cluster ID](/influxdb3/version/reference/config-options/#cluster-id) +- {{% code-placeholder-key %}}`COMPACTOR_NODE`{{% /code-placeholder-key %}}: your [compactor](/influxdb3/version/get-started/multi-server/#high-availability-with-a-dedicated-compactor) node ID +- {{% code-placeholder-key %}}`NODE1`, `NODE2`, `NODE3`{{% /code-placeholder-key %}}: your data [node IDs](/influxdb3/version/reference/config-options/#node-id) - {{% code-placeholder-key %}}`BACKUP_DATE`{{% /code-placeholder-key %}}: backup directory timestamp {{% /show-in %}} From 7fcd338b2ee1d97f2400700c260f87de116edf44 Mon Sep 17 00:00:00 2001 From: Peter Barnett Date: Mon, 25 Aug 2025 09:32:48 -0400 Subject: [PATCH 6/6] update: fix some wording and call out restore process --- content/influxdb3/core/admin/backup-restore.md | 2 +- .../enterprise/admin/backup-restore.md | 2 +- .../shared/influxdb3-admin/backup-restore.md | 17 +++++++++++++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/content/influxdb3/core/admin/backup-restore.md b/content/influxdb3/core/admin/backup-restore.md index 7f8cb23b9..da22891ee 100644 --- a/content/influxdb3/core/admin/backup-restore.md +++ b/content/influxdb3/core/admin/backup-restore.md @@ -2,7 +2,7 @@ title: Back up and restore data seotitle: Back up and restore {{< product-name >}} description: > - Manually back up and restore your {{< product-name >}} instance by copying + Back up and restore your {{< product-name >}} instance by copying object storage files in the recommended order. menu: influxdb3_core: diff --git a/content/influxdb3/enterprise/admin/backup-restore.md b/content/influxdb3/enterprise/admin/backup-restore.md index a82b41f7b..c066fb8d1 100644 --- a/content/influxdb3/enterprise/admin/backup-restore.md +++ b/content/influxdb3/enterprise/admin/backup-restore.md @@ -2,7 +2,7 @@ title: Back up and restore data seotitle: Back up and restore {{< product-name >}} description: > - Manually back up and restore your {{< product-name >}} cluster by copying + Back up and restore your {{< product-name >}} cluster by copying object storage files in the recommended order for each node type. menu: influxdb3_enterprise: diff --git a/content/shared/influxdb3-admin/backup-restore.md b/content/shared/influxdb3-admin/backup-restore.md index 1ea93c0f6..8aed7dd78 100644 --- a/content/shared/influxdb3-admin/backup-restore.md +++ b/content/shared/influxdb3-admin/backup-restore.md @@ -4,8 +4,7 @@ Back up your data by copying object storage files in a specific order to ensure > [!Warning] > Currently, {{% product-name %}} does not include built-in backup and restore tools. -> Because copying files during periods of activity is a transient process, the manual backup process _cannot guarantee 100% reliability_. -> Follow the recommended procedures and copy order to minimize risk of creating inconsistent backups. +> 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 @@ -283,6 +282,13 @@ Replace the following: {{% show-in "core" %}} +**Recommended restore order:** +1. Catalog checkpoint file +2. Catalogs directory +3. WAL directory +4. Database (dbs) directory +5. Snapshots directory + #### File system restore example ```bash { placeholders="NODE_ID|BACKUP_DATE" } @@ -348,6 +354,13 @@ Replace the following: {{% show-in "enterprise" %}} +**Recommended restore order:** +1. Cluster catalog and checkpoint +2. License files +3. All nodes' snapshots, dbs, wal directories +4. Compactor node directories (cs, cd, c) + + #### S3 restore example ```bash { placeholders="CLUSTER_ID|COMPACTOR_NODE|NODE1|NODE2|NODE3|BACKUP_DATE|BACKUP_BUCKET|TARGET_BUCKET" }