mongodb的副本集|備份|恢復備份


復制(副本集)

什么是復制

  • 復制提供了數據的冗余備份,並在多個服務器上存儲數據副本,提高了數據的可用性,並可以保證數據的安全性
  • 復制還允許從硬件故障和服務中斷中恢復數據

為什么要復制

  • 數據備份
  • 數據災難恢復
  • 讀寫分離
  • 高(24* 7)數據可用性
  • 無宕機維護
  • 副本集對應用程序是透明

復制的工作原理

  • 復制至少需要兩個節點A、B...
  • A是主節點,負責處理客戶端請求
  • 其余的都是從節點,負責復制主節點上的數據
  • 節點常見的搭配方式為:一主一從、一主多從
  • 主節點記錄在其上的所有操作,從節點定期輪詢主節點獲取這些操作,然后對自己的數據副本執行這些操作,從而保證從節點的數據與主節點一致
  • 主節點與從節點進行數據交互保障數據的一致性

復制的特點

  • N 個節點的集群
  • 任何節點可作為主節點
  • 所有寫入操作都在主節點上
  • 自動故障轉移
  • 自動恢復

設置復制節點

  • 接下來的操作需要打開多個終端窗口,而且可能會連接多台ubuntu主機,會顯得有些亂,建議在xshell中實現
  • step1:創建數據庫目錄t1、t2
  • 在Desktop目錄下演示,其它目錄也可以,注意權限即可
mkdir t1
mkdir t2
  • step2:使用如下格式啟動mongod,注意replSet的名稱是一致的
mongod --bind_ip 192.168.196.128 --port 27017 --dbpath ~/Desktop/t1 --replSet rs0
mongod --bind_ip 192.168.196.128 --port 27018 --dbpath ~/Desktop/t2 --replSet rs0
  • step3:連接主服務器,此處設置192.168.196.128:27017為主服務器
mongo --host 192.168.196.128 --port 27017
  • step4:初始化
rs.initiate()
  • 初始化完成后,提示符如下圖:

  • step5:查看當前狀態
rs.status()
  • 當前狀態如下圖:

  • step6:添加復本集
rs.add('192.168.196.128:27018')
  • step7:復本集添加成功后,當前狀態如下圖:

  • step8:連接第二個mongo服務
mongo --host 192.168.196.128 --port 27018

 

  • step9:向主服務器中插入數據
use test1
for(i=0;i<10;i++){db.t1.insert({_id:i})} db.t1.find()
  • step10:在從服務器中插查詢
  • 說明:如果在從服務器上進行讀操作,需要設置rs.slaveOk()
rs.slaveOk()
db.t1.find()

其它說明

  • 刪除從節點
rs.remove('192.168.196.128:27018')
  • 關閉主服務器后,再重新啟動,會發現原來的從服務器變為了從服務器,新啟動的服務器(原來的從服務器)變為了從服務器

備份

  • 語法
mongodump -h dbhost -d dbname -o dbdirectory
  • -h:服務器地址,也可以指定端口號
  • -d:需要備份的數據庫名稱
  • -o:備份的數據存放位置,此目錄中存放着備份出來的數據
  • 例1
sudo mkdir test1bak
sudo mongodump -h 192.168.196.128:27017 -d test1 -o ~/Desktop/test1bak

恢復

  • 語法
mongorestore -h dbhost -d dbname --dir dbdirectory
  • -h:服務器地址
  • -d:需要恢復的數據庫實例
  • --dir:備份數據所在位置
  • 例2
mongorestore -h 192.168.196.128:27017 -d test2 --dir ~/Desktop/test1bak/test1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM