標籤:
最近工作上使用的資料庫一直是Postgresql,這是一款開源的資料庫,而且任何個人可以將該資料庫用於商業用途。在使用Postgresql的時候,讓我最明顯的感覺就是這資料庫做的真心好,雖然說資料庫的安裝包真的很小,但是效能和操作的便捷是一點也不輸給其他商業的大型資料庫,另外在命令列介面下對該資料庫直接進行操作的感覺真的是很爽。在使用資料庫的時候,我們作為小公司的資料庫管理員有一項工作是不可能避免的,那就是資料的備份和恢複問題。PostgreSQL雖然各個方面的有點很多,但是在Database Backup這方面,它是不支援增量備份的,這點確實讓人覺得很是可惜啊。不過,瑕不掩瑜,總的來說這是一款很好的資料庫軟體。
PostgreSql支援的備份方式有三種:第一種是利用SQL語句備份,第二種是檔案系統層級的備份,第三種是線上備份以及及時回複。一般而言第一種方式的備份基本已經都我們用了,而且也很是方便。
在第一種備份和恢複的方式中,我們主要使用到的工具有pg_dump,pg_dumpall,psql,pg_restore。下面主要說下這四個工具之間是如何合作完成備份和恢複這個操作的。其中pg_dump和pg_dumpall主要用於備份,這兩者之間的區別顯而易見,前者是用來對某個資料庫進行備份,而後者是用來備份整個資料庫叢集的。psql和pg_restore用於恢複資料的,這兩者不同的是psql只能用於採用預設格式備份的備份檔案的恢複,而pg_restore則用於恢複採用自訂、目錄和tar格式備份的資料的恢複。在第一種方面中主要的區別也就是這些了。下面把我備份資料庫用的指令碼貼出來,以供分享和交流。
@echo offrem PostgreSQLDatabase Backup指令碼,該指令碼不支援大資料對象的備份set path=%path%;C:\Program Files\PostgreSQL\9.4\bin;set fileName=database.backupset fileDir=%homepath%\winsun\%Date:~0,4%%Date:~5,2%if not exist %fileDir% (mkdir %fileDir%)if exist %fileDir%\%fileName% (del %fileDir%\%fileName%)pg_dump -U postgres -d database -p 5432 -w -F t -if-exists -c -f %fileDir%\%fileName%pg_dump -U postgres -d database -p 5432 -w -if-exists -c -f %fileDir%\%fileName%.sql
開來源資料庫Postgresql的備份和恢複