Databasement远程Agent深度揭秘零入站端口备份防火墙隔离网络【免费下载链接】databasementSelf-hosted database backup manager with a web UI. Schedule, backup, and restore MySQL, PostgreSQL, MariaDB, Microsoft SQL Server, MongoDB, SQLite Redis to S3, SFTP, Samba or local storage. SSH Tunnel support.项目地址: https://gitcode.com/gh_mirrors/da/databasementDatabasement 是一款自托管的开源数据库备份管理系统支持定时备份与恢复 MySQL、PostgreSQL、MariaDB、SQL Server、MongoDB、SQLite、Redis 等数据库并可备份到 S3、SFTP、Samba 或本地存储。当数据库藏在防火墙后面、无法开任何入站端口时它的远程 Agent功能就成了救星数据库网络零入站端口仅需出站的 HTTPS 连接备份任务照常调度、恢复照常在界面里完成。为什么需要远程 Agent出站代替入站常规的备份链路需要 Databasement主动连入数据库网络SSH 隧道方式也需要目标网络暴露一个可抵达的 SSH 端口入站访问。但很多生产环境——合规要求、金融防火墙、客户自管的 VPC——根本不允许打开任何入站端口。远程 Agent 的思路是反向的不再外面连进来而是在数据库旁边跑一个小型 AgentAgent主动向外通过 HTTPS 轮询 Databasement 服务器数据库全程留在私网内网络上只有出站流量私网内部 数据库 ←dump— Agent —upload→ 存储卷S3 / SFTP 私网出口 Agent ⇢仅出站 HTTPS轮询 → 认领 → 汇报⇢ Databasement 服务器 一句话记忆SSH 隧道要进得去Agent 只要出得来。官方对比说明见 docs/docs/user-guide/agents.mdSSH 隧道方案见 docs/docs/user-guide/ssh-tunnel.md。工作原理心跳、认领、执行、汇报Agent 其实是同一个 Databasement 镜像以 Agent 模式运行内部执行agent:run命令核心循环只有四步Poll轮询Agent 发送心跳并询问服务器有活干吗默认每 5 秒一次Claim认领服务器把一份自包含的任务单交给它——包含数据库信息、调度计划和目标存储卷Run执行Agent 在本地网络 dump 数据库并把快照直传到你配置好的存储卷Report汇报Agent 回报文件名、大小、校验和与日志快照随即像普通备份一样出现在界面中对应源码非常值得一看Agent 轮询主循环AgentRunCommand.phpAgent 与服务器通信的 HTTPS 客户端心跳 / 认领 / ack / failAgentApiClient.php任务状态机pending → claimed → running → completed/failed含租约续期AgentJob.php服务器侧 Agent API 路由仅 Agent 专用 token 可访问routes/api.php几个值得注意的工程细节任务负载是加密存储的encrypted:array字段服务器数据库里看不到数据库凭据明文租约机制认领的任务默认 5 分钟租约见 config/agent.phpAgent 掉线后任务可被回收重跑鉴权有独立限流Agent token 认证失败走单独的失败限流中间件防暴力猜解认证失败时 Agent 直接报错退出提示检查DATABASEMENT_AGENT_TOKEN三步完成部署最快配置方法第 1 步创建 Agent 并复制 token进入界面的Agents → Add Agent创建时页面会只显示一次token务必立即复制保存。第 2 步在数据库旁边启动 Agent 容器在能访问数据库、且能出站到你 Databasement 服务器的机器上运行示例命令取自官方文档docker run -d --restart unless-stopped \ --name databasement-agent \ -e DATABASEMENT_URLhttps://databasement.example.com \ -e DATABASEMENT_AGENT_TOKEN粘贴token \ davidcrty/databasement:1只要设置了DATABASEMENT_URL容器就自动进入 Agent 模式它只执行agent:run自身不需要任何数据库配置也不占用额外资源。第 3 步把 Agent 绑定到数据库服务器在数据库服务器的Agent字段选择刚创建的 Agent。此后该服务器的所有备份、以及以它为目标的所有恢复都会经由 Agent 执行。Agents 页面会实时显示每个 Agent 的连接状态在线判断标准60 秒内有心跳见 Agent.php方便确认轮询正常。适用场景与使用限制✅ 什么时候该用 Agent数据库所在网络禁止打开任何入站端口合规、防火墙、客户 VPC需要一套 Databasement 服务器统一编排分布在多个隔离网络中的数据库找不到可达的 SSH 主机SSH 隧道走不通⚠️ 三条必须知道的限制限制说明不支持本地卷Agent 在自己的网络里上传快照目标必须是 Agent 够得到的 S3 兼容或 SFTP/FTP 存储不能用服务器本地存储恢复需读可达的卷恢复时在 Agent 网络下载快照所以快照必须有一份存在 Agent 可达的卷上服务器本地存储的副本不会作为来源出现恢复不自动重试恢复会删除并重建目标库Agent 掉线中断后只会标记失败不会重跑另一个实操提醒恢复任务需要 Agent 版本支持。老版本 Agent 能继续做备份但恢复任务会一直挂起直到超时——对某台服务器做恢复前先升级它的 Agent 镜像。进阶玩法通过 Agent 做定时恢复Agent 不只是备份通道。选择一台 Agent 服务器作为目标后无论界面、REST API 还是 MCP 触发的恢复都会被交给该服务器的 Agent 执行Agent 下载快照 → 恢复 → 日志实时回传。这让一个很实用的场景成为可能生产库定时刷新到隔离网络中的测试库——测试网络 Databasement 根本够不着但 Agent 在里面配合定时恢复就能实现无人值守的周期刷新。总结为什么 Agent 是终极隔离网络方案方案需要的访问方向适用条件直连数据库端口可达最简单优先使用SSH 隧道入站到 SSH 主机有可达的跳板/SSH 主机远程 Agent仅出站 HTTPS防火墙禁止任何入站端口Agent 模式的独特价值就一句话数据库网络只需要一个出站的 443。备份照常调度、快照照常出现在界面、恢复照常一键完成——而对外的攻击面只剩下你本来就信任的那台 Databasement 服务器。 完整说明见官方文档docs/docs/user-guide/agents.md【免费下载链接】databasementSelf-hosted database backup manager with a web UI. Schedule, backup, and restore MySQL, PostgreSQL, MariaDB, Microsoft SQL Server, MongoDB, SQLite Redis to S3, SFTP, Samba or local storage. SSH Tunnel support.项目地址: https://gitcode.com/gh_mirrors/da/databasement创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考