备份和还原数据
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>/ | 表快照文件(服务器重启时重新生成,备份可选) |
备份过程
按建议顺序复制文件,以降低创建不一致备份的风险。尽可能在停机或负载最低期间执行备份。
建议的备份顺序
- 快照目录
- 数据库 (dbs) 目录
- WAL 目录
- 目录目录
- 目录检查点文件
#!/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:您的 节点 IDSOURCE_BUCKET:您的 InfluxDB 数据存储桶BACKUP_BUCKET:您的备份目标存储桶
还原过程
还原会覆盖现有数据。在继续之前,请务必验证您拥有正确的备份。
建议的还原顺序
- 目录检查点文件
- 目录目录
- WAL 目录
- 数据库 (dbs) 目录
- 快照目录
文件系统还原示例
#!/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:您的 节点 IDBACKUP_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:您的节点 IDBACKUP_DATE:备份时间戳BACKUP_BUCKET:包含备份的存储桶TARGET_BUCKET:还原的目标存储桶
重要注意事项
恢复预期
恢复会成功到某个一致的时间点,即备份中**包含的最新快照**。如果快照之后写入的数据的 WAL 在备份后被删除,则这些数据可能不存在。任何没有快照引用的 Parquet 文件都将被忽略。
Docker 注意事项
在容器中运行 InfluxDB 3 Core 时
- 卷一致性:在备份和还原操作中使用相同的卷挂载
- 文件权限:确保容器用户可以读取还原的文件(如有必要,请使用
chown) - 备份访问:挂载备份目录,以便将文件从容器复制到主机
表快照文件
<node_id>/table-snapshots/ 中的文件有意排除在备份之外
- 这些文件会被定期覆盖
- 它们会在服务器重启时自动重新生成
- 包含它们不会造成损害,但会不必要地增加备份大小
时间建议
- 在停机或负载最低期间执行备份
- 在数据库活动期间复制文件可能会创建不一致的备份
- 如果可用,请考虑使用文件系统或存储快照
- 压缩是可选的,但推荐用于长期存储
此页面是否有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对 InfluxDB 3 Core 和本文档提供反馈和错误报告。要获得支持,请使用以下资源
具有年度合同或支持合同的客户可以 联系 InfluxData 支持。