taosdump备份多个数据库近10天的数据

发布于:2025-03-23 ⋅ 阅读:(26) ⋅ 点赞:(0)

以下是使用 taosdump 备份多个指定数据库近10天数据的详细步骤:


方法1:直接指定多个数据库名称

通过 --databases 参数直接指定多个数据库,逗号分隔:

#!/bin/bash

# 定义备份目录和时间范围
BACKUP_DIR="./backup"
START_TIME=$(date -d "10 days ago" "+%Y-%m-%d %H:%M:%S")
END_TIME=$(date "+%Y-%m-%d %H:%M:%S")

# 指定要备份的数据库列表(用空格分隔)
DATABASES="db1 db2 db3"

# 执行备份
for DB in $DATABASES; do
  echo "Backing up $DB from $START_TIME to $END_TIME"
  taosdump -o "${BACKUP_DIR}/${DB}" -u root -p taosdata \
    --databases "$DB" \
    --start-time "$START_TIME" \
    --end-time "$END_TIME"
done

方法2:从文件读取数据库列表

将数据库名称保存在文件中(例如 db_list.txt),按需修改:

#!/bin/bash

BACKUP_DIR="./backup"
START_TIME=$(date -d "10 days ago" "+%Y-%m-%d %H:%M:%S")
END_TIME=$(date "+%Y-%m-%d %H:%M:%S")
DB_LIST_FILE="db_list.txt"  # 文件内容示例:db1\ndb2\ndb3

# 从文件读取数据库列表
DATABASES=$(cat "$DB_LIST_FILE")

for DB in $DATABASES; do
  mkdir -p "${BACKUP_DIR}/${DB}"
  taosdump -o "${BACKUP_DIR}/${DB}" -u root -p taosdata \
    --databases "$DB" \
    --start-time "$START_TIME" \
    --end-time "$END_TIME"
done

关键参数说明

参数 说明
--databases 指定要备份的数据库名称(支持逗号分隔或循环遍历)
--start-time 备份起始时间(格式 YYYY-MM-DD HH:mm:ss
--end-time 备份结束时间(默认当前时间)
-o 备份输出目录(建议每个数据库单独目录)

恢复数据

恢复指定数据库的备份:

taosdump -i ./backup/db1 -u root -p taosdata

注意事项

  1. 权限问题:确保执行用户对目标数据库有 SHOWSELECT 权限。
  2. 时间范围
    • 检查时区是否与数据库服务器一致。
    • 时间范围对超级表、子表、普通表均生效。
  3. 存储路径
    • 备份目录需提前创建(脚本已自动处理)。
    • 每个数据库独立目录,避免文件冲突。
  4. 性能影响:大量数据备份可能影响数据库性能,建议在低峰期操作。

扩展场景

  • 定时任务:将脚本添加到 crontab 实现每日自动备份:
    # 每天凌晨3点备份
    0 3 * * * /path/to/backup_script.sh
    
  • 增量备份:结合 --start-time--end-time 实现增量备份逻辑。

通过以上方法,可灵活备份多个数据库的近期数据,并保留结构化备份目录。