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

電腦顯示 系統正在恢復備份恢復

發布時間: 2023-04-17 04:16 閱讀: 文章來源:轉載

作者:張洪

愛可生南區 DBA 團隊成員,主要負責mysql故障處理及相關技術支持。愛好旅游,攝影。

本文來源:原創投稿

* 愛可生開源社區出品,原創內容未經授權不得隨意使用,轉載請聯系小編并注明來源。


概述

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

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

架構

pbm-agent

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

所有pbm-agent都會監視PBM Control集合的更新,當PBM CLI對PBM Control集合產生更新時,將會在每個副本集上選擇一個secondary上的pbm-agent執行操作,如果沒有響應則會選擇Primary上的pbm-agent執行操作。

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

PBM CLI

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

PBM Control collections

PBM Control collections是存儲配置數據和備份狀態的特殊集合,分片環境存放在config副本集的admin數據庫中,副本集則保存在自身的admin數據庫中。

主要包含以下集合:

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

remote backup storge 遠程備份存儲是保存備份文件的位置,可以是S3存儲,也可以是Filesystem。通過pbm list命令可以查看備份集。備份文件名稱都是以UTC備份開始時間作為前綴,每個備份都有一個元數據文件。對于備份中的每個副本集:

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

安裝配置

下載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

配置環境變量

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

在副本集上創建PBM用戶,如果是分片環境,則每個shard以及config都需要創建

# 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外,每個節點都需要存在對應的備份目錄

cat > /etc/pbm_config.yaml <

將配置寫入到數據庫中,分片集群需要填寫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"

啟動每個節點對應的pbm-agent

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

為了后續方便,不用每次輸入--mongodb-uri,可以把PBM_MONGODB_URI設置到環境變量中

# 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社區版不支持物理備份,就只圍繞邏輯備份來展開。

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

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支持備份壓縮,目前的算法有gzip、zstd、snappy、lz4,通過--compression選項指定。同時能指定對應的壓縮級別,通過--compression-level選項指定。不同算法的壓縮級別如下所示:

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

優先級

負責備份的pbm-agent默認會在從節點中隨機選出,規定時間內從節點沒有響應,則在主節點進行備份。現在可以通過指定每個節點的備份優先級來控制備份節點選擇,避免在一個機器承載多個實例的情況下備份集中在同一臺服務器導致IO性能不足。在配置文件中加入下列配置

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

不在配置文件中的節點優先級默認為1,如果沒有設置任何優先級,下列類型的節點則優先被選中

  • 隱藏節點:優先級為2
  • secondary節點:優先級為1
  • Primary節點:優先級為0.5

備份管理

查看pbm狀態

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進行查看,有下列選項可選:

  • -t:查看最后N行記錄
  • -e:查看所有備份或指定備份
  • -n:指定節點或副本集
  • -s:按日志級別進行過濾,從低到高依次是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

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

pbm cancel-backup

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

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

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

  • %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可以將數據還原到指定時間點,期間會從備份快照中恢復數據庫,并重放oplog到指定時間點。Point-in-Time Recovery是v1.3.0加入的,需要手動啟用pitr.enabled參數

pbm config --set pitr.enabled=true 

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

如果想要調整時間跨度,可以配置pitr.oplogSpanMin

pbm config --set pitr.oplogSpanMin=5

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

pbm config --set pitr.compression=gzip

數據恢復

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

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

分片集群恢復

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

  1. 停止balancer
mongos> sh.stopBalancer()
  1. 關閉所有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

執行PITR恢復

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

恢復完成后重新啟用PITR和balance進程,并開啟mongos對外提供服務

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

異機恢復

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

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

性能

pbm提供了性能測試工具pbm-speed-test,默認采用半隨機數據進行測試,如果要基于現有集合進行測試,請設置--sample-collection選項

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

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

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

選擇性備份和恢復

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

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

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

pbm backup --ns=test.col1

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

pbm backup --ns=test.*

恢復指定數據庫或集合,恢復過程中不會影響現有集群的可用性

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

基于時間點恢復數據庫或集合

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

已知限制

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

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

???展開全文
相關文章
主站蜘蛛池模板: 网色 | 免费a在线观看 | 欧美黄色免费网站 | 国产一区二区三区不卡在线观看 | 在线免费看黄网站 | 久久久久久久久久国产精品 | 久久久久久久久久国产精品 | 精精国产xxxx视频在线播放 | 黄网站在线免费 | 国产毛片视频 | 亚洲淫视频 | 色女孩综合 | 国产成人在线视频网站 | 91精品国产亚洲 | 蜜桃精品久久久久久久免费影院 | 成人片免费看 | 日韩高清不卡 | 国产精品高清一区二区三区 | 久久99精品久久 | 久久成人免费视频 | 99福利在线 | 久久久久久久久久国产 | 日韩视频在线一区二区 | 国产高清一区二区三区 | 日本免费一区二区三区四区 | 美女又黄又免费的视频 | 亚洲精品日韩av | 亚洲性激情 | 九九爱爱视频 | 毛片av在线| 国产精品一区电影 | 国产一级黄色影片 | 久久女| 久久久人成影片一区二区三区 | 精品无码久久久久久久动漫 | 99视频在线播放 | 国产视频一区在线播放 | 黄网在线看 | 黄色在线观看 | 日韩资源在线 | 久久久久久久网 |