Skip to content

Commit 3edfe1b

Browse files
committed
feat: 补充备份还原文档
1 parent ce007dd commit 3edfe1b

5 files changed

Lines changed: 119 additions & 2 deletions

File tree

docs/faq/installation.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,8 @@
9090
POSTGRES_USER=root
9191
POSTGRES_PASSWORD=Password123@pg
9292
```
93+
94+
## 5 如何备份和还原 SQLBot?
95+
96+
!!! Abstract ""
97+
SQLBot 没有独立的备份命令。内置 PostgreSQL 建议停服后打包运行目录中的 `data``conf``.env`;外置 PostgreSQL 请使用 `pg_dump`,并同时备份 Excel、图片等文件目录。完整步骤见 [备份还原](../installation/backup.md)

docs/installation/backup.md

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
!!! Abstract ""
2+
SQLBot 的 `sctl` **不提供** backup / restore 命令。升级、迁移前请手动备份;还原须在 **相同版本** 上进行。
3+
4+
先确认当前是内置库还是外置库:
5+
6+
```bash
7+
grep SQLBOT_EXTERNAL_DB /opt/sqlbot/.env
8+
grep POSTGRES_SERVER /opt/sqlbot/conf/sqlbot.conf
9+
```
10+
11+
- `SQLBOT_EXTERNAL_DB=false` 且 `POSTGRES_SERVER=localhost`:内置库(默认)
12+
- `SQLBOT_EXTERNAL_DB=true`,或 `POSTGRES_SERVER` 指向其他主机:外置库(含多数 1Panel 场景)
13+
14+
## 1 需要备份什么
15+
16+
!!! Abstract ""
17+
默认安装目录为 `/opt/sqlbot`。docker 一键运行时,路径相对执行目录下的 `./data`
18+
19+
| 内容 | 路径 / 对象 | 说明 |
20+
| ---- | ----------- | ---- |
21+
| 元数据库 | 内置:`data/postgresql`<br>外置:外部 PostgreSQL 的 `sqlbot` 库 | 用户、工作空间、数据源、问数记录、术语、SQL 示例等 |
22+
| 业务文件 | `data/sqlbot/excel`、`data/sqlbot/file`、`data/sqlbot/images` | 与库中记录对应;日志 `logs` 可不备份 |
23+
| 配置 | `.env`、`conf/sqlbot.conf`、`docker-compose.yml` | 须与数据库成套还原;尤其保留原 `SECRET_KEY` |
24+
25+
!!! Warning ""
26+
外置库时,宿主机 `data/postgresql` **不是** 业务数据,请备份外部 PostgreSQL。外置库需支持向量扩展(pgvector)。
27+
28+
## 2 备份
29+
30+
### 2.1 内置库(推荐)
31+
32+
!!! Abstract ""
33+
停服后打包运行数据与配置,一致性最好:
34+
35+
```bash
36+
sctl stop
37+
38+
tar -zcvf /opt/sqlbot-backup-$(date +%F).tar.gz \
39+
--exclude='sqlbot/data/sqlbot/logs' \
40+
-C /opt sqlbot/data sqlbot/conf sqlbot/.env sqlbot/docker-compose.yml
41+
42+
sctl start
43+
```
44+
45+
无 `sctl` 时(docker 一键运行)先执行 `docker stop sqlbot`,再打包当前目录下的 `./data`,最后 `docker start sqlbot`。
46+
47+
### 2.2 外置库
48+
49+
!!! Abstract ""
50+
(1)备份外部库(连接信息以 `conf/sqlbot.conf` 为准):
51+
52+
```bash
53+
export PGPASSWORD='YourPassword'
54+
pg_dump -h <DB_HOST> -p 5432 -U root -d sqlbot -Fc -f ./sqlbot-$(date +%F).dump
55+
```
56+
57+
本机无客户端时:
58+
59+
```bash
60+
docker run --rm -e PGPASSWORD='YourPassword' \
61+
-v $(pwd):/backup pgvector/pgvector:pg17 \
62+
pg_dump -h <DB_HOST> -p 5432 -U root -d sqlbot -Fc -f /backup/sqlbot.dump
63+
```
64+
65+
(2)再打包业务文件与配置:
66+
67+
```bash
68+
tar -zcvf ./sqlbot-files-$(date +%F).tar.gz \
69+
--exclude='sqlbot/data/sqlbot/logs' \
70+
-C /opt sqlbot/data/sqlbot sqlbot/conf sqlbot/.env sqlbot/docker-compose.yml
71+
```
72+
73+
1Panel 也可使用其 PostgreSQL 备份能力,并备份应用持久化目录中的 excel / file / images 及环境变量。
74+
75+
## 3 还原
76+
77+
!!! Abstract ""
78+
还原前:目标环境已安装相同版本;先备份目标侧现有数据;内置库与外置库不要交叉覆盖。
79+
80+
### 3.1 内置库
81+
82+
!!! Abstract ""
83+
```bash
84+
sctl stop
85+
mv /opt/sqlbot /opt/sqlbot-$(date +%F)-bak
86+
# 先安装相同版本后,再覆盖数据与配置
87+
tar -zxvf /opt/sqlbot-backup-YYYY-MM-DD.tar.gz -C /opt
88+
sctl start
89+
```
90+
91+
92+
### 3.2 外置库
93+
94+
!!! Abstract ""
95+
```bash
96+
export PGPASSWORD='YourPassword'
97+
psql -h <DB_HOST> -p 5432 -U root -d postgres -c "CREATE DATABASE sqlbot;"
98+
psql -h <DB_HOST> -p 5432 -U root -d sqlbot -c "CREATE EXTENSION IF NOT EXISTS vector;"
99+
pg_restore -h <DB_HOST> -p 5432 -U root -d sqlbot --clean --if-exists ./sqlbot-YYYY-MM-DD.dump
100+
```
101+
102+
再解压文件备份到运行目录,确认 `POSTGRES_*`、`SECRET_KEY` 与备份一致后执行 `sctl restart`。
103+
104+
## 4 还原后检查
105+
106+
!!! Abstract ""
107+
- `sctl status``docker ps` 正常,可用原管理员账号登录
108+
- 抽查数据源、Excel、历史问数、术语 / SQL 示例
109+
- 迁移后若 MCP 无图,按 [数据迁移](migration.md) 修改 `SERVER_IMAGE_HOST`
110+
- 升级场景请先完成本文备份,再执行 [离线升级](offline_upgrade.md)

docs/installation/migration.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
!!! Abstract ""
2-
SQLBot 的迁移工作建议在同版本的情况下进行。如源服务器上的 SQLBot 版本是 v1.4.0,则目标服务器上请先安装好 v1.4.0 版本的 SQLBot。
2+
SQLBot 的迁移工作建议在同版本的情况下进行。如源服务器上的 SQLBot 版本是 v1.4.0,则目标服务器上请先安装好 v1.4.0 版本的 SQLBot。迁移前请先按 [备份还原](backup.md) 做好备份。若使用外置数据库,除复制运行目录外,还需单独迁移 PostgreSQL 中的 `sqlbot` 库。
33

44
## 停止服务
55

docs/installation/offline_upgrade.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@
1515
sctl status
1616
```
1717

18-
**注意:升级前做好数据库的备份工作是一个良好的习惯。**
18+
**注意:升级前请先做好备份,可参考 [备份还原](backup.md)。**

mkdocs.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
site_name: 'SQLBot 文档'
22
site_url: 'https://sqlbot.cn/docs'
3+
use_directory_urls: false
34
site_description: 'SQLBot 是基于大模型和 RAG 的智能问数系统'
45
site_author: '飞致云'
56
repo_name: 'SQLBot'
@@ -51,6 +52,7 @@ nav:
5152
- Windows 下安装: installation/windows_installation.md
5253
- 命令行工具: installation/cli.md
5354
- 源码运行: installation/source_run.md
55+
- 备份还原: installation/backup.md
5456
- 数据迁移: installation/migration.md
5557
- 功能手册:
5658
- 数据源:

0 commit comments

Comments
 (0)