zoukankan      html  css  js  c++  java
  • Windows 2008R2 定时备份PostgreSQL 11.6及还原操作

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

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

    @ECHO OFF
    @setlocal enableextensions
    @cd /d "%~dp0"
     
    ##set PGPASSWORD=password
    SET PGPATH=D:postgresqlin
    SET SVPATH=d:	estbackup
    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:UserDesktoppostgis

      数据的导出:

    $ 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 文件不在当前路径下
  • 相关阅读:
    js对象数组中的某属性值 拼接成字符串
    mongodb 简单的增删改查
    celery简单使用
    Redis简单操作
    三大认证源码分析
    认证、权限、频率、自定义签发token-多方式登录
    jwt认证
    视图家族
    day75作业
    day74作业
  • 原文地址:https://www.cnblogs.com/VicLiu/p/11963320.html
Copyright © 2011-2022 走看看