Windows 2008R2 定时备份PostgreSQL 11.6

Posted VicLiu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows 2008R2 定时备份PostgreSQL 11.6相关的知识,希望对你有一定的参考价值。

PostgreSQL 自动备份,并删除10天前的备份文件.

第一步,创建脚本,命名back.bat文件,可直接点击执行或者CMD执行此批处理命令。

 

@ECHO OFF
@setlocal enableextensions
@cd /d "%~dp0"
 
##set PGPASSWORD=password
SET PGPATH=D:\\postgresql\\bin\\
SET SVPATH=d:\\testbackup\\
SET PRJDB=test
SET DBUSR=postgres
FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN (\'DATE /T\') DO SET d=%%i-%%j-%%k
 
SET DBDUMP=%PRJDB%_%d%.bak
@ECHO OFF
%PGPATH%pg_dump -h localhost -U postgres %PRJDB% > %SVPATH%%DBDUMP%

echo Backup Taken Complete %SVPATH%%DBDUMP%

forfiles /p %SVPATH% /d -10 /c "cmd /c echo deleting @file ... && del /f @path"

 

其中:PGPASSWORD密码,PGPATH 数据库路径,SVPATH备份文件存放位置,PRJDB数据库名称,DBUSR用户名

pg_dump -h localhost -U postgres database_name> C:\\database_bak.bak

-h:数据库服务器地址;
-p:数据库端口号;
-U:U 大写,表示用户名;
-d:数据库名称;
-f:把备份文件放在哪里

第二步设置定时任务 参考

https://blog.csdn.net/rosejeck/article/details/89026006

 

Linux 下使用crontab 定时任务。也可配置 pg_cron、pgAgent等定时任务插件。

 

第三步 恢复

cmd 然后进入postgresql的bin目录

执行

psql -h localhost -U username -d database < d:/data.bak

或者

psql -h localhost -U postgres -d database_name  -f  "C:\\database_bak.bak"

PG_DUMP和PG_RESTORE

    PostgreSql的备份和还原分别是通过pg_dump和pg_restore执行的。PostgreSql的备份有三种形式,分别是自定义、tar格式、无格式三种类型。自定义和tar格式在备份时形成的是.backup文件,而无格式在备份时形成的是文本文件。在还原时,格式只能是自定义或tar格式,也就是说pg_dump使用无格式方式备份的文件,是不能用gp_restore还原的;pg_restore只能还原backup文件。

 

  那么文本文件又是怎么还原呢?只能通过命令来执行。cmd进入执行框,用cd命令将路径改到数据库安装路径的bin文件夹下,输入以下命令:

psql -h localhost -U username -d mydb <  mydb.bak

  其中username是数据库的用户名,mydb是要还原的数据库名称,mydb.bak是自己备份的文本文件,在执行命令时要加入路径,比如:

psql -h localhost -U postgres-d postgis <  c:\\User\\Desktop\\postgis

 

  数据的导出:

$ pg_dump -U postgres(用户名)  (-t 表名)  数据库名(缺省时同用户名)  > 路径/文件名.sql

 

postgres@debian:~$ pg_dump -U postgres -t system_calls wangye > ./test.sql

postgres@debian:~$ ls

9.1  test.sql

 数据的导入:

导入数据时首先创建数据库再用psql导入:

$ createdb newdatabase
$ psql -d newdatabase -U postgres -f mydatabase.sql   // sql 文件在当前路径下

$ psql -d databaename(数据库名) -U username(用户名) -f < 路径/文件名.sql  // sql 文件不在当前路径下

 

 

以上是关于Windows 2008R2 定时备份PostgreSQL 11.6的主要内容,如果未能解决你的问题,请参考以下文章

Windows 2008R2 删除 Windows Server Backup 备份副本

CS11:2008R2 Hyper-V 系统自带备份报错0x8100010处理

windows 2008R2安装 oracle-11g安装步骤

windows server 2008r2卡在开机界面进不去

转:windows下定时执行备份数据库

windows定时自动备份