W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
pg_verifybackup — 驗(yàn)證PostgreSQL集群的基礎(chǔ)備份的完整性
pg_verifybackup
[option
...]
pg_verifybackup用于根據(jù)備份時(shí)服務(wù)器生成的backup_manifest
檢查使用pg_basebackup
進(jìn)行的數(shù)據(jù)庫(kù)群集備份的完整性。備份必須以“普通”格式存儲(chǔ);“tar”格式的備份可以在解壓縮后進(jìn)行檢查。
需要注意的是,由pg_verifybackup執(zhí)行的驗(yàn)證不包括也不可能包括運(yùn)行中的服務(wù)器在嘗試使用備份時(shí)執(zhí)行的所有檢查。 即使使用此工具,也應(yīng)執(zhí)行測(cè)試還原,并驗(yàn)證生成的數(shù)據(jù)庫(kù)是否按預(yù)期工作,以及它們是否包含正確的數(shù)據(jù)。但是,pg_verifybackup可以檢測(cè)到由于存儲(chǔ)問(wèn)題或用戶錯(cuò)誤而經(jīng)常出現(xiàn)的許多問(wèn)題。
備份驗(yàn)證分四個(gè)階段進(jìn)行。首先,pg_verifybackup
讀取backup_manifest
文件。如果該文件不存在、無(wú)法讀取、格式不正確或無(wú)法根據(jù)其內(nèi)部校驗(yàn)和進(jìn)行驗(yàn)證,pg_verifybackup
將以致命錯(cuò)誤終止。
其次,pg_verifybackup
將嘗試驗(yàn)證當(dāng)前存儲(chǔ)在磁盤(pán)上的數(shù)據(jù)文件是否與服務(wù)器打算發(fā)送的數(shù)據(jù)文件完全相同,下面將介紹一些例外情況。 除了少數(shù)例外,額外和丟失的文件將被檢測(cè)到。此步驟將忽略 postgresql.auto.conf
、standby.signal
和 recovery.signal
的存在與否或?qū)ζ涞娜魏涡薷?,因?yàn)轭A(yù)計(jì)這些文件可能是在備份過(guò)程中創(chuàng)建或修改的。它也不會(huì)抱怨目標(biāo)目錄中的
backup_manifest
文件或 pg_wal
中的任何內(nèi)容,即使這些文件不會(huì)列在備份清單中。只檢查文件;不驗(yàn)證目錄的存在與否,除非間接驗(yàn)證:如果目錄丟失,則它應(yīng)該包含的任何文件也必然會(huì)丟失。
接下來(lái),pg_verifybackup
將對(duì)所有文件進(jìn)行校驗(yàn)和計(jì)算,將校驗(yàn)和與清單中的值進(jìn)行比較,并對(duì)計(jì)算出的校驗(yàn)和與清單中存儲(chǔ)的校驗(yàn)和不匹配的任何文件發(fā)出錯(cuò)誤。對(duì)于在上一步中產(chǎn)生錯(cuò)誤的任何文件,不執(zhí)行此步驟,因?yàn)橐阎@些文件存在問(wèn)題。在上一步中被忽略的文件在此步驟中也被忽略。
最后,pg_verifybackup
將使用清單來(lái)驗(yàn)證恢復(fù)備份所需的預(yù)寫(xiě)式日志記錄是否存在,并且它們可以被讀取和解析。 backup_manifest
包含有關(guān)需要哪些預(yù)寫(xiě)式日志記錄的信息,并且 pg_verifybackup
將使用該信息來(lái)調(diào)用 pg_waldump
來(lái)解析這些預(yù)寫(xiě)式日志記錄。
--quiet
標(biāo)志將被使用,因此 pg_waldump
只會(huì)報(bào)告錯(cuò)誤,而不會(huì)產(chǎn)生任何其他輸出。雖然這種級(jí)別的驗(yàn)證足以檢測(cè)明顯的問(wèn)題,例如丟失的文件或內(nèi)部校驗(yàn)和不匹配的問(wèn)題,但它們還不足以檢測(cè)嘗試恢復(fù)時(shí)可能出現(xiàn)的所有問(wèn)題。例如,此方法無(wú)法檢測(cè)到產(chǎn)生具有正確校驗(yàn)和但指定無(wú)意義操作的預(yù)寫(xiě)式日志記錄的服務(wù)器錯(cuò)誤。
請(qǐng)注意,如果存在不需要恢復(fù)備份的額外 WAL 文件,則此工具不會(huì)檢查它們,盡管可以為此使用單獨(dú)的 pg_waldump
調(diào)用。 另請(qǐng)注意,WAL 驗(yàn)證是特定于版本的:您必須使用 pg_verifybackup
的版本,因此是 pg_waldump
的版本,它與正在檢查的備份有關(guān)。 相比之下,數(shù)據(jù)文件完整性檢查應(yīng)適用于生成 backup_manifest
文件的任何版本的服務(wù)器。
pg_verifybackup 接受以下命令行參數(shù):
-e
--exit-on-error
檢測(cè)到備份問(wèn)題后立即退出。 如果沒(méi)有指定這個(gè)選項(xiàng),pg_verifybackup
將在檢測(cè)到問(wèn)題后繼續(xù)檢查備份,并將檢測(cè)到的所有問(wèn)題報(bào)告為錯(cuò)誤。
-i path
--ignore=path
在將備份中實(shí)際存在的數(shù)據(jù)文件列表與 backup_manifest
文件中列出的數(shù)據(jù)文件列表進(jìn)行比較時(shí),忽略指定的文件或目錄,該文件或目錄應(yīng)表示為相對(duì)路徑名。如果指定了目錄,則此選項(xiàng)會(huì)影響以該位置為根的整個(gè)子樹(shù)。 如果相對(duì)路徑名與指定的路徑名匹配,有關(guān)額外文件、丟失文件、文件大小差異或校驗(yàn)和不匹配的投訴將被抑制。 可以多次指定此選項(xiàng)。
-m path
--manifest-path=path
使用指定路徑的清單文件,而不是位于備份目錄根目錄中的清單文件。
-n
--no-parse-wal
不要試圖解析從該備份恢復(fù)所需的預(yù)寫(xiě)式日志數(shù)據(jù)。
-q
--quiet
成功驗(yàn)證備份后不要打印任何內(nèi)容。
-s
--skip-checksums
不要驗(yàn)證數(shù)據(jù)文件校驗(yàn)和。但仍檢查是否存在文件以及這些文件的大小。這樣將會(huì)快得多,因?yàn)槲募旧聿恍枰x取。
-w path
--wal-directory=path
嘗試解析存儲(chǔ)在指定目錄中的 WAL 文件,而不是 pg_wal
。 如果備份存儲(chǔ)在與WAL存檔不同的位置,則這可能很有用。
其他選項(xiàng)也可用:
-V
--version
打印 pg_verifybackup 版本并退出。
-?
--help
顯示有關(guān)pg_verifybackup命令行參數(shù)的幫助,然后退出。
要在 mydbserver
上創(chuàng)建服務(wù)器的基本備份并驗(yàn)證備份的完整性:
$
pg_basebackup -h mydbserver -D /usr/local/pgsql/data
$
pg_verifybackup /usr/local/pgsql/data
要在 mydbserver
上創(chuàng)建服務(wù)器的基本備份,請(qǐng)將清單移動(dòng)到備份目錄之外的某個(gè)位置,并驗(yàn)證備份:
$
pg_basebackup -h mydbserver -D /usr/local/pgsql/backup1234
$
mv /usr/local/pgsql/backup1234/backup_manifest /my/secure/location/backup_manifest.1234
$
pg_verifybackup -m /my/secure/location/backup_manifest.1234 /usr/local/pgsql/backup1234
要在忽略手動(dòng)添加到備份目錄的文件的同時(shí)驗(yàn)證備份,并跳過(guò)校驗(yàn)和驗(yàn)證:
$
pg_basebackup -h mydbserver -D /usr/local/pgsql/data
$
edit /usr/local/pgsql/data/note.to.self
$
pg_verifybackup --ignore=note.to.self --skip-checksums /usr/local/pgsql/data
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: