type
status
date
slug
summary
tags
category
icon
password
😀
实现 Docker 部署的 TDengine 数据库的备份和迁移导入,满足每次备份路径唯一以及备份多个指定数据库的要求
基于taosdump 命令实现

1️⃣ 数据备份

👉
备份脚本执行步骤:
  1. 初始化默认值
  1. 解析命令行参数
      • 读取参数(-c 容器名称、-u 用户名、-p 密码、-D 数据库列表、-b 容器备份根目录、-o 宿主机备份根目录、-r 保留天数)。
  1. 检查必要参数
      • 确认 DATABASES 是否提供(通过 -D 或环境变量)。
  1. 验证容器运行
  1. 生成备份路径
      • 创建时间戳(格式 YYYYMMDD_HHMMSS
      • 设置容器内备份目录(如/var/lib/taos/backup/backup_20250412_151622
      • 设置宿主机备份文件路径(全量备份如/data/tdengine_3/data/backup/backup_full_20250412_151622.tar.gz
  1. 创建宿主机目录
      • 在宿主机创建备份目录(如/data/tdengine_3/data/backup/backup_20250412_151622
  1. 创建容器内目录
      • 在容器内创建备份目录并设置写权限(chmod 777)。
      • 验证目录存在并可访问
  1. 执行 taosdump 备份
      • 使用 taosdump -o 备份指定数据库到容器内目录
      • 通过管道(echo '$PASSWORD' | ...)传递密码
  1. 清理临时文件
      • 删除容器内错误日志(/tmp/taosdump_err.log
  1. 压缩备份目录
      • 将备份目录压缩为 .tar.gz 文件
      • 如果压缩成功:
        • 删除宿主机临时目录,打印删除结果(成功或警告)
        • 删除容器内备份目录,打印删除结果(成功或警告)
  1. 清理旧备份
      • 删除超过保留天数(如 5 天)的 .tar.gz 文件。
      • 打印清理结果(成功或警告)
  1. 输出完成信息

🟣 Shell脚本内容

🟣 使用方法

  1. 保存为 backup_tdengine_docker.sh
  1. 添加执行权限:chmod +x backup_tdengine_docker.sh
  1. 使用默认值
      • 备份iot_reservoir_matrix/data/tdengine_3/data/backup/backup_YYYYMMDD_HHMMSS.tar.gz
  1. 指定数据库
    1. 多容器

      🟣 关于多容器支持

      脚本已通过 -c 参数很好地支持多容器,添加默认数据库后不会影响隔离性。可以进行以下进一步优化建议:
      1. 独立脚本
          • 为每个容器复制脚本,设置不同默认值:
          • 运行:
      1. 配置文件(可选)
          • 创建 tdengine_3.conftdengine_4.conf
          • 修改脚本支持:
          • 运行:
      1. Cron 任务::
          • 为每个容器设置独立定时任务:

      2️⃣ 数据导入

      👉
      导入脚本执行步骤:
      1. 输出完成信息
      1. 清理临时目录
          • 删除容器内错误日志(/tmp/taosdump_err.log)。
          • 删除宿主机解压目录
          • 删除容器内备份目录
          • 对清理失败的情况打印警告
      1. 执行 taosdump 导入
          • 使用 taosdump-i 从容器内备份路径导入数据
          • 通过管道(echo‘$PASSWORD'丨...)传递密码
      1. 创建容器内目录
          • 在容器内创建备份目录并设置写权限(chmod777
          • 验证目录存在并可访问
      1. 解压备份文件
          • 创建宿主机解压目录(如/data/tdengine_3/data/backup/backup_20250412_151622
          • tar.gz 文件解压到宿主机备份根目录
          • 如果解压失败,清理临时目录并退出
      1. 生成备份路径
          • 从备份文件名提取子路径(如 backup_20250412_151622
          • 计算容器内备份路径(如/var/lib/taos/backup/backup_20250412_151622
      1. 验证容器运行
      1. 检查备份文件
          • 验证备份文件是否存在
          • 确认文件为·tar.gz 格式
      1. 检查必要参数
          • 确认-i 参数(备份文件)是否提供)。
      1. 解析命令行参数
          • 读取参数(-c 容器名称、-u 用户名、-p 密码、-i 备份文件、-b 容器备份根目录、-o 宿主机备份根目录)
          • 优先级:命令行>环境变量>默认值
      1. 初始化默认值

      🟣 Shell脚本内容

      🟣 使用方法

      1. 保存为 restore_tdengine_docker.sh
      1. 添加执行权限:chmod +x restore_tdengine_docker.sh
      1. 使用默认值
          • 导入到容器 tdengine_3
      1. 多容器
          • 容器 tdengine_3:
          • 容器 tdengine_4:
      1. 覆盖用户名和密码
        1. 环境变量

          🟣 多容器支持

          导入脚本通过 -c 参数支持多容器,与备份脚本一致。以下是建议:
          1. 独立脚本
              • 为每个容器复制脚本,设置不同默认值:
              • 运行:
          1. 配置文件
              • 创建 tdengine_3.conf
              • 修改脚本支持:
              • 运行:
           
          [电影][中国台湾][阳光普照]使用acme.sh通过DNS方式申请并安装证书
          Loading...