docs: add sqlite to postgres migration runbook

This commit is contained in:
2026-04-27 17:22:10 +08:00
parent b68c715f6b
commit 09f9f14b93
3 changed files with 191 additions and 48 deletions

View File

@@ -122,6 +122,8 @@ tar -czvf gitea-data-$(date +%Y%m%d).tar.gz data/
docker exec postgres pg_dump -U gitea gitea > gitea-db-$(date +%Y%m%d).sql
```
> 如果当前生产服务仍在使用旧版 SQLite请在迁移前停止 Gitea并至少备份 `data/gitea/gitea.db` 和完整 `data/` 目录。完整流程见 [SQLite 迁移到 PostgreSQL](docs/sqlite-to-postgres-migration.md)。
### 恢复数据库
```bash
@@ -137,55 +139,11 @@ cat gitea-db-20260327.sql | docker exec -i postgres psql -U gitea gitea
## SQLite 迁移到 PostgreSQL
如果之前使用 SQLite需执行以下步骤迁移到 PostgreSQL
如果已有生产 Gitea 仍在使用旧版 Docker Compose 和 SQLite不要直接启动最新 compose 覆盖数据库配置,也不要把 `gitea migrate` 当作数据搬迁命令。
### 1. 停止 Gitea(保留 PostgreSQL 运行)
推荐流程是:停止 Gitea,冷备份 `data/gitea/gitea.db``data/`,更新到包含 PostgreSQL 的最新 commit只启动空 PostgreSQL`pgloader` 导入 SQLite 数据,最后启动 Gitea 并验证。
```bash
docker compose stop gitea
```
### 2. 备份现有数据
```bash
cp data/gitea/gitea.db data/gitea/gitea.db.bak
```
### 3. 修改 app.ini 数据库配置
编辑 `data/gitea/conf/app.ini`,将 `[database]` 段改为:
```ini
[database]
DB_TYPE = postgres
HOST = postgres:5432
NAME = gitea
USER = gitea
PASSWD = <你的 POSTGRES_PASSWORD>
SCHEMA =
SSL_MODE = disable
PATH =
```
> 注意:如果 docker-compose.yml 中已通过 `GITEA__database__*` 环境变量配置,则 app.ini 中的值会被覆盖,可不修改 app.ini。
### 4. 执行数据迁移
```bash
docker compose exec gitea gitea migrate
```
### 5. 重启 Gitea
```bash
docker compose start gitea
```
### 6. 验证
访问 Web 界面,确认用户、仓库数据完整。
> 迁移成功后 `data/gitea/gitea.db` 可以保留作为备份,不会影响 PostgreSQL 运行。
完整步骤见 [docs/sqlite-to-postgres-migration.md](docs/sqlite-to-postgres-migration.md)。
## 常用命令