亚洲一级簧片_性 毛片_国产乱子视频_久久影城_强伦女教师视频_成人精品久久

電腦顯示 系統(tǒng)正在恢復(fù)備份恢復(fù)

發(fā)布時間: 2023-04-17 04:16 閱讀: 文章來源:轉(zhuǎn)載

作者:張洪

愛可生南區(qū) DBA 團(tuán)隊成員,主要負(fù)責(zé)mysql故障處理及相關(guān)技術(shù)支持。愛好旅游,攝影。

本文來源:原創(chuàng)投稿

* 愛可生開源社區(qū)出品,原創(chuàng)內(nèi)容未經(jīng)授權(quán)不得隨意使用,轉(zhuǎn)載請聯(lián)系小編并注明來源。


概述

Percona Backup for MongoDB(PBM)是一個針對MongoDB副本集和分片的一致性備份開源工具,它支持邏輯備份、物理備份、增量備份以及選擇性備份和恢復(fù)等特性,并且支持Point-in-Time恢復(fù)到指定時間點。

但非常可惜的是物理備份相關(guān)功能目前僅適用于Percona Server for MongoDB的分支,因此下面主要圍繞邏輯備份與Point-in-Time來展開,MongoDB Community版本要求4.0及以上。

架構(gòu)

pbm-agent

pbm-agent用于執(zhí)行備份、恢復(fù),刪除和其它操作的進(jìn)程,它必須運行在集群的每個mongod實例上。包括副本集中的secondary節(jié)點以及分片集群中的config副本集。

所有pbm-agent都會監(jiān)視PBM Control集合的更新,當(dāng)PBM CLI對PBM Control集合產(chǎn)生更新時,將會在每個副本集上選擇一個secondary上的pbm-agent執(zhí)行操作,如果沒有響應(yīng)則會選擇Primary上的pbm-agent執(zhí)行操作。

被選中的pbm-agent將會加鎖,避免同時觸發(fā)備份和恢復(fù)等互斥操作。操作完成后將會釋放鎖,并更新PBM Control集合

PBM CLI

PBM CLI是一個操作PBM的命令行工具,它使用PBM Control集合與pbm-agent進(jìn)程通信。通過更新和讀取操作、日志等相應(yīng)的PBM Control集合來啟動和監(jiān)視備份和恢復(fù)操作。同時,它也將PBM配置信息保存在PBM Control集合中。

PBM Control collections

PBM Control collections是存儲配置數(shù)據(jù)和備份狀態(tài)的特殊集合,分片環(huán)境存放在config副本集的admin數(shù)據(jù)庫中,副本集則保存在自身的admin數(shù)據(jù)庫中。

主要包含以下集合:

  • admin.pbmBackups:備份的日志和狀態(tài)
  • admin.pbmAgents:pbm-agent的運行狀態(tài)
  • admin.pbmConfig:PBM的配置信息
  • admin.pbmCmd:用于定義和觸發(fā)操作
  • admin.pbmLock:pbm-agent同步鎖
  • admin.pbmLockOp:用于協(xié)調(diào)不互斥的操作,如執(zhí)行備份、刪除備份等
  • admin.pbmLog:存儲pbm-agent的日志信息
  • admin.pbmOpLog:存儲操作ID
  • admin.pbmPITRChunks:存儲point-in-time恢復(fù)的oplog塊
  • admin.pbmPITRState:存儲point-in-time恢復(fù)增量備份的狀態(tài)
  • admin.pbmRestores:存儲還原歷史記錄和狀態(tài)
  • admin.pbmStatus:記錄PBM備份狀態(tài)

remote backup storge 遠(yuǎn)程備份存儲是保存?zhèn)浞菸募奈恢茫梢允荢3存儲,也可以是Filesystem。通過pbm list命令可以查看備份集。備份文件名稱都是以UTC備份開始時間作為前綴,每個備份都有一個元數(shù)據(jù)文件。對于備份中的每個副本集:

  • 有一個mongodump格式的壓縮歸檔文件,它是集合的轉(zhuǎn)儲
  • 覆蓋備份時間的oplog的BSON文件轉(zhuǎn)儲

安裝配置

下載PBM

# wget https://downloads.percona.com/downloads/percona-backup-mongodb/percona-backup-mongodb-2.0.3/binary/tarball/percona-backup-mongodb-2.0.3-x86_64.tar.gz

解壓PBM

# tar -xvf percona-backup-mongodb-2.0.3-x86_64.tar.gz

配置環(huán)境變量

# echo "export PATH=$PATH:/usr/local/percona-backup-mongodb-2.0.3-x86_64" >> /etc/profile# source /etc/profile

在副本集上創(chuàng)建PBM用戶,如果是分片環(huán)境,則每個shard以及config都需要創(chuàng)建

# create pbm roleshard1:PRIMARY> db.getSiblingDB("admin").createRole({ "role": "pbmAnyAction","privileges": [ { "resource": { "anyResource": true },"actions": [ "anyAction" ] }],"roles": []});# create pbm usershard1:PRIMARY> db.getSiblingDB("admin").createUser({user: "pbmuser","pwd": "secretpwd","roles" : [{ "db" : "admin", "role" : "readWrite", "collection": "" },{ "db" : "admin", "role" : "backup" },{ "db" : "admin", "role" : "clusterMonitor" },{ "db" : "admin", "role" : "restore" },{ "db" : "admin", "role" : "pbmAnyAction" }]});

配置remote backup storge,除mongos外,每個節(jié)點都需要存在對應(yīng)的備份目錄

cat > /etc/pbm_config.yaml <

將配置寫入到數(shù)據(jù)庫中,分片集群需要填寫config的地址

pbm config --file /etc/pbm_config.yaml --mongodb-uri "mongodb://pbmuser:secretpwd@10.186.65.37:27018,10.186.65.66:27018,10.186.65.68:27018/?replicaSet=config"

啟動每個節(jié)點對應(yīng)的pbm-agent

nohup pbm-agent --mongodb-uri "mongodb://pbmuser:secretpwd@10.186.65.37:27017" > /var/log/pbm-agent-27017.log 2>&1 &

為了后續(xù)方便,不用每次輸入--mongodb-uri,可以把PBM_MONGODB_URI設(shè)置到環(huán)境變量中

# echo 'export PBM_MONGODB_URI="mongodb://pbmuser:secretpwd@10.186.65.37:27018,10.186.65.66:27018,10.186.65.68:27018/?replicaSet=config"' >> /etc/profile# source /etc/profile

全量備份

全備支持物理備份和邏輯備份,通過--type指定,可選項有physical和logical兩種。因MongoDB社區(qū)版不支持物理備份,就只圍繞邏輯備份來展開。

全量備份即對整個集群除mongos以外進(jìn)行完整的備份,只需要執(zhí)行一次,就能完成整個集群的備份。備份命令如下:

pbm backup --type=logical --mongodb-uri "mongodb://pbmuser:secretpwd@10.186.65.37:27018,10.186.65.66:27018,10.186.65.68:27018/?replicaSet=config"

備份壓縮

pbm支持備份壓縮,目前的算法有g(shù)zip、zstd、snappy、lz4,通過--compression選項指定。同時能指定對應(yīng)的壓縮級別,通過--compression-level選項指定。不同算法的壓縮級別如下所示:

壓縮算法 壓縮級別 默認(rèn) ztsd 1-4 2 snappy NULL NULL lz4 1-16 1 gzip or pgzip -1,0,1,9 -1

優(yōu)先級

負(fù)責(zé)備份的pbm-agent默認(rèn)會在從節(jié)點中隨機(jī)選出,規(guī)定時間內(nèi)從節(jié)點沒有響應(yīng),則在主節(jié)點進(jìn)行備份。現(xiàn)在可以通過指定每個節(jié)點的備份優(yōu)先級來控制備份節(jié)點選擇,避免在一個機(jī)器承載多個實例的情況下備份集中在同一臺服務(wù)器導(dǎo)致IO性能不足。在配置文件中加入下列配置

backup:priority:"10.186.65.37:27017": 2"10.186.65.37:27018": 1"10.186.65.68:27017": 2

不在配置文件中的節(jié)點優(yōu)先級默認(rèn)為1,如果沒有設(shè)置任何優(yōu)先級,下列類型的節(jié)點則優(yōu)先被選中

  • 隱藏節(jié)點:優(yōu)先級為2
  • secondary節(jié)點:優(yōu)先級為1
  • Primary節(jié)點:優(yōu)先級為0.5

備份管理

查看pbm狀態(tài)

pbm status --mongodb-uriCluster:========shard3:- shard3/10.186.65.68:27017 [P]: pbm-agent v2.0.3 OKshard1:- shard1/10.186.65.37:27017 [P]: pbm-agent v2.0.3 OKshard2:- shard2/10.186.65.66:27017 [P]: pbm-agent v2.0.3 OKconfig:- config/10.186.65.37:27018 [P]: pbm-agent v2.0.3 OK- config/10.186.65.66:27018 [S]: pbm-agent v2.0.3 OK- config/10.186.65.68:27018 [S]: pbm-agent v2.0.3 OKPITR incremental backup:========================Status [OFF]Currently running:==================(none)Backups:========FS/data/backupSnapshots:2023-02-22T07:18:40Z 4.66MB  [restore_to_time: 2023-02-22T07:18:45Z]

備份完成后,可以通過pbm list查看所有備份集,也可以通過pbm describe-backup查看備份的具體信息

# pbm listBackup snapshots:2023-02-22T07:18:40Z  [restore_to_time: 2023-02-22T07:18:45Z]# pbm describe-backup 2023-02-22T07:18:40Zname: "2023-02-22T07:18:40Z"opid: 63f5c1d0a6375c868415cac4type: logicallast_write_time: "2023-02-22T07:18:45Z"last_transition_time: "2023-02-22T07:18:59Z"mongodb_version: 4.0.28pbm_version: 2.0.3status: donesize_h: 4.7 MiBreplsets:- name: shard2status: donelast_write_time: "2023-02-22T07:18:44Z"last_transition_time: "2023-02-22T07:18:55Z"- name: shard3status: donelast_write_time: "2023-02-22T07:18:44Z"last_transition_time: "2023-02-22T07:18:59Z"- name: shard1status: donelast_write_time: "2023-02-22T07:18:44Z"last_transition_time: "2023-02-22T07:18:57Z"- name: configstatus: donelast_write_time: "2023-02-22T07:18:45Z"last_transition_time: "2023-02-22T07:18:48Z"configsvr: true

查看備份日志可以使用pbm logs進(jìn)行查看,有下列選項可選:

  • -t:查看最后N行記錄
  • -e:查看所有備份或指定備份
  • -n:指定節(jié)點或副本集
  • -s:按日志級別進(jìn)行過濾,從低到高依次是D(debug)、I(Info)、W(Warning)、E(Error)、F(Fatal)
  • -o:以文本或JSON格式顯示日志信息
  • -i:指定操作ID
# 查看特定備份的日志pbm logs --tail=200 --event=backup/2023-02-22T07:18:40Z# 查看副本集shard1的日志pbm logs -n shard1 -s E

如果正在運行任務(wù)想要終止,可以使用pbm canal-backup取消

pbm cancel-backup

刪除快照備份可以使用pbm delete-backup,默認(rèn)刪除前會進(jìn)行二次確認(rèn),指定--force選項可以直接刪除。刪除oplog chunk可以執(zhí)行pbm delete-pitr

pbm delete-backup --force 2023-02-22T07:18:40Z 

如果想要刪除指定時間之前的備份,可以設(shè)置--older-than參數(shù),傳遞下列格式的時間戳

  • %Y-%M-%DT%H:%M:%S (e.g. 2020-04-20T13:13:20)
  • %Y-%M-%D (e.g. 2020-04-20)

增量備份

Point-in-Time Recovery可以將數(shù)據(jù)還原到指定時間點,期間會從備份快照中恢復(fù)數(shù)據(jù)庫,并重放oplog到指定時間點。Point-in-Time Recovery是v1.3.0加入的,需要手動啟用pitr.enabled參數(shù)

pbm config --set pitr.enabled=true 

在啟用Point-in-Time Recovery之后,pbm-agent會定期保存oplog chunk,一個chunk包含10分鐘跨度的oplog事件,如果禁用時間點恢復(fù)或因備份快照操作的開始而中斷,則時間可能會更短。oplog保存在遠(yuǎn)程存儲的pbmPitr子目錄中,chunk的名稱反映了開始時間和結(jié)束時間

如果想要調(diào)整時間跨度,可以配置pitr.oplogSpanMin

pbm config --set pitr.oplogSpanMin=5

oplog備份也支持壓縮,可以配置pitr.compression

pbm config --set pitr.compression=gzip

數(shù)據(jù)恢復(fù)

恢復(fù)注意事項 通過pbm store命令并指定還原時間戳,在還原之前還需要注意以下幾點:

  • 從1.x版本開始,Percona Backup For MongoDB復(fù)制了Mongodump的行為,還原時只清理備份中包含的集合,對于備份之后,還原之前創(chuàng)建的集合不進(jìn)行清理,需要在還原前手動執(zhí)行db.dropDatabase()清理
  • 在恢復(fù)運行過程中,阻止客戶端訪問數(shù)據(jù)庫
  • 分片備份只能還原到分片集群中,還原期間將寫入分片primary節(jié)點
  • 為避免恢復(fù)期間pbm-agent內(nèi)存消耗,V1.3.2可以針對恢復(fù)在配置文件設(shè)置下列參數(shù)
restore:batchSize: 500numInsertionWorkers: 10

分片集群恢復(fù)

分片集群在做恢復(fù)前,需要先完成以下步驟

  1. 停止balancer
mongos> sh.stopBalancer()
  1. 關(guān)閉所有mongos,阻止客戶端訪問
  2. 如果啟用了PITR,則禁用該功能
pbm config --set pitr.enabled=false

查看備份快照和PITR有效時間點

pbm listBackup snapshots:2023-02-22T07:18:40Z  [restore_to_time: 2023-02-22T07:18:45Z]PITR :2023-02-22T07:18:46Z - 2023-02-22T08:36:45Z

執(zhí)行PITR恢復(fù)

pbm restore --time="2023-02-22T08:30:00"

恢復(fù)完成后重新啟用PITR和balance進(jìn)程,并開啟mongos對外提供服務(wù)

mongos> sh.startBalancer()pbm config --set pitr.enabled=true

異機(jī)恢復(fù)

從v1.8版本開始,可以將邏輯備份恢復(fù)到具有相同或更多shard的新環(huán)境中,并且這些shard的副本集名稱可以與原環(huán)境不同。但我們需要配置以下映射關(guān)系

pbm restore --time="2023-02-22T08:30:00" --replset-remapping="shard1=shard4,shard2=shard5"

性能

pbm提供了性能測試工具pbm-speed-test,默認(rèn)采用半隨機(jī)數(shù)據(jù)進(jìn)行測試,如果要基于現(xiàn)有集合進(jìn)行測試,請設(shè)置--sample-collection選項

pbm-speed-test storage --compression=gzip --size-gb 100Test started100.00GB sent in 37m17s.Avg upload rate = 45.78MB/s

pbm整體的性能相對于mongodump并沒有較大的提升,主要還是體現(xiàn)在下列幾個特點:

  • 在分片集群中進(jìn)行一致性備份和恢復(fù)
  • 支持完全備份/恢復(fù)、選擇性備份恢復(fù)等多種粒度
  • 支持基于時間點的恢復(fù)

選擇性備份和恢復(fù)

選擇性備份和恢復(fù)功能可以針對指定的數(shù)據(jù)庫或集合,但目前還只是一個實驗性功能,謹(jǐn)慎使用。它具有以下場景選項:

  • 備份單個數(shù)據(jù)庫或特定集合,并從中恢復(fù)所有數(shù)據(jù)
  • 從單個數(shù)據(jù)庫備份恢復(fù)特定的集合
  • 從全備中恢復(fù)某些數(shù)據(jù)庫或集合
  • 從全備中Point-in-recovery某些數(shù)據(jù)庫或集合

備份指定集合時,需要指定--ns選項,格式為。分片環(huán)境的URI需要填寫config的地址

pbm backup --ns=test.col1

如果要備份整個test數(shù)據(jù)庫,可以改為下列格式

pbm backup --ns=test.*

恢復(fù)指定數(shù)據(jù)庫或集合,恢復(fù)過程中不會影響現(xiàn)有集群的可用性

pbm restore 2023-02-22T07:18:40Z --ns test.col1

基于時間點恢復(fù)數(shù)據(jù)庫或集合

pbm restore --base-snapshot 2023-02-22T07:18:40Z --time 2023-02-22T09:06:00 --ns test.col1

已知限制

  1. 只支持邏輯備份恢復(fù)
  2. 不支持分片集合
  3. 不支持批量指定namespace
  4. 不支持Multi-collection事務(wù)
  5. 不能備份恢復(fù)本地數(shù)據(jù)庫中的系統(tǒng)集合
  6. 時間點恢復(fù)需要通過完全備份來作為基礎(chǔ)

參考鏈接:https://docs.percona.com/percona-backup-mongodb/intro.html

???展開全文
相關(guān)文章
主站蜘蛛池模板: 精品一区二区三区成人精品 | 日本www视频 | 亚洲视频在线一区二区 | 围产精品久久久久久久 | 国产综合久久 | 男女做网站 | 青青草在线播放 | 韩国日本美国免费毛片 | 激情的网站| 一区二区在线 | 特级毛片在线观看 | 国产精品亚洲视频 | 国产二区三区 | 精品成人在线视频 | 91精品国产99久久久久久 | 亚洲精品高清在线 | 色婷综合 | 国产黄色在线看 | 中国国产一级毛片 | 国产精品久久久久久久久久小说 | 婷婷在线综合 | 欧美亚洲在线 | 99亚洲视频| 日韩在线播放视频 | 日韩 国产 在线 | 91黄色在线观看 | 亚洲精品一区在线 | 精品国产91久久久久久 | 国产女主播在线视频 | 久久久性| 国产一区二区成人在线 | 欧美日韩三区 | 久久久久久99 | 国产精品178页 | 男女毛片| 99精品国产视频 | 中文在线视频观看 | 精精国产xxxx视频在线野外 | 久久成人免费 | 嫩草影院免费观看 | 久久成人av|