@farhan0431/db-snap

中文文档
0.4.4发布于 2026/11/06MIT零依赖近 30 天下载 2156

为SQLite,PostgreSQL,和MySQL/MariaDB开发数据库快照和MCP服务器.

中文使用文档
文档目录12 节
  1. 安装
  2. 移民排练和CI
  3. 快开始
  4. 与 AI 助手使用
  5. 图标
  6. 快照 diff
  7. 检查站、诊断和沙盒实验
  8. 可移植归档和 Git 风格行预览
  9. 恢复中断的 MySQL/ MariaDB 恢复
  10. 数据库支持
  11. 安全问题
  12. 链接

dbsnap (英语)

用于地方发展和AI编码代理的数据库检查站.

在迁移或批量编辑前保存快照,然后恢复计划 数据,如果需要滚回。 从终端使用 dbsnap 或连接其 内置的 MCP 服务器为 AI 助手.

支助 SQL 点, (中文(简体) ), 邮递SQL,以及 MySQL/马里亚DBNpm 软件包 捆绑为 Windows x64、 macOS Intel 和 Apple Silicon 预建的二进制 Linux x64 (glibc and musl)和ARM64 (glibc).

MySQL/MariaDB恢复了原始数据库上的作品. 停止应用程序 联系,作家, 和预定的活动先。 恢复是非原子和 需要贴上安全图 中断的恢复必须恢复 在另一个恢复之前的快照; 参见下面的恢复步骤 .

安装

需要节点.js 16或后.

可移植档案、服务器行预览、 Git 输出和 PostgreSQL 堆放 沙盒需要dbsnap v.0.4.1或更后.

v. 4.2 绑定 init ,查找本地客户端 土生土长地点,然后 diff-rows --show-values 选择 Git 样式输出 当未给出格式时.

npm install -g @farhan0431/db-snap
dbsnap --version

或者在没有全局安装的情况下运行 :

npx -y @farhan0431/db-snap --help

移民排练和CI

使用 dbsnap 来捕捉恢复点, 运行对可支配的迁移 开发或建立数据库,并在 展开 CLI 以脚本运行, 内置的 MCP 服务器给出编码 特工人员进入检查站和检查工具.

明确指向沙盒上的移民跑道 保持生产 在你的现有部署和复原中推出和生产备份 系统。 在共享环境中使用消毒数据.

快开始

在包含您的开发的工程根中运行这些命令 数据库 :

dbsnap init
dbsnap status
dbsnap save "before migration"

# Run your migration or make changes here.

dbsnap list
dbsnap restore "before migration"  # restores the selected snapshot

目标分辨率是 --db,然后处理 DATABASE_URL,然后是项目 .env, (中文(简体) ), 然后是常见的 SQLite 路径。 选择一个 明确数据库,使用 dbsnap init --db ./prisma/dev.db。检查目标 与 dbsnap status 在恢复前:恢复更改了活数据库.

快照和元数据 .dbsnap/ 在你的项目。 目录是 添加到 .gitignore 初始化期间.

与 AI 助手使用

在兼容客户端中将 dbsnap 注册为 MCP 服务器 。 例如,添加 以下是您的项目 .cursor/mcp.json数字 :

{
  "mcpServers": {
    "dbsnap": {
      "command": "dbsnap",
      "args": ["mcp"]
    }
  }
}

重新启动客户端并请求其运行 dbsnap_status 确认数据库 在做出改变之前。 服务器还曝光创建,列表,恢复, 和普鲁纳快照。 它从工作目录中解决项目,所以 在您想要保护的项目中启动它 。 目前来源披露了11个工具:

MCP 工具目的
dbsnap_status检查目标、引擎和快照存储器.
dbsnap_create_snapshot保存快照, 可选择提供 tag。 。 。 .
dbsnap_list_snapshots列出可用的还原点 .
dbsnap_diff比较所支持的快照 from 财务报告和审定财务报表 to。 。 。 .
dbsnap_restore_snapshot恢复选定的 tag_or_id,或最新快照.
dbsnap_prune粗体正整数 keep;被钉住的快照活下来了.
dbsnap_verify请检查快照散列/ 大小/ 重排, 或克隆存在; 没有 SQL 重放 .
dbsnap_doctor报告连通性,日记,待发GC和未跟踪文件.
dbsnap_diff_live保存并保留一个活检点,然后与 from。 。 。 .
dbsnap_diff_rows使用 from, (中文(简体) ), to,以及 table。 。 。 .

成果包括文本加结构 ok, (中文(简体) ), message,可选键入 data 财务报告和审定财务报表 广义错误代码 。 快照创建返回数据中准确的ID. 说明 描述行为,但不替换会话权限或引出.

恢复和prune在MCP中默认被禁用. 用于服务器 会话,从 dbsnap mcp --allow-destructive。每项行动都需要 通过MCP客户端支持引出批准;否则使用CLI.

要配置明确启用的会话, 请将服务器参数更改为 ["mcp", "--allow-destructive"]. 授权会议不批准个人 操作。 您的 MCP 客户端必须在场并返回确认 每一个恢复或发作.

dbsnap init 还写 .agents/skills/dbsnap/SKILL.md 在项目. 该技能是否自动被加载取决于 AI 客户端; 技能 文件与MCP服务器是独立的集成. 初始化保存已有的技能文件, 而不是覆盖本地文件 定制. 更新已安装的二进制不刷新已存在的 file; 升级时对照寄存器当前技能审查.

图标

命令目的
dbsnap init将项目绑入数据库 .
dbsnap status检查数据库和快照存储 .
dbsnap save [tag]创建快照; 标记是可选的 .
dbsnap rehearse before --fail-on-drop-table -- npx prisma migrate deploy在一个保留的 SQLite/PostgreSQL 沙盒上重排一个信任的迁移 .
dbsnap save before -m "Before migration" --git-branch用本地便条保存, 并记录可用的 Git 分支 .
dbsnap tag before baseline重命名快照标签 .
dbsnap rm baseline删除一个没有绑定的快照 .
dbsnap list列出快照ID和标签.
dbsnap restore [tag-or-id]还原快照; 省略最新选择器 .
dbsnap rollback恢复最新的快照 .
dbsnap prune --keep 5移除更古老的快照并保留最新的5个.
dbsnap diff before after比较 SQLite, PostgreSQL 克隆, 或 MySQL/ MariaDB 垃圾快照图和行数 .
dbsnap pin <tag-or-id>保护快照不被刷新; 使用 unpin 移除保护.
dbsnap unpin <tag-or-id>查看快照后删除保护 .
dbsnap prune --all删除所有未绑定的快照 .
dbsnap save tag --method dump创建可移植 PostgreSQL 垃圾快照 .
dbsnap verify [id-or-tag]检查一个或所有活动快照; 完整性/ 存在性不是一个恢复测试 .
dbsnap doctor诊断连接/ 恢复并报告未跟踪的文件而不删除它们 .
dbsnap recover恢复回收日记;模棱两可的PostgreSQL状态需要检查.
dbsnap exec -- npm run db:migrate儿童命令前的检查站;失败时保留,不自动回滚.
dbsnap diff-live before抓取并保留当前状态,然后进行比较.
dbsnap diff-live before --ephemeral比较而不保留恢复点 .
dbsnap diff-rows before after --table users按主键计算 默认限制为一万行 v0.4.1 添加服务器预览和 Git 风格输出.
dbsnap sandbox before --output experiment.dbFork SQLite 输入新文件; 现有文件永远不会被覆盖 .
dbsnap sandbox before创建一个独立的 PostgreSQL 克隆,记录在 sandboxes.json。 。 。 .
dbsnap sandbox before --docker-image mysql:8.0明确隔离的 MySQL 服务器; 使用 mariadb:11 马里亚DB。 需要多克帮忙.
dbsnap sandbox-list列出所记录的沙盒,其源快照,以及资源状态.
dbsnap sandbox-remove CONTAINER_ID在验证项目所有权后删除新建的 Docker 沙盒 .
dbsnap diff-report before after --fail-on-drop-tableJSON是用来自动化的 3号出口意味着一个表格被移除.

dbsnap list --json 财务报告和审定财务报表 dbsnap status --json 提供机器可读输出. 剪接的快照还能活下来 prune,包括: --all。 。 。 .

撤销特定更改时使用已记录的ID。 复制标记可能是 模棱两可. rollback 财务报告和审定财务报表 restore 没有选择者选择最新的 shapt,可以是前作恢复的自动安全快照.

快照 diff

v0.4.4 彩排提供一个沙盒连接到一个值得信赖的印花机和 报告计划/计算变化。 它保留了沙盒资源以及之前/之后 需要检查的快照,并丢弃了孩子的输出. 校验相机 使用它的环境连接。 命令具有用户权限和 能够选择其他连接。 MCP 需要会话授权和逐个调用 核准。 MySQL/MariaDB的排练和自动取出沙盒的工作正在进行中. 见 排练指南 用于超时限制,退出代码和清理.

dbsnap save before
# Make your development changes.
dbsnap save after
dbsnap diff before after

Diff 比较 快照,而不是当前实时数据库。 SQLite 比较 计划对象和行数。 PostgreSQL 克隆 diff 比较表格/视图 定义和行数。 MySQL/ MariaDB diff 读取已验证的标准垃圾堆 离线,包括多线 INSERT 数据,并比较表格定义 和行数。 它不会重放 SQL 到目标.

等行计数并不意味着等行数据. 单个行内容不是 比较。 PostgreSQL diff 排除索引、限制、例行和触发; MySQL/MariaDB diff 排除了观点,常规,触发和事件. 不支持 INSERT格式产生出错. 0.4.0版本及以后可比较两个版本 PostgreSQL 卸载离线文件 pg_restore: 全归档计划 从列清单的COPY数据中进行的更改和表数,不包括所有权, 权限、行内容和序列值。 混合克隆/存档 diff 是 不支持 .

diff-rows 额外支持 SQLite 添加/删除/更新的计数 打印值。 它需要明确的非 NULL 主密钥和匹配列 布局, 拒绝上面的预览 --limit (最多十万个). 服务器引擎行 diff 未执行. diff-live 使用存储并可能短暂使用栅栏 PostgreSQL 连接,因为它创建了常规保留快照.

检查站、诊断和沙盒实验

verify 财务报告和审定财务报表 doctor 打印 JSON。 核查失败退出非零。 医生 报告其报告失败的探测器,并不自动修复任何东西. recover 读取现有的 MySQL 日记的ID或应用清晰的 PostgreSQL 日记恢复。 它不修复已停止的数据库服务器或选择一个 任意恢复点。 SQLite 没有服务器恢复日志 .

exec 直接产出一个没有外壳的程序,首先会保存一个检查站. 快照失败阻止了执行. 儿童不及格者保留检查站和 返回其ID、退出代码和恢复命令;父退出非零。 产出 返回到每流64个基B. --db 选择检查点数据库,而不是 您的外部程序将使用数据库; 有意设置其环境. 任意命令执行是CLI唯一的,而不是MCP工具.

SQLite和PostgreSQL克隆沙盒让实验瞄准独立数据. 将您的迁移/应用程序明确连接到返回的文件/数据库. 清理是关闭沙盒连接后的手工操作 。 MySQL/马里亚DB 沙盒 需要明确 --docker-image mysql:8.0 或者说 mariadb:11: 一个单独的多克 服务器以原计划名称导入已核实的垃圾堆, 网络已禁用, 没有公布的端口/主机挂载/来源证书 。 使用 docker exec 用于 SQL 试验,然后明确取出返回的容器。 失败 导入只删除新建的容器。 页:1 支持从信任的 PostgreSQL 自定义垃圾堆中重放沙盒 。 见工作流程 下面的指南.

可移植归档和 Git 风格行预览

这些命令需要v. 4.1或以后.

dbsnap export before --output before.dbsnap
dbsnap import before.dbsnap --tag transferred
dbsnap diff-rows before after --table users --format git --show-values
  • 存档传输. 导入验证校验和登记新的快照 在目的地目录。 恢复是分开的。 存档包含 数据库内容,所以保持其私有性,只接受可信赖的档案. PostgreSQL 克隆导出需要匹配 pg_dump. MySQL/马里亚DB 需要 目的地的原始数据库名称.
  • 行预览. 使用带有明确主键的表格。 JSON 和 MCP 软件 返回计数。 Git 输出在布局不同时显示方案变化 当布局匹配并显示已存储行值 --show-values 提供. 将输出视为敏感。 默认限制为每快照一万行 每个快照最多可有10万个且有16个米B编码值预算.
  • 服务器重放 . PostgreSQL 行预览直接读取克隆并需要 --replay-dumps 被信任的垃圾场. dbsnap sandbox before 还接受 信任的 PostgreSQL 自定义垃圾堆 。 它需要匹配 pg_restore数据库 创建权限, 以及兼容的扩展 。 沙盒分享 PostgreSQL 服务器. MySQL/ MariaDB 行预览需要明确 --docker-image mysql:8.0 或者说 --docker-image mariadb:11 还有多克. MCP重放需要会话授权和逐个调用批准. 发光 终止可以留下需要清理的临时资源.

普鲁纳一直保持着退休记录 metadata.json.pending_gc 并重复他们的 记录了文物清理情况 共享幸存者数据和任意性 未跟踪文件被保存 。 医生报告 GC和未跟踪运行. 不要降级到一个不知道的老二进制 pending_gc 而不为所欲为.

恢复中断的 MySQL/ MariaDB 恢复

新的还原创建、同步和目录 清净相. 它保存了数据库本身并替换了里面的物体. --no-safety-snapshot 对于新鲜的 MySQL/MariaDB 恢复,则被拒绝.

如果恢复日志被写入后恢复失败 :

  1. 保留应用程序作者/连接和计划事件停止.

  2. 解决已报告的磁盘空间、连接或特权问题。 当地免费 空间检查不测量数据库服务器的存储.

  3. 在错误中读取回收编号或 .dbsnap/mysql-restore.json,然后运行 :

    dbsnap restore RECOVERY_ID
    

日记将恢复ID存储为JSON字符串. 其他恢复身份证明和 在等待追回时拒绝解皮。 恢复使用现有的 被绑定的快照; 它不会快照部分恢复的目标 . 如果日记有缺陷或恢复副本缺失/损坏,请保存 档案和调查。 不删除要绕过回收的日记 .

成功后,安全快照会一直被固定 直到你审查并明确 解开他们。 恢复为非原子状态,需要可信赖的垃圾堆;飞行前 检查并不妨碍另一个应用程序在重放时重新连接.

数据库支持

数据库抓图并恢复V. 4.1 预览和沙盒所需资源
SQL 点在线备份, 带有已复制块 。 恢复到现有的数据库文件 .主键行预览和沙盒作为新文件.已存在的 SQLite 文件 .
邮递SQL用于本地迭代的服务器侧克隆或用于传输的自定义堆放. 垃圾堆在切换前会恢复重放.直接读取克隆行 。 在明确请求时重放信任的自定义垃圾堆 。 创建来自任一种类的沙盒.用于服务器侧操作的数据库创建权限 。 匹配 - 主要 pg_dump 财务报告和审定财务报表 pg_restore 为了垃圾场.
MySQL/马里亚DB逻辑堆放有常规,触发,事件. 现场恢复使用被钉住的安全拷贝和日记.离线表计划/ Count diff. 使用多克进行行预览和沙盒.兼容本地客户端 PATH,用于一致性的交易表,以及用于在沙盒中重放的多克.

对于 PostgreSQL , 请在服务器上保留克隆并使用垃圾堆传输快照 在机器之间 对于 MySQL/MariaDB , 请从离线开始 diff启用 diff-rows --docker-image mysql:8.0 或者说 --docker-image mariadb:11 当你 需要修改行 。 目标项目必须使用原始数据库 名称,用于导入 MySQL/MariaDB 档案。 在现场恢复期间,停止 编剧和预定的事件,并保存了故障的复苏期刊.

安全问题

  • MCP只允许SQLite和回放数据库主机. 国家劳工局也允许 默认的私人网络目标。 当地的目标不一定安全.
  • 项目绑定检查, 当前的目标匹配记录的数据库 .
  • 在应用前恢复检查 SQLite 块和倾倒文物,默认情况下, 先创建安全快照. 如果无法创建该快照, 请恢复 停下来。 只有SQLite/PostgreSQL允许明确选择退出;新鲜的MySQL/MariaDB 恢复需要贴上安全快照.
  • PostgreSQL 服务器侧克隆有元数据指纹,而不是内容 校验和. dbsnap 检查复制在恢复前是否存在.
  • PostgreSQL 恢复不是原子;中断需要手动 复原。 克隆人和舞台垃圾可以恢复日记的剪接.
  • MySQL还原是位相和非原子相. 先停止写作/活动. 可见 目标连接和启用事件在清理前导致拒绝; 这是 而不是与未来联系的围栏。 保持被绑的快照和复苏 如果重放失败, 包括服务器存储已满.
  • PostgreSQL网络连接需要经过验证的TLS. 设定 DBSNAP_PG_CA_CERT 需要时可信任的 CAPEM 文件; 使用 DBSNAP_PG_TLS=verify-full 要求 还有回路连接的TLS.

dbsnap用于开发工作流程. 保持独立备份 数据.

麻省理工学院执照.

版本与发布记录

@farhan0431/db-snap 共发布 12 个版本,首次发布于 2026/11/03;过去 12 个月发布了 12 个版本。

版本发布日期距今
0.4.4latest2026/11/068 天前
0.4.32026/11/0410 天前
0.4.22026/11/0410 天前
0.4.12026/11/0410 天前
0.4.02026/11/0410 天前
0.3.142026/11/0410 天前

关于 @farhan0431/db-snap 的常见问题

@farhan0431/db-snap 是什么?

为SQLite,PostgreSQL,和MySQL/MariaDB开发数据库快照和MCP服务器.

如何安装 @farhan0431/db-snap?

在项目目录运行 npm install @farhan0431/db-snap,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 dbsnap,可以用 npx dbsnap 直接运行。

@farhan0431/db-snap 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/farhan0431__db-snap 是否存在。

@farhan0431/db-snap 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=16。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@farhan0431/db-snap 可以商用吗?

@farhan0431/db-snap 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@farhan0431/db-snap 的下载量有多少?

根据 npm 官方下载统计,@farhan0431/db-snap 在 2026/10/15 – 2026/11/13 这 30 天内被下载 2,156 次,日均约 72 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@farhan0431/db-snap 还在维护吗?

最新版本 0.4.4 发布于 2026/11/06(8 天前);至今共发布 12 个版本,其中过去 12 个月发布了 12 个;首次发布于 2026/11/03。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。