Cloudflare D1 免费额度是单库 500MB、账号下全部 D1 合计 5GB。 到顶之后写入会失败(不会自动扣费,只是当天写不进去)。这时候有两条路:
| 方案 | 适用场景 | 要做什么 |
|---|---|---|
| A. 同账号换库 | 单库 500MB 满了,但账号总量还有空间 | 建个新库 → 改配置里的 database_id → 重新部署 → 导入备份 |
| B. 换全新账号 | 5GB 总量也满了,或想彻底分开 | 注册新账号 → 一键脚本全流程 → 导入备份 |
两个方案都不会丢数据:你手上只要有导出的 ZIP 备份,就能完整还原(含原始创建时间,时间树不会乱)。
所有部署脚本和前后端代码都在这个私有仓库里(私有,需要你自己的账号有权限):
https://github.com/openclawzhangchong/zhangchong_biji_web2026
在本机执行(二选一):
# 方式一:SSH(推荐,配过 key 就不用每次输密码) git clone git@github.com:openclawzhangchong/zhangchong_biji_web2026.git # 方式二:HTTPS(会要求登录 GitHub 账号) git clone https://github.com/openclawzhangchong/zhangchong_biji_web2026.git cd zhangchong_biji_web2026
想用稳定版而不是开发中的版本,切到基线标签:
git checkout stable-v3.4.0
仓库是私有的 —— 换机器拉不下来就是没授权,去 GitHub 仓库 Settings → Collaborators 把自己加进去,
或者在本机配好 SSH key(~/.ssh/id_ed25519 那种)。
后续命令都在这个仓库根目录下执行,不需要 npm install(wrangler 用 npx 现取)。
git bundle 或整目录打包)——
万一 GitHub 这边也出问题,你手上还有完整的代码和迁移脚本。旧环境 → 搜索台 → 右上角「导出全部」,得到 notes-YYYYMMDD-HHMM.zip。
里面一条笔记一个 .md,带 YAML frontmatter(标题/标签/时间/地点/来源)。
在本机(或任何装了 Node 的机器)进项目根目录,执行:
# 方案 A:换新 Cloudflare 账号(全自动:建库 → 建表 → 生成密钥 → 部署) bash tools/new-account-setup.sh # 方案 B:账号不变,只换一个新 D1 库 bash tools/new-account-setup.sh --d1-only
脚本会一步步打印在做什么:没登录会先打开浏览器授权 → 创建 D1(APAC 区域)→
自动把 database_id 写进两个 wrangler.toml(原文件备份成 .bak)→
建表 → 生成四个密钥并存进 .secrets.local → 创建 Pages 项目并部署。
密钥是随机生成的,口令会打印在终端里 —— 记下来,或者部署完去 /settings 改成自己好记的。
# 先空跑一遍,确认解析没问题(只打印,不写入) node tools/import-zip.mjs 备份.zip --base https://新域名.pages.dev --token <API_TOKEN> --dry-run --verbose # 确认无误,正式导入 node tools/import-zip.mjs 备份.zip --base https://新域名.pages.dev --token <API_TOKEN>
API_TOKEN 在新环境的 .secrets.local 里。脚本特性:
| 参数 | 作用 |
|---|---|
--dry-run | 只解析打印计划,不写库(强烈建议先跑) |
--limit N | 只导入前 N 条,先试几条看效果 |
--state 文件 | 记录进度,中途断了重跑自动跳过已导入的(默认 .import-state.json) |
--delay MS | 每条之间间隔,默认 150ms |
--verbose | 打印每一条的结果 |
导入会还原原始创建时间,所以时间树、按天筛选都和历史一致。只写不删,最坏结果是重复(重跑靠 --state 跳过)。
① 打开新域名,用新口令登录 ② 搜索台看总数对不对 ③ 随便搜个关键词验证全文索引
④ 时间树翻到最早那天,确认时间在 ⑤ 去 /settings 改口令 ⑥ 去 /mcp 重新给小智配一次 API_TOKEN
旧环境先别急着删,稳定运行几天确认新环境没问题再说。
导入会不会重复? 脚本按文件名记录进度,重跑自动跳过。但如果同一份备份导入到两个不同环境再互导,会产生重复(去重能力待 v3.5 的页面导入功能)。
口令和 API_TOKEN 要换吗? 脚本会生成全新的。旧的值在新环境无效,小智那边要重新配。
导入能还原「小智写的」这种来源标记吗? 备份里有 source 与 source_name 字段,v3.5 的来源身份功能上线后会一并还原;当前版本统一记为 Agent。
一条条导太慢? 默认 150ms 间隔,几千条大约几分钟。可以 --delay 50 加快。
不想用命令行? 设置页(/settings)有「导入备份」按钮,直接在网页上选 ZIP 导入;脚本保留给迁移和批量场景。
没网 / 没 Node 的机器怎么办? 先把仓库和备份 ZIP 拷过去,装个 Node 就行;实在没有 Node 的环境,只能手动一条条粘回收件箱(不推荐)。