win10定期备份pg数据库

#######win10定期备份pg数据库#######
注意:该教程只定期备份 单个数据库

1、该备份命令 只备份一个数据库 到 时间格式.backup文件中

2、pg_dump命令备份多个或全部数据库,也是备份到 单一个文件  中

环境

Windows10

Windows--Postgres12版本以上

前提:

1、部署搭建好postgres数据库

步骤

一、创建bat批处理 ,一键备份postgres数据库 ,无需输入密码

文件cron.bat ,内容如下:解析在最后

@ECHO OFF

@setlocal enableextensions

@cd /d "%~dp0"

setlocal

SET PGPASSWORD=888

REM 设置pgpass文件的路径

SET PGPATH=C:\pg\PostgreSQL\12\bin\pg_dump

SET CD=C:\pg\PostgreSQL\12\bin

SET SVPATH=C:\crontab\

SET PRJDB=postgres

SET DBUSR=postgres

SET DBROLE=postgres

FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k

FOR /F "TOKENS=1,2,3 DELIMS=: " %%i IN ('TIME /T') DO SET t=_%%i%%j%%k

SET DBDUMP=%PRJDB%%d%%t%.backup

@ECHO OFF

cd %CD%

%PGPATH% -h 192.168.10.178 -p 5432 -U %DBUSR% --role %DBROLE%  -F c -b -v -f %SVPATH%%DBDUMP% %PRJDB%

echo Backup Taken Complete %SVPATH%%DBDUMP%

pause

###########################

二、测试该bat批处理

双击 cron.bat 。执行过程中查看是否需要密码? 无需密码 ,下一步。需要密码网上找教程
查看备份存放目录是否 有刚生成的备份文件
C:\crontab\postgres2023-10-11_1409.backup

有备份文件,证明成功。即可启动Windows计划任务自动备份

三、启动Windows计划任务自动备份

1、Windows下 找到任务计划程序。点击 “创建基本任务...”

2、自定义 计划任务 名称

3、根据该库postgres ,产生的数据量 来进行 每隔多少时间 备份。

4、设置每月最后一天。00:00:00时间备份

5、选中”启动程序”

6、浏览 > 选中脚本cron.bat 打开

7、点击 “完成”

8、点击:计划任务程序库 > 选中”计划任务,即postgres数据库定期备份” > 右击 运行

9、出现以下内容:证明成功开启windows计划任务定期备份postgres数据库

Backup Taken Complete C:\crontab\postgres2023-10-11_1431.backup

注意:该备份命令 只备份一个数据库 到 时间格式.backup文件中

10、可以看到每隔5分钟备份一次。(该库数据量较小)

11、可修改 计划任务

报错1:双击cron.bat时执行成功。但在计划任务中不成功。

可检查以什么方式运行该计划任务。

选中”只在用户登录时运行(R)”

至此,计划任务 完毕!!

#########################################################

以下有备份多个或全部数据库的方法。
还原数据库 方法
#########################################################

一、备份并还原 1个数据库

//在本机上,以postgres用户身份   将postgres数据库 导出  路径C:\name.sql

格式:pg_dump -U postgres用户 -h 本机IP -p 5432 -f 指定导出文件路径C:\name.sql  -v  postgres数据库

备份:导出备份的文件sql

Cmd命令行 bin目录下

C:\pg\PostgreSQL\12\bin>pg_dump -U postgres -h 192.168.10.178 -p 5432 -f C:\sql\dump001.sql -v postgres

口令:888

还原:导入备份的文件sql

C:\pg\PostgreSQL\12\bin>psql -U postgres -h localhost -p 5432 -d postgres -f E:/dumppostgres.sql

格式:psql -U postgres -h 本机IP -p 5432 -d postgres数据库 -f  指定导入文件路径E:/dumppostgres.sql

二、备份并还原多个数据库

备份多个数据库,可以在命令中指定多个数据库名称,用空格分隔。例如:

C:\pg\PostgreSQL\12\bin>pg_dump -U postgres -h localhost -p 5432 -f E:/dumppostgres.sql -v mydatabase1 mydatabase2

三、备份并还原所有数据库

备份所有数据库,可以使用 --all-databases 参数。例如:

C:\pg\PostgreSQL\12\bin>pg_dump  -U  postgres  -h  localhost  -p  5432  -f  E:/dumppostgres.sql  -v  --all-databases

###################################################

setlocal

SET PGPASSWORD=888

界面提示密码自动输入

###########################

SET PGPATH=C:\pg\PostgreSQL\12\bin\pg_dump

PGPATH:指定 pg_dump 命令的完整路径

###########################

SET CD=C:\pg\PostgreSQL\12\bin

CD:指定切换到bin目录下,以便执行备份命令

###########################

SET SVPATH=C:\crontab\

SVPATH:指定备份文件保存的目录路径

###########################

SET PRJDB=postgres

PRJDB:指定要备份的数据库名

###########################

SET DBUSR=postgres

DBUSR:指定连接数据库所使用的用户名

###########################

SET DBROLE=postgres

DBROLE:指定要备份的数据库角色

###########################

FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k

FOR /F "TOKENS=1,2,3 DELIMS=: " %%i IN ('TIME /T') DO SET t=_%%i%%j%%k

这段代码是一个批处理脚本,用于获取当前日期和时间,并将其解析为指定的格式。下面是对代码进行解析的说明:

第一行代码:将解析后的日期存储到量d中
FOR /F 是一个循环命令,用于遍历指定命令的输出结果。
"TOKENS=1,2,3 DELIMS=/ " 是用于指定解析的格式和分隔符。这里将日期按照 / 和空格进行分隔,并将分隔后的部分分别存储到 %%i、%%j 和 %%k 中。
IN ('DATE /T') 是指定要执行的命令。DATE /T 用于获取当前日期并以短格式显示。
DO SET d=%%i-%%j-%%k 是在循环中执行的操作,将解析后的日期存储到变量 d 中。
第二行代码:将解析后的时间存储到量t中

###########################

SET DBDUMP=%PRJDB%%d%%t%.backup

DBDUMP:指定以时间格式的文件。

###########################

@ECHO OFF

cd %CD%

%PGPATH% -h 192.168.10.178 -p 5432 -U %DBUSR% --role %DBROLE%  -F c -b -v -f %SVPATH%%DBDUMP% %PRJDB%

简解:cmd命令行切换到bin目录下,执行命令。

############################

echo Backup Taken Complete %SVPATH%%DBDUMP%

Pause

用于打印备份完成的信息和路径,并暂停脚本的执行。下面是

echo Backup Taken Complete %SVPATH%%DBDUMP%: echo 用于在命令行中输出文本。作用是输出一个备份完成的提示信息,其中 %SVPATH% 和 %DBDUMP% 是变量,表示备份路径的一部分。
pause: pause 命令用于暂停批处理脚本的执行,等待用户按下任意键继续执行。作用是在备份完成后暂停脚本的执行,以便用户可以查看备份结果或进行其他操作
 

#############################################################

  • 16
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值