PC-HEWEI\hewei 6ec054be01 1 před 4 měsíci
..
README.md 6ec054be01 1 před 4 měsíci
build.sh 6ec054be01 1 před 4 měsíci
cleandb.go 6ec054be01 1 před 4 měsíci
config.json 6ec054be01 1 před 4 měsíci
main.go 6ec054be01 1 před 4 měsíci

README.md

数据库清理工具 (CleanDB CLI)

这是一个基于 Go 语言编写的命令行工具,专门用于通过 SSH 隧道 安全地连接并清理远程 MongoDB 和 Redis 数据库。

功能特性

  • 可选 SSH 隧道:如果配置文件中未指定 ssh.host,工具将尝试直接连接数据库。适用于本地或直接可达的网络环境。
  • 多环境管理:在一个配置文件中定义多个环境(如 dev, test, prod),轻松切换。
  • 交互式确认:在执行任何删除操作前都会列出清单并要求二次确认,防止误操作。
  • MongoDB 清理:支持批量删除(Drop)指定的数据库。
  • Redis 清理:支持删除指定的 Key,且支持使用 * 通配符进行批量模式匹配删除。

目录结构

  • cleandb.go: 核心连接逻辑(SSH 隧道与数据库拨号器)。
  • main.go: 命令行程序入口,负责配置加载、交互逻辑及执行清理任务。
  • config.json: 配置文件模版。

运行环境

  • Go 1.24+ (已在 go.mod 中确认)
  • 依赖项:
    • golang.org/x/crypto/ssh
    • go.mongodb.org/mongo-driver/v2
    • github.com/go-redis/redis/v8

使用步骤

1. 编译工具

使用自动构建脚本 (推荐)

工具内置了 build.sh 脚本,可以一键编译出适用于 Windows、Linux 和 macOS 的版本:

# 赋予执行权限
chmod +x tool/cleandb/build.sh
# 执行编译
./tool/cleandb/build.sh

编译成功后,可执行文件将生成在 tool/cleandb/publish 目录下。

手动编译

在项目根目录下执行:

go build -o tool/cleandb/cleandb.exe tool/cleandb/*.go

2. 配置文件说明 (config.json)

配置文件采用环境名为 Key 的 JSON 结构。每个环境包含 sshmongoredis 三大核心配置块。

配置项详解

配置路径 类型 必填 说明
[env].ssh.host string SSH 跳板机的 IP 地址。若为空则直连数据库
[env].ssh.port int SSH 服务端口 (通常为 22)
[env].ssh.user string SSH 登录用户名
[env].ssh.password string SSH 登录密码 (暂未支持密钥登录,如需请留空并联系开发)
[env].mongo.config.host string 数据库在远程内网中的 IP 或 127.0.0.1
[env].mongo.config.port int MongoDB 端口 (通常为 27017)
[env].mongo.config.user string MongoDB 用户名
[env].mongo.config.password string MongoDB 密码
[env].mongo.config.auth_source string 认证数据库,默认为 admin
[env].mongo.drop_databases []string 待清理列表:包含在该数组内的数据库将被执行 Drop
[env].redis.config.host string Redis 在远程内网中的 IP 或 127.0.0.1
[env].redis.config.port int Redis 端口 (通常为 6379)
[env].redis.config.user string Redis 6.0+ 用户名 (可选)
[env].redis.config.password string Redis 认证密码
[env].redis.delete_keys []string 待清理列表:支持具体 Key 名或带 * 的通配符模式

示例配置

{
  "dev": {
    "ssh": {
      "host": "47.115.229.244",
      "port": 22,
      "user": "root",
      "password": "ssh_password"
    },
    "mongo": {
      "config": {
        "host": "172.25.236.27",
        "port": 27017,
        "user": "f1user",
        "password": "mongo_password",
        "auth_source": "admin"
      },
      "drop_databases": ["su-f1-game"]
    },
    "redis": {
      "config": {
        "host": "172.25.236.27",
        "port": 46379,
        "password": "redis_password"
      },
      "delete_keys": ["test-center:bind-uid:*"]
    }
  }
}

3. 执行任务

工具采用 位置参数 执行:

方式 1:指定路径和环境

# 格式: ./cleandb <配置文件路径> <环境名称>
./tool/cleandb/cleandb.exe tool/cleandb/config.json dev

方式 2:使用默认配置 (推荐)

# 默认加载当前目录下的 config.json,仅需提供环境名称
./tool/cleandb/cleandb.exe dev

参数说明:

  • configPath: 配置文件路径。
  • envName: 环境名称(对应配置文件中的顶级 Key)。

注意事项

[!CAUTION]

  1. 此工具执行的是物理删除操作,操作前请务必确认环境参数正确。
  2. 请勿将包含真实密码的 config.json 提交至代码版本控制仓库。
  3. SSH 隧道在连接不稳定时可能会导致 Handshake 失败,请确保网络状况良好。