以下是使用 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
注意事项
- 权限问题:确保执行用户对目标数据库有
SHOW
和SELECT
权限。 - 时间范围:
- 检查时区是否与数据库服务器一致。
- 时间范围对超级表、子表、普通表均生效。
- 存储路径:
- 备份目录需提前创建(脚本已自动处理)。
- 每个数据库独立目录,避免文件冲突。
- 性能影响:大量数据备份可能影响数据库性能,建议在低峰期操作。
扩展场景
- 定时任务:将脚本添加到
crontab
实现每日自动备份:# 每天凌晨3点备份 0 3 * * * /path/to/backup_script.sh
- 增量备份:结合
--start-time
和--end-time
实现增量备份逻辑。
通过以上方法,可灵活备份多个数据库的近期数据,并保留结构化备份目录。