CockroachDB-备份与恢复(5)BACKUP命令
CRDB的BACKUP語句允許您創(chuàng)建集群模式和數(shù)據(jù)的完整或增量備份,這些備份與給定的時間戳一致。
您可以備份整個集群,包括:
- 相關(guān)系統(tǒng)表
- 所有數(shù)據(jù)庫
- 所有表(自動包含它們的索引)
- 所有視圖
- 所有預(yù)定的作業(yè)
你也可以備份:
- 一個單獨的數(shù)據(jù)庫,它包括所有的表和視圖。
- 一個單獨的表,其中包括它的索引和視圖。
BACKUP只備份整個表;它不支持備份表的子集。
因為cockachdb設(shè)計了高容錯性,所以這些備份主要用于通過RESTORE進行災(zāi)難恢復(fù)(即,如果您的集群失去了大部分節(jié)點)。孤立的問題(如小規(guī)模節(jié)點中斷)不需要任何干預(yù)。
要查看使用backup語句創(chuàng)建的備份的內(nèi)容,請使用SHOW backup。
考慮因素
恢復(fù)之前目標(biāo)集群上的區(qū)域配置將在使用備份集群中的區(qū)域配置進行集群恢復(fù)時被覆蓋。如果在進行備份時集群上沒有定制的分區(qū)配置,那么在恢復(fù)之后,目標(biāo)集群將使用RANGE DEFAULT配置中的分區(qū)配置。
使用exclude_data_from_backup參數(shù)從備份中排除表的行數(shù)據(jù)。
BACKUP是一個阻塞語句。要異步運行備份作業(yè),請使用DETACHED選項。
存儲考慮
備份和恢復(fù)不支持HTTP存儲。
修改存儲位置中的備份文件可能會使備份失效,因此會阻止恢復(fù)。
必需權(quán)限
全集群備份只能由管理角色的成員運行。默認情況下,root用戶屬于admin角色。
對于所有其他備份,用戶必須對正在備份的所有對象具有讀訪問權(quán)。數(shù)據(jù)庫備份需要CONNECT權(quán)限,表備份需要SELECT權(quán)限。用戶定義模式的備份或包含用戶定義類型的備份需要USAGE特權(quán)。
BACKUP要求對其目標(biāo)目的地具有完全的讀和寫權(quán)限。
參數(shù)
cockachdb將完整備份存儲在備份集合中。集合中的每個全量備份也可以有增量備份。
| targets | 備份目標(biāo)。不指定代表備份整個集群。或者使用DATABASE {database_name}[,…]代表備份哪些庫,使用TABLE {table_name}[,…]代表備份哪些表 |
| subdirectory | 指定集合中增量備份的名稱(例如,2011/03/23 -213101.37)。要查看可用的備份子目錄,請使用SHOW BACKUPS IN collectionURI。如果沒有提供備份子目錄,則增量備份將存儲在集合URI根目錄的默認/incrementals目錄中。警告:如果使用任意STRING作為子目錄,將創(chuàng)建一個新的完全備份,但它永遠不會顯示在SHOW BACKUPS in中。我們不建議使用任意字符串作為子目錄名。 |
| LATEST | 將增量備份追加到最近完成的完整備份的子目錄。 |
| collectionURI | 要存儲備份的URI。(或者,用于位置感知備份的默認位置。)有關(guān)此URL結(jié)構(gòu)的信息,請參閱備份文件URL。 |
| localityURI | 包含用于非默認位置的COCKROACH_LOCALITY參數(shù)的URI,該位置是單個位置感知備份的一部分。 |
| timestamp | 備份從時間戳開始就存在的數(shù)據(jù)。時間戳必須比您的集群上一次垃圾收集(默認每25小時發(fā)生一次,但可以對每個表進行配置)更近。 |
| backup_options | 使用這些選項的逗號分隔列表來控制備份行為。 |
backup_options備份選項
| revision_history | N/A | 創(chuàng)建一個具有完整修訂歷史的備份,它記錄了垃圾收集周期內(nèi)從給定時間戳開始(包括給定時間戳)對集群所做的每一個更改。 |
| encryption_passphrase | STRING | 用于加密BACKUP語句生成的文件(BACKUP清單和數(shù)據(jù)文件)的密碼短語。在使用該文件進行恢復(fù)時,解密該文件以及在使用SHOW backup時列出備份的內(nèi)容都需要使用相同的密碼短語。對于密碼短語的長度沒有實際的限制。 |
| DETACHED | N/A | 當(dāng)備份以DETACHED模式運行時,它將異步執(zhí)行。任務(wù)ID將在備份任務(wù)創(chuàng)建完成后返回。注意,如果指定了DETACHED,則不會返回進一步的作業(yè)信息和作業(yè)完成狀態(tài)。有關(guān)返回作業(yè)數(shù)據(jù)之間差異的更多信息,請參見下面的示例。要檢查作業(yè)狀態(tài),請使用SHOW JOBS語句。要在事務(wù)中運行備份,請使用DETACHED選項。 |
| kms | STRING | 密鑰管理服務(wù)(KMS) URI(或以逗號分隔的URI列表),用于加密BACKUP語句生成的文件(BACKUP清單和數(shù)據(jù)文件)。在使用該文件進行恢復(fù)時,解密該文件以及在使用SHOW backup時列出備份的內(nèi)容都需要相同的KMS URI。 |
| incremental_location | STRING | 在與默認增量備份位置不同的位置創(chuàng)建增量備份。WITH incremental_location = 'explicit_incrementals_URI’請參閱使用顯式指定目的地的增量備份。 |
備份文件URL
| Amazon S3 | s3://acme-co/employees.sql?AWS_ACCESS_KEY_ID=123&AWS_SECRET_ACCESS_KEY=456 |
| Azure | azure://acme-co/employees.sql?AZURE_ACCOUNT_NAME=acme-co&AZURE_ACCOUNT_KEY=url-encoded-123 |
| Google Cloud | gs://acme-co/employees.sql?AUTH=specified&CREDENTIALS=encoded-123 |
| HTTP | http://localhost:8080/employees.sql |
| NFS/Local | nodelocal://1/path/employees,nodelocal://self/nfsmount/backups/employees |
功能細節(jié)
依賴對象必須與它們所依賴的對象同時備份,包括表相關(guān)的外鍵約束、sequence、視圖
要從備份中排除表的行數(shù)據(jù),請使用exclude_data_from_backup參數(shù)和CREATE table或ALTER table。
性能
BACKUP進程通過將工作分配到所有節(jié)點,將其對集群性能的影響降到最低。每個節(jié)點只備份它所存儲的數(shù)據(jù)的一個特定子集(它所服務(wù)的寫入數(shù)據(jù)),沒有兩個節(jié)點備份相同的數(shù)據(jù)。
與任何讀取一樣,如果范圍包含未處理的意圖,BACKUP不能導(dǎo)出該范圍。雖然您通常希望像BACKUP這樣的大容量后臺作業(yè)對前臺流量的影響盡可能小,但更重要的是讓備份實際完成(這將維護您的恢復(fù)點目標(biāo)(RPO))。普通的讀事務(wù)會阻塞直到它遇到的任何未提交的寫都被解決,與之不同的是,BACKUP只會阻塞一個可配置的持續(xù)時間,然后調(diào)用優(yōu)先級以確保它能按時完成。
我們建議總是以至少10秒前的特定時間戳啟動備份。例如:
BACKUP...AS OF SYSTEM TIME '-10s';這降低了BACKUP因為與其他語句/事務(wù)爭用而被重試的可能性,從而提高了性能。但是,因為AS OF SYSTEM TIME返回的是歷史數(shù)據(jù),所以您的讀取可能會過時。使用AS OF SYSTEM TIME '-10s’進行備份是減少可能遇到的仍在運行的事務(wù)數(shù)量的最佳實踐,因為備份將具有優(yōu)先級,并將在備份完成后強制仍在運行的事務(wù)重新啟動。
BACKUP最初會要求各個范圍進行備份,但如果它們遇到意圖,則跳過。任何被跳過的范圍都放在隊列的末尾。當(dāng)BACKUP完成了它的初始傳遞并重新訪問范圍時,它將要求在給定的時間限制(默認為1分鐘)內(nèi)沒有處理的任何范圍嘗試處理它遇到的任何意圖,并且不跳過。此外,備份的事務(wù)優(yōu)先級被設(shè)置為高,這將導(dǎo)致其他事務(wù)中止,直到意圖被處理和備份完成。
v22.1新增功能:如果備份作業(yè)在重試次數(shù)達到最大次數(shù)后繼續(xù)遇到瞬時錯誤,則備份作業(yè)將暫停,而不是進入失敗狀態(tài)。暫停備份后,可以恢復(fù)備份或取消備份。
要設(shè)置寫入每個備份文件的備份數(shù)據(jù)量的目標(biāo),可以使用bulkio.backup.file_size集群設(shè)置。
查看并控制備份任務(wù)
在cockachdb成功啟動備份后,它將備份注冊為一個作業(yè),您可以執(zhí)行以下操作:
- SHOW JOBS
- PAUSE JOBS
- RESUME JOBS
- CANCEL JOBS
備份示例
全量備份整個集群
BACKUP INTO 'nodelocal://1/windbackup'AS OF SYSTEM TIME '-10s' WITH revision_history,detached;基于全量備份進行增量備份
BACKUP INTO LATEST IN 'nodelocal://1/windbackup'AS OF SYSTEM TIME '-10s' WITH revision_history,detached;增量備份并指定增量備份目錄
BACKUP INTO '/2021/11/23/inc_bk/1' IN 'nodelocal://1/windbackup'AS OF SYSTEM TIME '-10s' WITH revision_history,detached;總結(jié)
以上是生活随笔為你收集整理的CockroachDB-备份与恢复(5)BACKUP命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 围成圈报数题
- 下一篇: 华为LAB实验室4-朴素贝叶斯