POSTGRESQL 完美備份還原

1.POSTGRESQL 完美備份還原

進入到Postgresql下的bin文件夾,會看到很多的exe文件,這就是PostgreSQL內置的工具了.裏面會找到pg_dump.exe.咱們實際使用的就是這個.linux

用法:sql

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.備份windows

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

指令解釋:markdown

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

如上面第二條進行備份.less

3.恢復工具

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

指令解釋:ui

  • 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" 

 

相關文章
相關標籤/搜索