98 lines
2.5 KiB
Markdown
98 lines
2.5 KiB
Markdown
|
|
# SQL_Script
|
|||
|
|
|
|||
|
|
数据库初始化与分区维护脚本。与主服务完全独立,可被任何工具(psql / Node.js / cron / CI)调用。
|
|||
|
|
|
|||
|
|
## 文件说明
|
|||
|
|
|
|||
|
|
| 文件 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| `01_init_schema.sql` | 建库:Extension + Schema + 主表 + 索引 + 分区辅助函数(幂等,可重复执行) |
|
|||
|
|
| `02_create_partitions.sql` | 预创建分区(昨天 ~ 未来 30 天),直接用 psql 执行 |
|
|||
|
|
| `run_init.js` | Node.js 脚本:执行 `01_init_schema.sql` |
|
|||
|
|
| `run_ensure_partitions.js` | Node.js 脚本:调用 `ensure_partitions()` 预创建指定日期范围分区 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 执行顺序(首次部署)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 第一步:初始化 Schema(建表 + 函数)
|
|||
|
|
node SQL_Script/run_init.js
|
|||
|
|
|
|||
|
|
# 第二步:预创建分区(默认昨天 ~ 未来 30 天)
|
|||
|
|
node SQL_Script/run_ensure_partitions.js
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
之后每天由外部 cron / 调度任务调用 `run_ensure_partitions.js` 即可。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## run_init.js 用法
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 最简方式(从 .env 读取连接参数)
|
|||
|
|
node SQL_Script/run_init.js
|
|||
|
|
|
|||
|
|
# 指定连接参数
|
|||
|
|
node SQL_Script/run_init.js \
|
|||
|
|
--host=10.8.8.109 \
|
|||
|
|
--port=5433 \
|
|||
|
|
--user=log_admin \
|
|||
|
|
--password=yourpassword \
|
|||
|
|
--database=log_platform
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## run_ensure_partitions.js 用法
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 默认:昨天 到 未来 30 天
|
|||
|
|
node SQL_Script/run_ensure_partitions.js
|
|||
|
|
|
|||
|
|
# 按 offset(相对今天的天数偏移)
|
|||
|
|
node SQL_Script/run_ensure_partitions.js --start-offset=-1 --end-offset=60
|
|||
|
|
|
|||
|
|
# 按具体日期
|
|||
|
|
node SQL_Script/run_ensure_partitions.js --start-date=2026-03-01 --end-date=2026-06-30
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## psql 直接执行
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Schema 初始化
|
|||
|
|
psql -h 10.8.8.109 -p 5433 -U log_admin -d log_platform -f SQL_Script/01_init_schema.sql
|
|||
|
|
|
|||
|
|
# 预创建分区(默认昨天 ~ 未来 30 天)
|
|||
|
|
psql -h 10.8.8.109 -p 5433 -U log_admin -d log_platform -f SQL_Script/02_create_partitions.sql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 连接参数优先级
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
命令行参数 > 环境变量 > 根目录 .env 文件 > 默认值
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
支持的环境变量:
|
|||
|
|
|
|||
|
|
| 环境变量 | 说明 |
|
|||
|
|
|----------|------|
|
|||
|
|
| `POSTGRES_HOST` | 主机,默认 `127.0.0.1` |
|
|||
|
|
| `POSTGRES_PORT` | 端口,默认 `5432` |
|
|||
|
|
| `POSTGRES_USER` | 用户名,默认 `postgres` |
|
|||
|
|
| `POSTGRES_PASSWORD` | 密码 |
|
|||
|
|
| `POSTGRES_DATABASE` | 数据库名,默认 `log_platform` |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 定时分区维护(cron 示例)
|
|||
|
|
|
|||
|
|
```cron
|
|||
|
|
# 每天凌晨 01:00 自动创建未来 30 天分区
|
|||
|
|
0 1 * * * cd /path/to/Web_BLS_Heartbeat_Server && node SQL_Script/run_ensure_partitions.js >> /var/log/partition_cron.log 2>&1
|
|||
|
|
```
|