type
status
date
slug
summary
tags
category
icon
password
实现 Docker 部署的 TDengine 数据库的备份和迁移导入,满足每次备份路径唯一以及备份多个指定数据库的要求
基于taosdump 命令实现
1️⃣ 数据备份
备份脚本执行步骤:
- 初始化默认值
- 解析命令行参数
- 读取参数(-c 容器名称、-u 用户名、-p 密码、-D 数据库列表、-b 容器备份根目录、-o 宿主机备份根目录、-r 保留天数)。
- 检查必要参数
- 确认 DATABASES 是否提供(通过 -D 或环境变量)。
- 验证容器运行
- 生成备份路径
- 创建时间戳(格式 YYYYMMDD_HHMMSS)
- 设置容器内备份目录(如/var/lib/taos/backup/backup_20250412_151622)
- 设置宿主机备份文件路径(全量备份如/data/tdengine_3/data/backup/backup_full_20250412_151622.tar.gz)
- 创建宿主机目录
- 在宿主机创建备份目录(如/data/tdengine_3/data/backup/backup_20250412_151622)
- 创建容器内目录
- 在容器内创建备份目录并设置写权限(chmod 777)。
- 验证目录存在并可访问
- 执行 taosdump 备份
- 使用 taosdump -o 备份指定数据库到容器内目录
- 通过管道(echo '$PASSWORD' | ...)传递密码
- 清理临时文件
- 删除容器内错误日志(/tmp/taosdump_err.log)
- 压缩备份目录
- 将备份目录压缩为 .tar.gz 文件
- 如果压缩成功:
- 删除宿主机临时目录,打印删除结果(成功或警告)
- 删除容器内备份目录,打印删除结果(成功或警告)
- 清理旧备份:
- 删除超过保留天数(如 5 天)的 .tar.gz 文件。
- 打印清理结果(成功或警告)
- 输出完成信息
🟣 Shell脚本内容
🟣 使用方法
- 保存为 backup_tdengine_docker.sh。
- 添加执行权限:chmod +x backup_tdengine_docker.sh
- 使用默认值:
- 备份iot_reservoir_matrix到 /data/tdengine_3/data/backup/backup_YYYYMMDD_HHMMSS.tar.gz
- 指定数据库:
- 多容器:
🟣 关于多容器支持
脚本已通过 -c 参数很好地支持多容器,添加默认数据库后不会影响隔离性。可以进行以下进一步优化建议:
- 独立脚本:
- 为每个容器复制脚本,设置不同默认值:
- 运行:
- 配置文件(可选):
- 创建 tdengine_3.conf 和 tdengine_4.conf:
- 修改脚本支持:
- 运行:
- Cron 任务::
- 为每个容器设置独立定时任务:
2️⃣ 数据导入
导入脚本执行步骤:
- 输出完成信息
- 清理临时目录
- 删除容器内错误日志(/tmp/taosdump_err.log)。
- 删除宿主机解压目录
- 删除容器内备份目录
- 对清理失败的情况打印警告
- 执行 taosdump 导入
- 使用 taosdump-i 从容器内备份路径导入数据
- 通过管道(echo‘$PASSWORD'丨...)传递密码
- 创建容器内目录
- 在容器内创建备份目录并设置写权限(chmod777)
- 验证目录存在并可访问
- 解压备份文件
- 创建宿主机解压目录(如/data/tdengine_3/data/backup/backup_20250412_151622)
- tar.gz 文件解压到宿主机备份根目录
- 如果解压失败,清理临时目录并退出
- 生成备份路径
- 从备份文件名提取子路径(如 backup_20250412_151622)
- 计算容器内备份路径(如/var/lib/taos/backup/backup_20250412_151622)
- 验证容器运行
- 检查备份文件
- 验证备份文件是否存在
- 确认文件为·tar.gz 格式
- 检查必要参数
- 确认-i 参数(备份文件)是否提供)。
- 解析命令行参数
- 读取参数(-c 容器名称、-u 用户名、-p 密码、-i 备份文件、-b 容器备份根目录、-o 宿主机备份根目录)
- 优先级:命令行>环境变量>默认值
- 初始化默认值
🟣 Shell脚本内容
🟣 使用方法
- 保存为 restore_tdengine_docker.sh
- 添加执行权限:chmod +x restore_tdengine_docker.sh
- 使用默认值
- 导入到容器 tdengine_3
- 多容器:
- 容器 tdengine_3:
- 容器 tdengine_4:
- 覆盖用户名和密码:
- 环境变量:
🟣 多容器支持
导入脚本通过 -c 参数支持多容器,与备份脚本一致。以下是建议:
- 独立脚本:
- 为每个容器复制脚本,设置不同默认值:
- 运行:
- 配置文件:
- 创建 tdengine_3.conf:
- 修改脚本支持:
- 运行:
- 作者:十十乙
- 链接:https://shishiyi.cc/article/1d305292-33af-80f7-9cf3-e39c14f018ba
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。