簡體   English   中英

在PostgreSQL中自動執行數據庫備份

[英]Automate Database backup in PostgreSQL

我正在尋找一種解決方案-一個腳本來自動化在PostgreSQL中進行數據庫備份的過程。 到目前為止,我是手動執行的,即右鍵單擊數據庫,然后單擊備份選項。 我進行了一些研究,最終得到了一個可以解決該問題的腳本,即:

@ECHO OFF
@setlocal enableextensions
@cd /d "%~dp0"

SET PGPATH=C:\PostgreSQL\9.4\bin\
SET SVPATH=d:\
SET PRJDB=Test
SET DBUSR=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 pg_dump=%PRJDB%_%d%_%t%.backup
@ECHO OFF
%PGPATH%pg_dump -h localhost -p 5432 -U postgres %PRJDB% > %SVPATH%%pg_dump%

echo Backup Taken Complete %SVPATH%%pg_dump%
pause 

它確實進行了備份,但是生成的文件是sql文件,盡管我確實將擴展名更改為.backup 結果,如果我需要還原數據庫,並嘗試從生成的文件中還原,則不可能。 有人可以為我提供解決此問題的方法嗎? 提前致謝。

以下腳本可用於獲取擴展名為.backup的Postgres備份

 @echo off
       for /f "tokens=1-4 delims=/ " %%i in ("%date%") do (
         set dow=%%i
         set month=%%j
         set day=%%k
         set year=%%l
       )
       set datestr=%day%_%month%_%year%
       echo datestr is %datestr%

       set BACKUP_FILE=C:\Users\slan\Desktop\backup_test\DBNAME_%datestr%.backup
       echo backup file name is %BACKUP_FILE%
       SET PGPASSWORD=YOUR_PASSWORD
       echo on
       bin\pg_dump -i -h localhost -p 5432 -U postgres -F c -b -v -f %BACKUP_FILE% YOUR_DB_NAME

您必須具有PostgreSQL的bin文件夾(例如C:\\PostgreSQL\\9.4\\bin )以及此腳本,否則將無法按預期工作

要計划任務,您可以使用Windows任務計划程序,以下是有關如何執行任務的示例。 - 如何安排批處理文件在Windows 10/8/7中自動運行

您可以使用PGagent計划批處理,它比Windows Scheduler bat腳本具有多個優勢

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM