成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Postgresql備份和恢復(fù)之SQL轉(zhuǎn)儲(chǔ)

IT那活兒 / 1675人閱讀
Postgresql備份和恢復(fù)之SQL轉(zhuǎn)儲(chǔ)

備份的意義在于發(fā)生意外時(shí),具備恢復(fù)和還原的能力,及時(shí)將意外導(dǎo)致的損失降到最低。Postgresql的備份還原主要有:SQL轉(zhuǎn)儲(chǔ)、文件系統(tǒng)級(jí)備份和連續(xù)歸檔和時(shí)間點(diǎn)恢復(fù)(PITR)這三種方式。今天主要介紹的是postgresql基礎(chǔ)備份恢復(fù)方式-SQL轉(zhuǎn)儲(chǔ)。

PostgreSQL自帶的內(nèi)置備份工具叫做pg_dump。這個(gè)工具是通過(guò)一系列的SQL語(yǔ)句讀取某個(gè)指定的數(shù)據(jù)庫(kù)并復(fù)制其中的內(nèi)容,以它作為快照并用于日后的數(shù)據(jù)恢復(fù)。該工具的基本用法是:

pg_dumpdbname> dumpfile

pg_dump是將結(jié)果寫(xiě)入標(biāo)準(zhǔn)輸出文件中。pg_dump可以用其他格式創(chuàng)建文件以支持并行和細(xì)粒度的對(duì)象恢復(fù)控制。pg_dump是一個(gè)普通的PG客戶端應(yīng)用,這就意味著你可以在任何可以訪問(wèn)該數(shù)據(jù)庫(kù)的遠(yuǎn)端主機(jī)上進(jìn)行備份工作。


在使用pg_dump工具進(jìn)行備份之前,首先需要確保執(zhí)行用戶具有登錄到服務(wù)器并訪問(wèn)將要備份的數(shù)據(jù)庫(kù)或表的權(quán)限??梢酝ㄟ^(guò)使用psql,進(jìn)行服務(wù)器登錄。在客戶端中輸入主機(jī)名(-h),用戶名(-u)和密碼(-p),以及數(shù)據(jù)庫(kù)名,然后就可以校驗(yàn)備份用戶是否被授權(quán)訪問(wèn)。


使用pg_dump非常的簡(jiǎn)單——只需要在命令提示符后面輸入將要導(dǎo)出的數(shù)據(jù)庫(kù)名就可以進(jìn)行備份工作了,如下例所示(根據(jù)您自己的安裝路徑更改PostgreSQL路徑):

[postgres@pgsql1~]$ /db/pgsql/bin/pg_ctl -D -h localhost -U demo(用戶名)demodb(數(shù)據(jù)庫(kù)名稱)> demodb.sql

通過(guò)上面的命令就會(huì)創(chuàng)建一個(gè)名為demodb.sql的文件,文件中記錄了用于恢復(fù)數(shù)據(jù)庫(kù)的SQL命令。


和任何其他PostgreSQL客戶端應(yīng)用一樣,pg_dump默認(rèn)使用與當(dāng)前操作系統(tǒng)用戶名同名的數(shù)據(jù)庫(kù)用戶名進(jìn)行連接。要使用其他名字,要么聲明-U選項(xiàng),要么設(shè)置環(huán)境變量PGUSER。請(qǐng)注意pg_dump的連接也要通過(guò)客戶認(rèn)證機(jī)制。


pg_dump對(duì)于其他備份方法的一個(gè)重要優(yōu)勢(shì)是,pg_dump的輸出可以很容易的在新版本的PostgreSQL中載入,而文件級(jí)備份和連續(xù)歸檔都限制于服務(wù)器架構(gòu)和版本。pg_dump也是唯一可以將一個(gè)數(shù)據(jù)庫(kù)傳送到一個(gè)不同機(jī)器架構(gòu)上的方法,例如:從一個(gè)32位服務(wù)器到一個(gè)64位服務(wù)器。


由于pg_dump創(chuàng)建的備份在內(nèi)部是一致的,SQL轉(zhuǎn)儲(chǔ)文件中是pg_dump開(kāi)始運(yùn)行時(shí)刻的數(shù)據(jù)庫(kù)快照,且在pg_dump運(yùn)行過(guò)程中發(fā)生的更新將不會(huì)被轉(zhuǎn)儲(chǔ)。因此,pg_dump工作的時(shí)候并不阻塞其他進(jìn)程對(duì)數(shù)據(jù)庫(kù)的操作。(但是會(huì)阻塞那些需要排它鎖的操作,比如ALTERTABLE等)。


[
1、從轉(zhuǎn)儲(chǔ)中恢復(fù)
]

pg_dump生成的文本文件可以由psql程序讀取。從轉(zhuǎn)儲(chǔ)中恢復(fù)的常用命令是:

psqldbname< dumpfile

其中dumpfile就是pg_dump命令的輸出文件,也就是之前導(dǎo)出的demodb.sql文件。這條命令操作之前需要有待導(dǎo)入的數(shù)據(jù)庫(kù)demodb。因此,必須在執(zhí)行psql前已經(jīng)創(chuàng)建demodb(例如,用命令createdb-Ttemplate0 demodb)。psql支持類似pg_dump的選項(xiàng)用以指定要連接的數(shù)據(jù)庫(kù)服務(wù)器和要使用的用戶名。pg_dump產(chǎn)生的轉(zhuǎn)儲(chǔ)是相對(duì)于template0。這意味著在template1中加入的任何語(yǔ)言、過(guò)程等都會(huì)被pg_dump轉(zhuǎn)儲(chǔ)。結(jié)果是,如果在恢復(fù)時(shí)使用的是一個(gè)自定義的template1,你必須從template0創(chuàng)建一個(gè)空的數(shù)據(jù)庫(kù)。


在開(kāi)始恢復(fù)之前,SQL轉(zhuǎn)儲(chǔ)庫(kù)中對(duì)象的擁有者以及在其上被授予了權(quán)限的用戶必須已經(jīng)存在。如果不存在,那么恢復(fù)過(guò)程將無(wú)法將對(duì)象創(chuàng)建成具有原來(lái)的所屬關(guān)系以及權(quán)限。


默認(rèn)情況下,psql腳本在遇到一個(gè)SQL錯(cuò)誤后會(huì)繼續(xù)執(zhí)行。也可以在遇到一個(gè)SQL錯(cuò)誤后讓psql退出,那么可以設(shè)置ON_ERROR_STOP變量來(lái)運(yùn)行psql,這將使psql在遇到SQL錯(cuò)誤后退出并返回狀態(tài)3:

psql--set ON_ERROR_STOP=on dbname < infile

[
2、使用pg_dumpall
]

pg_dump每次只轉(zhuǎn)儲(chǔ)一個(gè)數(shù)據(jù)庫(kù),而且它不會(huì)轉(zhuǎn)儲(chǔ)關(guān)于角色或表空間(因?yàn)樗鼈兪羌胤秶模┑男畔ⅰ榱酥С址奖愕剞D(zhuǎn)儲(chǔ)一個(gè)數(shù)據(jù)庫(kù)集簇的全部?jī)?nèi)容,提供了pg_dumpall程序。pg_dumpall備份一個(gè)給定集簇中的每一個(gè)數(shù)據(jù)庫(kù),并且也保留了集簇范圍的數(shù)據(jù),如角色和表空間定義。該命令的基本用法是:

pg_dumpall> dumpfile

轉(zhuǎn)儲(chǔ)的結(jié)果可以使用psql恢復(fù):

psql-f dumpfilepostgres


在恢復(fù)一個(gè)pg_dumpall轉(zhuǎn)儲(chǔ)時(shí)常常需要具有數(shù)據(jù)庫(kù)超級(jí)用戶訪問(wèn)權(quán)限,因?yàn)樗枰謴?fù)角色和表空間信息。如果在使用表空間,需要確保轉(zhuǎn)儲(chǔ)中的表空間路徑適合于新的安裝。


pg_dumpall工作時(shí)會(huì)發(fā)出命令重新創(chuàng)建角色、表空間和空數(shù)據(jù)庫(kù),接著為每一個(gè)數(shù)據(jù)庫(kù)pg_dump。這意味著每個(gè)數(shù)據(jù)庫(kù)自身是一致的,但是不同數(shù)據(jù)庫(kù)的快照并不同步。


集簇范圍的數(shù)據(jù)可以使用pg_dumpall的--globals-only選項(xiàng)來(lái)多帶帶轉(zhuǎn)儲(chǔ)。如果在單個(gè)數(shù)據(jù)庫(kù)上運(yùn)行pg_dump命令,上述做法對(duì)于完全備份整個(gè)集簇是必需的。

[
3、處理數(shù)據(jù)量大的數(shù)據(jù)庫(kù)
]

在一些具有最大文件尺寸限制的操作系統(tǒng)上創(chuàng)建大型的pg_dump輸出文件可能會(huì)出現(xiàn)問(wèn)題。pg_dump可以寫(xiě)出到標(biāo)準(zhǔn)輸出,因此操作時(shí)可以使用標(biāo)準(zhǔn)Unix工具來(lái)處理這種潛在的問(wèn)題。有幾種可能的方法:

使用壓縮轉(zhuǎn)儲(chǔ)

可以使用常用的壓縮程序,例如gzip:

pg_dumpdbname| gzip > filename.gz

恢復(fù):

gunzip-c filename.gz| psql dbname

或者:

catfilename.gz| gunzip | psql dbname

使用split

split命令允許你將輸出分割成較小的文件以便能夠適應(yīng)底層文件系統(tǒng)的尺寸要求。例如,讓每一塊的大小為1兆字節(jié):

pg_dumpdbname| split -b 1m - filename

恢復(fù):

catfilename*| psql dbname


使用pg_dump的自定義轉(zhuǎn)儲(chǔ)格式

如果PostgreSQL所在的系統(tǒng)上安裝了zlib壓縮庫(kù),自定義轉(zhuǎn)儲(chǔ)格式將在寫(xiě)出數(shù)據(jù)到輸出文件時(shí)對(duì)其壓縮。這將產(chǎn)生和使用gzip時(shí)差不多大小的轉(zhuǎn)儲(chǔ)文件,但是這種方式的一個(gè)優(yōu)勢(shì)是其中的表可以被有選擇地恢復(fù)。下面的命令使用自定義轉(zhuǎn)儲(chǔ)格式來(lái)轉(zhuǎn)儲(chǔ)一個(gè)數(shù)據(jù)庫(kù):

pg_dump-Fc dbname> filename

自定義格式的轉(zhuǎn)儲(chǔ)不是psql的腳本,只能通過(guò)pg_restore恢復(fù),例如:

pg_restore-d dbnamefilename

對(duì)于非常大型的數(shù)據(jù)庫(kù),你可能需要將split配合其他兩種方法之一進(jìn)行使用。

使用pg_dump的并行轉(zhuǎn)儲(chǔ)特性

為了加快轉(zhuǎn)儲(chǔ)一個(gè)大型數(shù)據(jù)庫(kù)的速度,可以使用pg_dump的并行模式。它將同時(shí)轉(zhuǎn)儲(chǔ)多個(gè)表。可以使用-j參數(shù)控制并行度。并行轉(zhuǎn)儲(chǔ)只支持“目錄”歸檔格式。

pg_dump-j num-F d -f out.dirdbname

可以使用pg_restore-j來(lái)以并行方式恢復(fù)一個(gè)轉(zhuǎn)儲(chǔ)。它只能適合于“自定義”歸檔或者“目錄”歸檔,這個(gè)歸檔不一定由pg_dump-j創(chuàng)建。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/130093.html

相關(guān)文章

  • Postgresql 備份恢復(fù)

    摘要:指定要用于查找的口令文件的名稱。前四個(gè)字段可以是確定的字面值,也可以使用通配符匹配所有。利用環(huán)境變量引用的文件權(quán)限也要滿足這個(gè)要求,否則同樣會(huì)被忽略。在上,該文件被假定存儲(chǔ)在一個(gè)安全的目錄中,因此不會(huì)進(jìn)行特別的權(quán)限檢查。 pg_dump pg_dump 把一個(gè)數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)為純文本文件或者是其它格式. 用法: pg_dump [選項(xiàng)]... [數(shù)據(jù)庫(kù)名字] 一般選項(xiàng): -f, --fi...

    阿羅 評(píng)論0 收藏0
  • 新書(shū)推薦 |《PostgreSQL實(shí)戰(zhàn)》出版(提供樣章下載)

    摘要:作者譚峰張文升出版日期年月頁(yè)數(shù)頁(yè)定價(jià)元本書(shū)特色中國(guó)開(kāi)源軟件推進(jìn)聯(lián)盟分會(huì)特聘專家撰寫(xiě),國(guó)內(nèi)多位開(kāi)源數(shù)據(jù)庫(kù)專家鼎力推薦。張文升中國(guó)開(kāi)源軟件推進(jìn)聯(lián)盟分會(huì)核心成員之一。 很高興《PostgreSQL實(shí)戰(zhàn)》一書(shū)終于出版,本書(shū)大體上系統(tǒng)總結(jié)了筆者 PostgreSQL DBA 職業(yè)生涯的經(jīng)驗(yàn)總結(jié),本書(shū)的另一位作者張文升擁有豐富的PostgreSQL運(yùn)維經(jīng)驗(yàn),目前就職于探探科技任首席PostgreS...

    Martin91 評(píng)論0 收藏0
  • 2021年10月6日 軟考中級(jí)筆記---軟件設(shè)計(jì)師(B站視頻筆記)

    摘要:死鎖問(wèn)題可以預(yù)防,可以解決死鎖年月日數(shù)據(jù)庫(kù)的完整性約束實(shí)體完整性約束定義主鍵。主鍵不能為空,不能重復(fù)參照完整性約束外鍵。系統(tǒng)需要進(jìn)行多次連接,才能進(jìn)行查詢操作,是的系統(tǒng)效率大大下降。 ...

    superPershing 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<