POSTGRESQL 完美備份還原


1.POSTGRESQL 完美備份還原

進入到Postgresql下的bin文件夾,會看到不少的exe文件,這就是PostgreSQL內置的工具了.里面會找到pg_dump.exe.我們實際使用的就是這個.

用法:

1. cd C:\Program Files\PostgreSQL\9.3\bin 2. pg_dump -h localhost -U postgres kar > C:\kar.bak 3. psql -h localhost -U postgres -d KunlunApple < C:\kar.bak

1.開始-運行-cmd 彈出dos控制台,然后進入PostgreSQL安裝目錄bin下,如上面第一條命令.

2.備份

pg_dump -h 164.82.233.54 -U postgres databasename > C:\databasename.bak 

指令解釋:

  • pg_dump 是備份數據庫指令,
  • 164.82.233.54是數據庫的ip地址(必須保證數據庫允許外部訪問的權限,如果是本地可以用localhost)
  • postgres 是數據庫的用戶名;
  • databasename 是數據庫名。
  • > 意思是導出到C:\databasename.bak文件里,如果沒有寫路徑,單單寫databasename.bak文件名,那么備份文件會保存在PostgreSQL\9.3\bin文件夾里。

如上面第二條進行備份.

3.恢復

psql -h localhost -U postgres -d KunlunApple <  C:\kar.bak

指令解釋:

  • psql是恢復數據庫命令
  • 164.82.233.54是數據庫的ip地址(必須保證數據庫允許外部訪問的權限,如果是本地可以用localhost)
  • postgres 是數據庫的用戶名;
  • databasename 是要恢復到哪個數據庫
  • <   的意思是把C:\databasename.bak文件導入到指定的數據庫里

以上所有的是針對windows.

Linux:

在linux里依然有效。有一個值得注意的是:如果直接進入PostgreSQL的安裝目錄bin下,執行命令,可能會出現 找不到pg_dump,psql 的現象,我們在可以這樣:

備份

/opt/PostgreSQL/9.0/bin/pg_dump -h 164.82.233.54 -U postgres databasename > databasename.bak

恢復:

/opt/PostgreSQL/9.0/bin/psql -h localhost -U postgres -d databasename < databasename.bak

 

2. POSTGRESQL 開放外網IP訪問

打開 pg_hba.conf

修改

host  all  all  0.0.0.0/0   md5

3.windows server 2003安裝失敗--the database cluster initialisatio

在windows2003安裝失敗,報警告,並且沒有postgresql服務

problem running post-install step.Installation may not complete correctly
the database cluster initialisation failed

http://forums.enterprisedb.com/posts/list/3984.page 
這個人是PostgreSQL 9.3.5 
http://my.oschina.net/congqian/blog/135590    
這個人是postgresql-windows-9.2.4版本. 
都是和權限有關系. 

后來咨詢了下實施的同事,

1.安裝前,如果安裝過,請卸載,並刪除postgresql的目錄

2.安裝前,創建好你要安裝到的目錄,比如 D:\xxx\postgresql 目錄.

右鍵postgresql文件夾,設置user有控制權限

3.安裝過程中,選擇Locale選擇  chinese singnapore

4.按常規安裝即可成功.

 

3.PostgreSQL 始終不能同時接受超過大約 125 個連接


發生這種情況的原因在於某些 PostgreSQL 說依賴的庫依賴於 user32.dll ,而 user32.dll 要從"Desktop Heap"中分配內存。"Desktop Heap"用於為每個登陸會話分配內存,每個非交互式會話大約分配 512KB ,同時每個 postgres.exe 進程消耗大約 3.2KB 的"Desktop Heap",這樣大約 125 連接就差不多可以耗盡全部的"Desktop Heap"空間。不過這種情況不會發生在從命令行運行的場合,因為命令行是交互式登陸會話,通常只需要 3MB 大小的"Desktop Heap"就可以了。   http://support.microsoft.com/kb/184802 

要解決這個問題,你必須通過修改注冊表中的 SharedSection 值來增加非交互式"Desktop Heap"的尺寸,具體方法參見微軟知識庫中的文章。需要注意的是,設置太高的值有可能導致系統無法啟動。 

 

4.PostgreSQL 自動備份,並刪除10天前的備份文件的windows腳本.

新建bat文件,使用以下腳本

@ECHO OFF @setlocal enableextensions @cd /d "%~dp0" SET PGPATH=D:\db\postgresql\bin\ SET SVPATH=E:\DatabaseBackup\ SET PRJDB=dbname 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 -5 /c "cmd /c echo deleting @file ... && del /f @path" 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM