資源描述:
《備份和恢復PostgreSQL數(shù)據(jù)庫.doc》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、備份和恢復PostgreSQL數(shù)據(jù)庫你是否遇到過因為不小心而刪除了某個數(shù)據(jù)庫表,或者是存放數(shù)據(jù)庫的磁盤損壞了的情況呢?如果碰到這種情況,我相信你會覺得非常的沮喪,因為你努力工作了幾個星期的成果可能就付之東流了。但是,你也不必每次都陷入這種困境。如果你將數(shù)據(jù)存放在PostgreSQL表中,你就可以定時的進行數(shù)據(jù)庫備份,從而避免上述悲劇的發(fā)生。PostgreSQL自帶有內置工具來執(zhí)行備份工作,而且在系統(tǒng)出現(xiàn)損壞或是意外時,你可以通過這些工具進行“回滾”,并通過以前保存的快照將系統(tǒng)恢復到其初始的狀態(tài)。數(shù)據(jù)備份Postgre
2、SQL自帶的內置備份工具叫做pg_dump。這個工具是通過一系列的SQL語句讀取某個指定的數(shù)據(jù)庫并復制其中的內容,以它作為快照并用于日后的數(shù)據(jù)恢復??蛻舳说椒掌鞫说倪B接是用于執(zhí)行備份工作。這些備份文件就是前面所講的快照并可以用于日后的數(shù)據(jù)恢復。而保證客戶端與服務器端的連接是執(zhí)行備份所必需的。注意:在進行上述工作之前,首先請確保你具有登錄到服務器并訪問你將要備份的數(shù)據(jù)庫或表的權限。你可以通過使用PostgreSQL命令行客戶端——psql,進行服務器登錄。在客戶端中輸入主機名(-h),用戶名(-u)和密碼(-p),以
3、及數(shù)據(jù)庫名,然后就可以校驗你是否被授權訪問。使用pg_dump非常的簡單——只需要在命令提示符后面輸入將要導出的數(shù)據(jù)庫名就可以進行備份工作了,如下例所示(根據(jù)你自己的安裝路經更改PostgreSQL路徑):$/usr/local/pgsql/bin/pg_dump-D-hlocalhost-Upgsqltest>test.bak通過上面的命令就會創(chuàng)建一個名為test.bak的文件,文件中記錄了用于恢復數(shù)據(jù)庫的SQL命令。在這個文件中你可以看到類似于下面這個例子中所列出的內容:----Name:pets;Type:TA
4、BLE;Schema:public;Owner:root;Tablespace:--CREATETABLEpets(speciescharactervarying,namecharactervarying);ALTERTABLEpublic.petsOWNERTOroot;----DataforName:pets;Type:TABLEDATA;Schema:public;Owner:root--INSERTINTOpets(species,name)VALUES('dog','Sparky');INSERTINTOp
5、ets(species,name)VALUES('cat','Tabitha');如果你希望對整個系統(tǒng)中所有的數(shù)據(jù)庫進行備份的話(而不是只對某一個數(shù)據(jù)庫進行備份),你可以使用命令pg_dumpall而不是pg_dump。執(zhí)行這個命令可以對PostgreSQL所能識別的所有的數(shù)據(jù)庫(包括其自身的系統(tǒng)數(shù)據(jù)庫)備份到一個文件中。下面給出了一個使用實例:$/usr/local/pgsql/bin/pg_dumpall-D-hlocalhost-Upgsql>all.bak為了保證你的備份時刻保持更新,你可以通過往cronta
6、ble中加入pg_dump或者是pg_dumpall命令來定期執(zhí)行備份工作。這里給出了兩個cronentries的例子。第一個是在每天凌晨3點對test數(shù)據(jù)庫進行備份,而第二個是在每個星期五的晚上9點對所有的數(shù)據(jù)庫進行備份:03***/usr/local/pgsql/bin/pg_dump-D-hlocalhost-Upgsqltest>/disk2/test.bak021**5/usr/local/pgsql/bin/pg_dumpall-D-hlocalhost-Upgsql>/disk2/all.bak數(shù)據(jù)恢復
7、從備份中恢復數(shù)據(jù)的工作比執(zhí)行備份甚至更簡單——你所要做的就是通過執(zhí)行備份文件中的SQL命令來對數(shù)據(jù)庫進行恢復。如果你是使用pg_dump對某一個數(shù)據(jù)庫進行了備份,那么備份中就會有CREATETABLE的語句來對源表進行復制。當然,你首先要新創(chuàng)建一個空數(shù)據(jù)庫來存放這些數(shù)據(jù)表。你可以使用createdb這個工具來完成這一步工作,這個工具也是PostgreSQL套件中的一部分:$/usr/local/pgsql/bin/createdbrestored現(xiàn)在你就可以執(zhí)行備份文件中的SQL命令來對數(shù)據(jù)庫進行恢復了,如下例所示:
8、$/usr/local/pgsql/bin/psql-hlocalhost-Upgsql-drestored