成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MongoDB副本集的架構搭建

數據庫 其他數據庫 MongoDB
高可用性通常描述一個系統經過專門的設計,從而減少停工時間.保存其服務的高度連續可用性,MongoDB提供的主從復制機制保證了多個數據庫的數據同步,這對實現數據庫的容災、備份、恢復、負載均衡都是有極大的幫助。

主從集群

主從復制的優點:

從服務器可以執行查詢工作,降低主服務器訪問壓力

在從服務器執行備份,避免備份期間鎖定主服務器的數據

當主服務器出現故障時,可以快速切換到從服務器,減少當機時間.

MongoDB支持在多個機器中通過異步復制到底故障轉移和實現冗余,多臺機器中同一時刻只有一臺是用于寫操作,這為mongoDB提供了數據一致性的保障.擔當Primary角色的機器能把讀操作分發給slave機器.

MongoDB的主從集群分為兩種

Master-Slave 復制(主從復制)  

Replica Sets 復制(副本集)

主服務器支持增刪該,從服務器主要支持讀.

Master-Slave(主從復制)

只需要在某一個服務啟動時加上-master參數,以指明此服務器的角色是primary,而另一個服務加上-slave與-source參數,以指明此服務器的角色是slave. 即可實現同步,

MongoDB的最新版本已經不推薦使用這種方法了.

Replica Sets 復制(副本集)

MongoDB在1.6版本開發了replica set,主要增加了故障自動切換和自動修復成員節點.各個DB之間數據完全一致,最為顯著的區別在于,副本集沒有固定的主節點,它是整個集群選舉得出的一個主節點.當其不工作時變更其它節點.

部署Replica Sets【windows環境模擬】

  1. 創建數據文件存儲路徑 D:\program files\mongo\data\data1\ D:\program files\mongo\data\data2\   
  2. 創建日志文件路徑 D:\program files\mongo\logs\dblog1.log D:\program files\mongo\logs\dblog2.log   
  3. 創建主從key文件用于標識集群的私鑰的完整路徑.如果各個實例的key file內容不一致,程序將不能正常用. 
  4. D:\program files\mongo\key\key1.txt D:\program files\mongo\key\key2.txt 

啟動2個實例

  1. mongod --replSet rs1 \--keyFile=../key/key1.txt --port 8888 --dbpath=../data/data1/ --logpath=../logs/dblog1.log 
  2. mongod --replSet rs1 --keyFile=../key/key2.txt --port 8889 --dbpath=../data/data2/ --logpath=../logs/dblog2.log 
  3. 參數說明 --replSet rs1副本集的名字 

如圖

另起一個窗口

注意:服務不能啟動時,可以去日志文件中查看出現什么錯.

比如:Sat Jan 19 11:08:50  key file ../key/key1.txt has length 3, must be between 6 and 1024 chars

重新啟動一個窗口,登錄其中一臺

  1. mongo --port 8888 config_rs1 = {     _id : "rs1",     
  2. members : [ { _id:0, host:"localhost:8888", priority:1 }, { _id:1, host:"localhost:8889" } ] }  
  3. 初始化配置 rs.initiate(config_rs1); 

查看副本集狀態

  1. rs.status(); 

可以看到當前8888的為主服務器

另起窗口登錄從服務器

使用rs.isMaster()查看Replica Sets狀態.

讀寫分離

大部分web應用都用數據庫作為數據持久化工具,在并發訪問頻繁且負載壓力較大的情況下,也能成為系統性能的”瓶頸”,即使使用本地緩存等方式解決頻繁訪問數據庫的問題,但仍會有大量的并發請求訪問動態數據,”讀寫分離”是一種被廣泛采用的方案

“讀寫分離”,機制首先將那些使用CPU以及內存消耗嚴重的操作分離到一臺或幾臺性能很高的機器上,而將頻繁讀取的操作放到幾臺配置較低的機器上,然后,通過數據同步機制,實現多個數據庫之間快速高效地同步數據,從而實現將”讀寫請求”按實際負載情況進行均衡分布.

注意:在從服務器進行查詢操作時報錯”not master and slaveok=”false” ”說明從庫不能執行查詢的操作,可以讓從庫可以讀,分擔主庫的壓力命令如下:

db.getMongo().setSlaveOk();

或者使用rs.slaveOk()

主從操作日志

數據復制的目的是使數據得到最大的可用性,避免單點故障的發生,MongoDB支持在服務器之間進行數據的異步復制,以滿足數據的最終一致性,但是同一時刻只有一臺服務器是可以寫的,MongoDB的主從復制是一個異步的復制過程,數據從一個primary實例復制到另一個slave,整個復制過程實際上是slave端從primary端獲取日志,然后在自己身上完全順序執行日志中所有記錄的各種操作.

MongoDB的Replica Sets架構是通過一個primary數據庫中的日志表來存儲寫操作的,這個日志表叫做oplog.rs.oplog.rs是一個固定長度的capped collection,存在于local數據庫中,用于記錄Replica Sets操作日志.

通過 db.oplog.rs.find();命令查看復制集產生的日志信息.

rs1:PRIMARY> db.oplog.rs.find();

主從切換

有時候由于種種原因,需要調整復制集中的主從角色.步驟如下

1.除了現在的主實例,和目標實例以外,其它的實例全部設為”冰凍”狀態(freeze狀態,即非主狀態)

Eg.rs.freeze(30),將當前實例”冰凍”,其中的30單位是秒,說明30秒內這個實例不會參與primary的內部選舉工作,

2.將當前主庫的實例降級(stepDown)

Eg.rs.stepDown(30),將當前主庫實例”降級”30秒.

3.上面的操作結束后,用rs.status查看復制集的狀態.

過程很簡單,其它的不參與選舉,自己降級,目標機肯定優先級就提升了,成為了主庫.

將上面的主從集實現主從切換

主從配置信息

在local庫中不僅有主從日志oplog.rs,還有一個集合用于記錄主從配置信息system.replset,通過執行”db.system.replset.find()”命令查看復制集的配置信息

為復制集中添加節點

MongoDB提供了2種增加節點的方案.

1.通過oplog增加節點

這種添加方式,使數據庫的同步完全依賴于oplog,即oplog中有多少操作日志,這些操作日志就完全在新添加的節點中執行一遍.已完成數據同步.

對實例中的2個節點中添加一個節點

創建數據存放文件路徑D:\program files\mongo\data\data3

創建key文件輸出路徑D:\program files\mongo\key/key3.txt [注意key文件中的密鑰必須跟之前節點中的一致]

創建日志存放文件路徑D:\program files\mongo\logs\dblog3.log

D:\program files\mongo\bin>mongod --replSet rs1 --keyFile=../key/key3.txt --port 9999 --dbpath=../data/data3/ --logpath=../logs/dblog3.log

 

然后添加此新節點到現有的replica collection中.

rs1:PRIMARY> rs.add("localhost:9999");

可以使用rs.status()查看復制集狀態,新增的節點已經添加成功

登錄新增節點,查尋數據,如下說明數據同步成功

2.通過數據庫快照和oplog增加節點

通過oplog直接執行增加節點操作簡單且無需人工干預,但oplog是capped collection,采用循環的方式執行日志處理,所以采用oplog的方式執行增加節點,有可能導致數據的不一致,因為日志中存儲的信息可能已經被刷新過,為了解決這個問題,可以通過數據庫快照和oplog結合的方式來增加節點.

這種方式的操作流程是,先取某一個復制集成員的物理文件作為初始化數據,剩余的部分用oplog日志來補充,最終達到數據一致性.

減少節點

減少節點很簡單,只需要執行”rs.remove(“ip:port”)”即可.

例如,將實例中的9999節點移除.

可以通過rs.status()查看移除后的狀態members成員中已經沒有9999節點了.

故障轉移

副本集比傳統的Master-Slave有改進的地方就是它可以進行故障的自動轉移,如果我們停掉復制集中的一個成員,那么剩余成員會再自動選舉一個成員,作為主庫.

這種故障處理機制,能極大的提供系統的穩定性和擴展性.

原文鏈接:http://www.cnblogs.com/dennisit/archive/2013/01/28/2880166.html

【編輯推薦】

  1. Craigslist采用MongoDB替代MySQL
  2. MongoDB源碼分析--Command體系架構
  3. Mongodb源碼分析--內存文件映射(MMAP)
  4. 淺析Mongodb源碼之游標Cursor
  5. 如何解決PHP+MySQL出現亂碼的現象

【責任編輯:彭凡 TEL:(010)68476606】
責任編輯:彭凡 來源: 博客園
相關推薦

2023-10-23 19:35:33

數據節點MongoDB

2018-12-13 09:09:49

MongoDB運維部署

2023-03-14 23:24:27

Mongodb副本集架構

2023-11-28 16:35:40

MongoDB遷移Oplog

2019-10-11 10:52:42

Web架構MongoDB

2024-05-20 09:51:53

MongoDB數據庫管理數據庫服務器

2020-06-01 16:05:17

MongoDB復制集數據庫

2012-07-27 10:39:16

MongoDB

2022-09-15 08:31:11

主從復制模式Docker

2014-03-28 09:35:11

MongoDBSharding

2024-08-29 08:00:00

2023-04-18 08:45:28

MongoDB部署模式

2022-06-21 14:02:29

MongoDB數據庫存儲

2015-12-21 16:59:16

2020-07-09 08:26:42

Kubernetes容器開發

2020-05-19 11:46:50

MongoDB圖形開源

2013-05-27 09:16:26

桌面虛擬化IT基礎架構

2019-04-23 10:25:48

云架構云計算

2010-06-03 16:02:03

LTE

2011-04-29 13:40:37

MongoDBCommand
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕a√| 不卡一二区 | 中文字幕国产 | 大吊一区二区 | 欧美自拍另类 | 男女羞羞视频免费看 | 黄色大片视频 | 91在线资源 | 日韩高清一区 | 夜夜久久| 国产中文视频 | 91麻豆精品国产91久久久久久久久 | 黄色精品| 综合久久av | 日韩在线小视频 | 欧美在线天堂 | 欧美中文字幕一区二区三区 | 超碰成人免费观看 | 久久精品国产99国产精品 | 毛片免费看的 | 天天草天天 | 欧美视频1 | 国产精品不卡 | 日日日视频 | 999热精品视频 | 黄色片免费看视频 | www日本在线| 久久久久久久久91 | 久久综合99| 色综合天天天天做夜夜夜夜做 | 男女啪啪高潮无遮挡免费动态 | 日本 欧美 三级 高清 视频 | 日韩欧美中文在线 | 午夜天堂精品久久久久 | 亚洲综合视频 | 日韩电影一区二区三区 | 日韩视频精品 | 一区二区三区播放 | 亚洲码欧美码一区二区三区 | 美女日批免费视频 | 国产精品一区一区 |