文档文档

备份和还原数据

InfluxDB 3 Core 将所有数据和元数据持久化到对象存储中。通过按特定顺序复制对象存储文件来备份数据,以确保一致性和可靠性。

目前,InfluxDB 3 Core 不包含内置的备份和还原工具。由于在活动期间复制文件是一个瞬态过程,我们强烈建议您遵循以下程序和复制顺序,以最大限度地降低创建不一致备份的风险。

支持的对象存储

InfluxDB 3 支持以下对象存储后端进行数据持久化

  • 文件系统 (本地目录)
  • AWS S3 和 S3 兼容存储 (MinIO)
  • Azure Blob Storage
  • Google Cloud Storage

备份和还原过程不适用于基于内存的 对象存储

文件结构

位置描述
<node_id>/所有节点状态的根目录
<node_id>/_catalog_checkpoint目录状态检查点文件
<node_id>/catalogs/跟踪目录状态更改的目录日志文件
<node_id>/wal/写前日志文件,包含已写入的数据
<node_id>/snapshots/汇总持久化的 Parquet 文件的快照文件
<node_id>/dbs/<db>/<table>/<date>/数据库和时间组织的 Parquet 文件
<node_id>/table-snapshots/<db>/<table>/表快照文件(服务器重启时重新生成,备份可选)

备份过程

按建议顺序复制文件,以降低创建不一致备份的风险。尽可能在停机或负载最低期间执行备份。

建议的备份顺序

  1. 快照目录
  2. 数据库 (dbs) 目录
  3. WAL 目录
  4. 目录目录
  5. 目录检查点文件
#!/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"

NODE_ID 替换为您的 节点 ID

此示例适用于使用卷挂载进行数据持久化的 Docker 容器。调整 DATA_DIR 路径以匹配您的卷挂载配置。

#!/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}"

替换以下内容:

  • NODE_ID:您的 节点 ID
  • SOURCE_BUCKET:您的 InfluxDB 数据存储桶
  • BACKUP_BUCKET:您的备份目标存储桶

还原过程

还原会覆盖现有数据。在继续之前,请务必验证您拥有正确的备份。

建议的还原顺序

  1. 目录检查点文件
  2. 目录目录
  3. WAL 目录
  4. 数据库 (dbs) 目录
  5. 快照目录

文件系统还原示例

#!/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

替换以下内容:

  • NODE_ID:您的 节点 ID
  • BACKUP_DATE:备份目录时间戳(例如,20240115-143022)

S3 还原示例

#!/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

替换以下内容:

  • NODE_ID:您的节点 ID
  • BACKUP_DATE:备份时间戳
  • BACKUP_BUCKET:包含备份的存储桶
  • TARGET_BUCKET:还原的目标存储桶

重要注意事项

恢复预期

恢复会成功到某个一致的时间点,即备份中**包含的最新快照**。如果快照之后写入的数据的 WAL 在备份后被删除,则这些数据可能不存在。任何没有快照引用的 Parquet 文件都将被忽略。

Docker 注意事项

在容器中运行 InfluxDB 3 Core 时

  • 卷一致性:在备份和还原操作中使用相同的卷挂载
  • 文件权限:确保容器用户可以读取还原的文件(如有必要,请使用 chown
  • 备份访问:挂载备份目录,以便将文件从容器复制到主机

表快照文件

<node_id>/table-snapshots/ 中的文件有意排除在备份之外

  • 这些文件会被定期覆盖
  • 它们会在服务器重启时自动重新生成
  • 包含它们不会造成损害,但会不必要地增加备份大小

时间建议

  • 在停机或负载最低期间执行备份
  • 在数据库活动期间复制文件可能会创建不一致的备份
  • 如果可用,请考虑使用文件系统或存储快照
  • 压缩是可选的,但推荐用于长期存储

此页面是否有帮助?

感谢您的反馈!


InfluxDB 3.8 新特性

InfluxDB 3.8 和 InfluxDB 3 Explorer 1.6 的主要增强功能。

查看博客文章

InfluxDB 3.8 现已适用于 Core 和 Enterprise 版本,同时发布了 InfluxDB 3 Explorer UI 的 1.6 版本。本次发布着重于操作成熟度,以及如何更轻松地部署、管理和可靠地运行 InfluxDB。

更多信息,请查看

InfluxDB Docker 的 latest 标签将指向 InfluxDB 3 Core

在 **2026 年 2 月 3 日**,InfluxDB Docker 镜像的 latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。

如果使用 Docker 来安装和运行 InfluxDB,latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。例如,如果使用 Docker 运行 InfluxDB v2,请将 latest 版本标签替换为 Docker pull 命令中的特定版本标签 — 例如

docker pull influxdb:2