6.0 KiB
6.0 KiB
服务器重装备份方案(alibb 项目)
2026-08-25。服务器
219.157.255.213(kt-W580G20)需要重装系统。 范围:只备 alibb(后端 + 前端 + alibaba 库 + 站点配置);服务器上其他业务(1Panel 全家桶、邮件、小红书等)与本备份无关。 备份落盘:本机D:\alibb-server\backups\alibb-backup-20260825\(D 盘重装不受影响)。
一、备份内容(已完成 ✅)
服务器端打包于 ~/alibb-backup-20260825,已 scp 拉回本机 D:\alibb-server\backups\,SHA256 全部校验通过。
| 文件 | 大小 | 内容 |
|---|---|---|
alibaba-db.sql |
25M | alibaba 库全量 dump(--single-transaction --no-tablespaces):chat_messages 61872 行、customers 14794 行、inquiries 13570 行、users、_prisma_migrations |
alibb-server-code.tgz |
998K | ~/alibb-server 代码(backend+frontend),docker-compose.yml 内含生产密钥(JWT_SECRET/INGEST_TOKEN/ADMIN_PASSWORD) |
alibb-secrets.txt |
296B | 生产密钥明文 |
alibb-site.conf |
750B | OpenResty 站点 conf:listen 23010、/api → http://backend:8080、SPA fallback、client_max_body_size 50m |
alibb-frontend-dist.tgz |
811K | 1Panel 站点目录(前端 dist;可由代码重 build,备作保险) |
alibb-backend-inspect.json |
11K | 容器完整配置快照(env/网络/挂载) |
RESTORE-NOTES.md |
— | 恢复要点:MySQL 授权重建、网络别名、密钥清单 |
dump 完整性:文件尾 -- Dump completed on 2026-08-25 14:14:01,5 张 CREATE TABLE 齐全。
二、关键事实(重装前记牢)
- 密钥全部沿用备包里的值 → 重装后扩展的 serverUrl + INGEST_TOKEN 不用改,老数据 JWT 也不失效。
- mysqldump 不含用户授权 → 重装后必须手工执行(见 RESTORE-NOTES.md):
CREATE USER 'alibaba'@'%' IDENTIFIED BY 'wecbni5zRRnZrMMh'; GRANT ALL PRIVILEGES ON `alibaba`.* TO 'alibaba'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; - backend 加入 external 网络
1panel-network(1Panel 装好后自动存在),容器别名alibb-backend/backend——OpenResty 反代按容器名backend寻址,别名丢了 /api 就 502。 - 端口映射是
127.0.0.1:8090:8080(宿主 8090,比 7 月部署文档写的 8080 新,以备包为准)。 - 1Panel 的 MySQL root 密码重装后会变(装 1Panel 时新设),与业务无关;业务只依赖上面的
alibaba账号。
三、恢复步骤(新系统从零)
1. 基础环境
# Ubuntu 24.04 + Docker(官方脚本)+ 1Panel(官方安装脚本,装时设新的面板/MySQL root 密码)
# 1Panel 应用商店装:OpenResty、MySQL 8.x
# 云安全组放行:23010/tcp(以及 1Panel 面板端口)
2. 恢复代码
# 本机推备包上去(Windows OpenSSH)
/c/Windows/System32/OpenSSH/scp.exe -i 'C:\Users\30997\.ssh\alibb_deploy' -r 'D:\alibb-server\backups\alibb-backup-20260825' kt@219.157.255.213:~/
ssh 上去:
tar xzf ~/alibb-backup-20260825/alibb-server-code.tgz -C ~ # → ~/alibb-server,compose 已是生产值,勿再跑 sed
3. 恢复数据库
# 建库 + 授权 + 导入(注意库名 alibaba 与用户名 alibaba 同名)
sudo docker exec -i 1Panel-mysql-<新后缀> mysql -uroot -p'<新root密码>' <<'SQL'
CREATE DATABASE alibaba CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'alibaba'@'%' IDENTIFIED BY 'wecbni5zRRnZrMMh';
GRANT ALL PRIVILEGES ON `alibaba`.* TO 'alibaba'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
SQL
sudo docker exec -i 1Panel-mysql-<新后缀> mysql -uroot -p'<新root密码>' alibaba < ~/alibb-backup-20260825/alibaba-db.sql
4. 起后端
cd ~/alibb-server/backend
sudo docker compose build backend && sudo docker compose up -d # migrate 自动跑(应显示全部 already applied)
注意:compose 里 networks 声明 1panel-network external——1Panel 装好后已存在,无需改。
5. 站点 + 前端
- 1Panel 面板建网站「alibb」:域名/IP
219.157.255.213,端口23010,根目录默认站点 index - 直接用备份 conf:把
alibb-site.conf内容对到/opt/1panel/apps/openresty/openresty/conf/conf.d/alibb.conf(经面板配伪静态+反代等价),面板里重载 OpenResty - 前端二选一:解包
alibb-frontend-dist.tgz复制进站点目录;或~/alibb-server/frontend里 docker node build 后复制(同 7 月文档 Step 4)
6. 验证
curl http://219.157.255.213:23010/ # 200
curl http://219.157.255.213:23010/api/health # {"ok":true}
浏览器登录 admin / ADMIN_PASSWORD(alibb-secrets.txt),确认询盘/客户/聊天记录数量与备份时一致(询盘 13570 / 客户 14794 / 消息 61872)。
7. 扩展侧
无需改配置(serverUrl http://219.157.255.213:23010 + 原 token 均不变)。Chrome 里点一次「测试连接」确认,再恢复日常抓取。
四、重装前 Checklist
- 服务器备包完成并拉回本机,SHA256 校验通过
- MySQL 授权语句已记录(RESTORE-NOTES.md)
- 再拷一份
D:\alibb-server\backups\到外接硬盘或网盘(D 盘虽不动,双保险,防重装误格全盘) - 重装窗口内停止扩展抓取(推送会失败;若误抓,数据在本地,恢复后可重推;被风控的会话除外)
- 本机
d:\alibb-server\backend有未提交改动(schema.prisma / ingest.service.ts / 新 migration)——与本次备份无关,但建议提交或至少保留现状 - 重装方式无要求:恢复完全依赖本机 D 盘备份,服务器彻底重置也可接受(其他业务数据是否保留与 alibb 无关)
五、风险与说明
- 备份截止 2026-08-25 14:14。之后新增的询盘/抓取数据不在 dump 里;重装前若又抓了数据,可重新导一次(命令见下)。
- 服务器备包副本留在
kt@219.157.255.213:~/alibb-backup-20260825/,若重装保留 /home 可顺带幸存(不依赖)。 - 增量重导命令:
ssh … 'sudo docker exec -e MYSQL_PWD=wecbni5zRRnZrMMh 1Panel-mysql-sLiG mysqldump -ualibaba --single-transaction --no-tablespaces --routines --triggers --databases alibaba' > D:\alibb-server\backups\alibaba-db-final.sql