Files
senmesh-zc/deployment/iw/sql/README.md
KodouWZF d39b3b035d feat(部署): 新增 deployment/ 内外网两套按侧部署包
按 demo/ 的写法把交付包改成「角色由目录决定」:iw/ 拷内网机、ow/ 拷外网机,
各自含镜像 tar、SQL、配置与 install.sh,install.sh 不再收 iw/ow 参数。

前端不再打进镜像,改为静态包放在 <侧>/web/ 只读挂进 nginx:1.27-alpine,
现场临时改页面直接替换文件 + restart web 即可。数据仍全部挂宿主机,
子目录命名与 deploy/offline 一致(pgdata/redis/mq/upload/logs/gate),
默认根改为包内 ./volumes,放数据盘只改 .env 的 SFILE_DATA_ROOT。

后端镜像 sfile-app:1.0.1 含传输优化那一批(实测组包 11.4×、解包 9.9×)。
出包脚本 deployment/scripts/build-package.sh 负责 jar→镜像→前端双包→sql→tar→VERSION。
2026-11-04 21:44:56 +08:00

43 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
建表与初始数据脚本已随包放好,文件名前缀决定执行顺序(先建表后灌数据):
| 文件 | 来源 | 说明 |
|---|---|---|
| `01-init-table.sql` | `backend/db/init-table-postgres-full.sql` | 全量 DDL,含 `x_file_security` 安全检测表与 `idx_file_record_md5_code` 索引 |
| `02-init-data.sql` | `backend/db/init-data.sql` | admin 账号、机构、平台编码(`system.code=1` 要与此一致) |
出包时用 `deployment/scripts/build-package.sh` 从仓库重新覆盖这两份,别手改副本。
只有 `POSTGRES_*` 指向的库为空时,PostgreSQL 官方镜像才会执行 `docker-entrypoint-initdb.d`;
数据目录已有数据时会跳过 —— 想重建就把 `volumes/pgdata` 一起清掉再 `up`。
## upgrade/ —— 已上线老库的增量脚本(新装不用跑)
| 文件 | 作用 |
|---|---|
| `upgrade-20260914-upload-config.sql` | 新增 `x_upload_config`(机构上传后缀白名单/大小上限/开关) |
| `upgrade-20260915-release.sql` | 与上一份同一件事(上线汇总版),**两者跑其一即可** |
| `upgrade-20261101-meshsafe-file-security.sql` | 新增 `x_file_security` 文件安全检测表与字段 |
| `upgrade-20261103-transfer-perf.sql` | 给 `xs_file_record.md5_code` 补索引(解包时按 MD5 去重查询,缺索引就是每文件一次全表扫描) |
客户如果从 2026-09 之前的老库升上来,本包(PostgreSQL)真正缺的只有三个对象:
`x_upload_config`、`x_file_security`、`idx_file_record_md5_code`。
这三项在 `01-init-table.sql` 里都已是 PostgreSQL 写法,老库升级建议直接照它补,别整份管道进 psql:
```bash
# 先看缺不缺
docker exec -i sfile-iw-pg psql -U sfile -d s_file -c \
"\dt x_upload_config" -c "\dt x_file_security" -c "\di idx_file_record_md5_code"
# 只补 md5 索引(这份脚本带「-- 2. PostgreSQL」分节标题,可以截出来跑)
awk '/^-- 2\. PostgreSQL/{f=1} f' sql/upgrade/upgrade-20261103-transfer-perf.sql \
| docker exec -i sfile-iw-pg psql -U sfile -d s_file
```
> 注意:这 4 份历史增量脚本是**达梦/MySQL 优先**写的,`upgrade-20260915-release.sql` 的 PostgreSQL 段整段是注释掉的,
> 只有 `upgrade-20261101`、`upgrade-20261103` 两份带可执行的「第 2 节 PostgreSQL」。别照着 MySQL 段硬跑。
这两份带可执行第 2 节的脚本都是「第 1 节 MySQL/达梦、第 2 节 PostgreSQL」双库混排,**只能跑第 2 节**,
整份管道进去会先执行 MySQL 那节。它们不会自动执行,要人工触发(容器名内网机 `sfile-iw-pg` / 外网机 `sfile-ow-pg`)。
数据量大时建索引会锁写,放到业务低峰执行;不能停写就用脚本里注明的 `CONCURRENTLY` 写法。