windows系统实现postgresql数据库定时备份

时间:2024-04-25 12:45:40

在windows系统中,大家通常可能会遇到手动备份数据库、周期性的执行脚本等情况。如果每次手动去做的话不免有些麻烦,而且容易忘记。用过Linux的同学都知道用crontab就可以定时调用shell脚本来实现定时任务的执行,那么在windows系统怎么实现呢?

废话不多少,先来看pg数据库的定时备份。

@echo off & setlocal EnableDelayedExpansion
set BACKUP_DIR="备份文件存放的位置"
set d=%date:/=%
set t=%time::=%
set BACKUP_FILE=%BACKUP_DIR%\sheet%d:~0,8%_%t%.sql  ::备份文件命名
set PGPASSWORD=密码
"D:\PostgreSQL\pg10\bin\pg_dump.exe" -h 数据库IP -p 端口 -U 用户名 -w --role postgres -F p -b -v -E UTF8 -f "%BACKUP_FILE%" -d 数据库名称  --schema shcema名称 

BACKUP_DIR 备份文件放置的路径。

set d=%date:/=%
set t=%time::=%

这两个是取当前日期和当前时间,用来拼接做文件名,直接取time的话奇奇怪怪的,不信的话可以自己试试。

前面的都是参数设置最重要的就是最后一句。

"D:\PostgreSQL\pg10\bin\pg_dump.exe" -h 数据库IP -p 端口 -U 用户名 -w --role postgres -F p -b -v -E UTF8 -f "%BACKUP_FILE%" -d 数据库名称  --schema shcema名称 

找到安装目录下pg_dump.exe的绝对路径。其他的按照上面的代码改成自己对应的就可以了哈。

再啰嗦一句如果备份出来数据是乱码,设置 -E UTF8 编码为utf-8也没用,报错二进制什么的,就加个参数据哈 -F p,意思如下就是导出格式为plain,默认为c custom

代码改完之后保存为bat文件就可以了,保存完成之后可以通过双击来执行。为了能看到执行效果或者看报错。可以在代码的最后加一行如下

pause

防止窗口 一闪而过。

接下来就是定时任务的问题了。

1、找到任务计划程序,控制面板-管理工具

2、打开任务计划程序,创建任务,输入任务名称按需配置安全选项,若账号无权限可选system

3、配置触发器、按需配置任务执行的周期即可

4、操作。操作选择启动程序,程序或脚本选择最开始我们编写的bat脚本就行。

找到配置的任务。右键运行,测试定时配置是否ok.若备份脚本没有问题,记得把bat脚本里的最后一句pause去掉。咋就可以愉快的去摸鱼了哈。