目录
- 1. 写个备份脚本
- 2. Windows 添加定时任务
- 3. 使用备份的 SQL 还原数据
1. 写个备份脚本
备份数据库脚本:
pgBacks.bat
@ECHO OFF
:: 用于启用扩展功能。在使用enableextensions选项后,批处理脚本可以使用扩展命令和特性
@setlocal enableextensions
:: 移动到脚本文件当前目录
@cd /d "%~dp0"
:: 设置数据库密码,设置后会在下文自动引用
set PGPASSWORD=pgpass
:: 数据库安装位置,一定用双引号括起来,不然不生效。
SET PGPATH="D:\Java\pg14\bin\"
:: 备份位置
SET SVPATH="D:\Java\pgBak\"
:: 需要备份的数据库名
SET PRJDB=postgres
:: 登录的数据库用户名
SET DBUSR=postgres
:: ('DATE /T')得到当前日期,并通过'/'为分隔符分成三部分分别赋值给后面的i,j, k。然后用'd'这个变量去接收
FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k
:: 用'DBDUMP'这个变量存储即将命名的备份文件名字。
SET DBDUMP=%PRJDB%_%d%.bak
@ECHO OFF
:: 用pg_dump这个工具进行备份到变量指定的路径,以及命名
call %PGPATH%pg_dump -h localhost -p 5432 -U %DBUSR% -d %PRJDB% > "%SVPATH%%DBDUMP%"
echo Backup Taken Complete %SVPATH%%DBDUMP%
:: 删除15天之前的以'.bak'结尾的备份数据,路径不能使用双引号
@echo off
SET SVPATH=D:\Java\pgBak
set DaysAgo=15
forfiles -p %SVPATH% -s -m *.bak -d -%DaysAgo% -c "cmd /c del -f -q -a @path"
2. Windows 添加定时任务
-
打开控制面板→系统和安全→计划任务
当然,其他版本的可能长这样
-
创建基本任务
-
查看已经建好的任务
3. 使用备份的 SQL 还原数据
跑下面的指令:
-- psql -h 服务器IP -U 用户名 -d 数据库名 < 备份文件位置
psql -h localhost -U postgres -d postgres < D:\Java\pgBak\postgres_2023-10-13.bak