尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

“3年窗口自动存档“的完整操作方案

“3年窗口自动存档“的完整操作方案 定时任务每月跑一次① 导出 3 年前的数据 → ② 校验行数 → ③ 删除。 库里永远只剩最近 3 年。完整脚本$ErrorActionPreferenceStop$pgBinD:\Program Files\PostgreSQL\18\bin$psql$pgBin\psql.exe$pgDump$pgBin\pg_dump.exe$env:PGPASSWORD 你的PG密码# ← 改成你的$dbdatacollector_ts;$host127.0.0.1;$port5432;$userpostgres$archiveRootD:\ts_archive# ← 存档根目录改你的$todayGet-Date-FormatyyyyMMdd$cutoffGet-Date-AddYears(-3).Date.ToString(yyyy-MM-dd)# 3年前的今天$outDirJoin-Path$archiveRoot$todayNew-Item-ItemType Directory-Force-Path$outDir|Out-Null# ① 导出3年前的数据COPY BINARY快且紧凑$psql-h$host-p$port-U$user-d$db-c\copy (SELECT * FROM ts_data WHERE timestamp $cutoff) TO $outDir\ts_data_before_$cutoff.bin WITH (FORMAT binary)# ② 导出表结构DDL恢复时用建表超表索引$pgDump-h$host-p$port-U$user-d$db-t ts_data--schema-only $outDir\ts_data_schema.sql# ③ 统计本次归档的行数和导出文件对账$cnt $psql-h$host-p$port-U$user-d$db-t-A-cSELECT count(*) FROM ts_data WHERE timestamp $cutoff# ④ 删除3年前的数据超表按天分区删到整chunk边界绝不误删3年内$psql-h$host-p$port-U$user-d$db-cSELECT drop_chunks(ts_data, older_than TIMESTAMPTZ $cutoff)# ⑤ 归档说明跟档案走防版本坑$info 归档日期:$today截止时间:$cutoff(timestamp $cutoff的数据已移出生产库) 归档行数:$cnt恢复方法: 1. 建库 2. psql -f ts_data_schema.sql 3. psql -c \copyts_dataFROM...binWITH(FORMAT binary) $info|Out-File$outDir\README.txt-Encoding UTF8Write-Host归档完成:$outDir, 共$cnt行注册 Windows 定时任务每月1号凌晨3点schtasks/create/tnTS_3Y_Archive/trpowershell -ExecutionPolicy Bypass -File D:\scripts\ts_archive.ps1/scmonthly/d 1/st 03:00/f
返回列表