当前位置: 首页 > news >正文

PostgreSQL的数据备份与恢复(windows版本)

       网上找了好久再加上自己的拼凑整理出了PostgreSQL的windows版本的备份和恢复。具体步骤如下:

     一、 备份:

导出命令:pg_dump [OPTION]… [DBNAME]
查看使用帮助:pg_dump –help
主要参数解释:

关键字说明(默认值)
-h, –host=HOSTNAME数据库服务器IP
-p, –port=PORT数据库服务器端口号
-U, –username=NAME用户名
-W, –password密码
-F, –format=c|t|p输出文件格式(custom,tar,plain text)
-v, –verbose详细信息模式,会显示备份时的信息
-f, –file=FILENAME输出文件名
-b, –blobs在dump文件中包含大对象

写了一个正常运行的备份脚本如下:

@ECHO OFF
@setlocal enableextensions
@cd /d "%~dp0"
::本地的PostgreSQL的路径
SET PGPATH=C:\"Program Files"\PostgreSQL\10\bin\pg_dump.exe
::保存的位置
SET SVPATH=D:\beifen\
::要备份的数据库
SET PRJDB=bpsimple
::数据库用户
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
%PGPATH% -h localhost -p 5432 -U %DBUSR%  --role %DBROLE% -F c -b -v -f %SVPATH%%DBDUMP% %PRJDB% 
echo Backup Taken Complete %SVPATH%%DBDUMP%
pause

运行完上面的脚本之后会提示输入数据库密码,正确输入之后就会生成备份的文件:

      

如果不输入密码就能做成批处理的文件了。那么要如何做呢,下面就是一个方案:

新建系统变量:
变量名:PGPASSFILE
变量值:C:\Program Files\PostgreSQL\10\data\pgpass.conf

按上面的变量值新建文件:pgpass.conf
文件内容格式为:hostname:port:database:username:password

 

再输入上面的CMD命令是不是就不会提示密码了?下图是执行生成后的备份文件

 

这样就可以配合windows的定时执行计划,做到数据库的自动备份。

下面是一个windows的执行计划设置的链接:

https://blog.csdn.net/mao_mao37/article/details/82592603

二、恢复

   

导出命令:pg_restore [OPTION]… [FILE]
查看使用帮助:pg_restore –help
主要参数解释:

关键字说明(默认值)
-h, –host=HOSTNAME数据库服务器IP
-p, –port=PORT数据库服务器端口号
-U, –username=NAME用户名
-W, –password密码
-d, –dbname=NAME连接的数据库名
-v, –verbose详细信息模式,会显示恢复时的信息
-a, –data-only只导入数据,不导入结构
-t, –table=NAME恢复指定名称的表

 

以下是一个恢复的脚本程序

@ECHO OFF
@setlocal enableextensions
@cd /d "%~dp0"
::要执行的命令
SET PGPATH=C:\"Program Files"\PostgreSQL\10\bin\pg_restore.exe
::要恢复的数据库的备份
SET SVPATH=D:\beifen\bpsimple_2019-07-30_1017.backup
SET PRJDB=bpsimple
SET DBUSR=postgres
@ECHO OFF
%PGPATH% -h localhost -p 5432  -d %PRJDB% -U %DBUSR% %SVPATH% 
echo Backup Taken OK %SVPATH% 
pause

 

附录:

恢复整个DB(含有表定义和数据)
C:\Program Files\PostgreSQL\8.1\bin>
pg_restore.exe -h 192.168.1.200 -p 5432 -U system1 -i -d “techpro_db” -c -v “D:\techpro_db.tar”

恢复整个数据库的表定义
C:\Program Files\PostgreSQL\8.1\bin>
pg_restore.exe -h 192.168.1.200 -p 5432 -U system1 -i -d “techpro_db” -c -s -v “D:\techpro_db.tar”

恢复整个数据库表的数据
C:\Program Files\PostgreSQL\8.1\bin>
pg_restore.exe -h 192.168.1.200 -p 5432 -U system1 -i -d “techpro_db” -c -a -v “D:\techpro_db.tar”

恢复某个表的表定义
C:\Program Files\PostgreSQL\8.1\bin>
pg_restore.exe -h 192.168.1.200 -p 5432 -U system1 -i -d “techpro_db” -t t_emp -c -s -v “D:\techpro_db.tar”

恢复某个表的数据
C:\Program Files\PostgreSQL\8.1\bin>
pg_restore.exe -h 192.168.1.200 -p 5432 -U system1 -i -d “techpro_db” -t t_emp -c -a -v “D:\techpro_db.tar”

 

参考:

https://xly3000.wordpress.com/2012/03/07/postgresql%E8%87%AA%E5%8A%A8%E5%A4%87%E4%BB%BDbackup%E4%B8%8E%E6%81%A2%E5%A4%8Drestore%E6%95%B0%E6%8D%AE%E5%BA%93%E5%9B%BE%E8%A7%A3/

相关文章:

  • 表单提交相关
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • https网站跳转到http网站时,referrer获取不到的问题
  • Centos 6.5 使用命令ssh localhost一直需要密码的问题
  • 练习:WinForm 登录界面
  • Linux更换jdk版本,java -version还是原来的版本问题
  • zookeeper启动报错:-bash: zkServer.sh: command not found命令未找到
  • 算法笔记 --- 最短子数组
  • hadoop job 日志的查看
  • Jersey采用模板Freemarker输出
  • hadoop连接hdfs报错Call From master/172.27.0.5 to master:8020 failed on connection exception: 问题的解决
  • Linux命令手册
  • kernel:NMI watchdog: BUG: soft lockup - CPU#6 stuck for 28s! CentOS7linux中内核被锁死
  • reactjs服务器端渲染——node搭建简易服务器
  • java后台接收前端对象数组
  • Angular 2 DI - IoC DI - 1
  • angular学习第一篇-----环境搭建
  • iOS编译提示和导航提示
  • Java 内存分配及垃圾回收机制初探
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • java中的hashCode
  • mockjs让前端开发独立于后端
  • Object.assign方法不能实现深复制
  • SpingCloudBus整合RabbitMQ
  • vue-router 实现分析
  • 汉诺塔算法
  • 每天一个设计模式之命令模式
  • 物联网链路协议
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • # 计算机视觉入门
  • $$$$GB2312-80区位编码表$$$$
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (52)只出现一次的数字III
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)项目管理杂谈-我所期望的新人
  • .Family_物联网
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .net快速开发框架源码分享
  • /run/containerd/containerd.sock connect: connection refused
  • @private @protected @public
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [acm算法学习] 后缀数组SA
  • [Android]使用Android打包Unity工程
  • [Android]使用Git将项目提交到GitHub
  • [C#]winform部署yolov5-onnx模型
  • [C++]类和对象【上篇】
  • [Django 0-1] Core.Email 模块
  • [HTML]Web前端开发技术7(HTML5、CSS3、JavaScript )CSS的定位机制——喵喵画网页
  • [Java] 图说 注解