自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MongoDB副本集的架構(gòu)搭建

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù) MongoDB
高可用性通常描述一個(gè)系統(tǒng)經(jīng)過專門的設(shè)計(jì),從而減少停工時(shí)間.保存其服務(wù)的高度連續(xù)可用性,MongoDB提供的主從復(fù)制機(jī)制保證了多個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步,這對(duì)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的容災(zāi)、備份、恢復(fù)、負(fù)載均衡都是有極大的幫助。

主從集群

主從復(fù)制的優(yōu)點(diǎn):

從服務(wù)器可以執(zhí)行查詢工作,降低主服務(wù)器訪問壓力

在從服務(wù)器執(zhí)行備份,避免備份期間鎖定主服務(wù)器的數(shù)據(jù)

當(dāng)主服務(wù)器出現(xiàn)故障時(shí),可以快速切換到從服務(wù)器,減少當(dāng)機(jī)時(shí)間.

MongoDB支持在多個(gè)機(jī)器中通過異步復(fù)制到底故障轉(zhuǎn)移和實(shí)現(xiàn)冗余,多臺(tái)機(jī)器中同一時(shí)刻只有一臺(tái)是用于寫操作,這為mongoDB提供了數(shù)據(jù)一致性的保障.擔(dān)當(dāng)Primary角色的機(jī)器能把讀操作分發(fā)給slave機(jī)器.

MongoDB的主從集群分為兩種

Master-Slave 復(fù)制(主從復(fù)制)  

Replica Sets 復(fù)制(副本集)

主服務(wù)器支持增刪該,從服務(wù)器主要支持讀.

Master-Slave(主從復(fù)制)

只需要在某一個(gè)服務(wù)啟動(dòng)時(shí)加上-master參數(shù),以指明此服務(wù)器的角色是primary,而另一個(gè)服務(wù)加上-slave與-source參數(shù),以指明此服務(wù)器的角色是slave. 即可實(shí)現(xiàn)同步,

MongoDB的最新版本已經(jīng)不推薦使用這種方法了.

Replica Sets 復(fù)制(副本集)

MongoDB在1.6版本開發(fā)了replica set,主要增加了故障自動(dòng)切換和自動(dòng)修復(fù)成員節(jié)點(diǎn).各個(gè)DB之間數(shù)據(jù)完全一致,最為顯著的區(qū)別在于,副本集沒有固定的主節(jié)點(diǎn),它是整個(gè)集群選舉得出的一個(gè)主節(jié)點(diǎn).當(dāng)其不工作時(shí)變更其它節(jié)點(diǎn).

部署Replica Sets【windows環(huán)境模擬】

  1. 創(chuàng)建數(shù)據(jù)文件存儲(chǔ)路徑 D:\program files\mongo\data\data1\ D:\program files\mongo\data\data2\   
  2. 創(chuàng)建日志文件路徑 D:\program files\mongo\logs\dblog1.log D:\program files\mongo\logs\dblog2.log   
  3. 創(chuàng)建主從key文件用于標(biāo)識(shí)集群的私鑰的完整路徑.如果各個(gè)實(shí)例的key file內(nèi)容不一致,程序?qū)⒉荒苷S? 
  4. D:\program files\mongo\key\key1.txt D:\program files\mongo\key\key2.txt 

啟動(dòng)2個(gè)實(shí)例

  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. 參數(shù)說明 --replSet rs1副本集的名字 

如圖

另起一個(gè)窗口

注意:服務(wù)不能啟動(dòng)時(shí),可以去日志文件中查看出現(xiàn)什么錯(cuò).

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

重新啟動(dòng)一個(gè)窗口,登錄其中一臺(tái)

  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); 

查看副本集狀態(tài)

  1. rs.status(); 

可以看到當(dāng)前8888的為主服務(wù)器

另起窗口登錄從服務(wù)器

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

讀寫分離

大部分web應(yīng)用都用數(shù)據(jù)庫(kù)作為數(shù)據(jù)持久化工具,在并發(fā)訪問頻繁且負(fù)載壓力較大的情況下,也能成為系統(tǒng)性能的”瓶頸”,即使使用本地緩存等方式解決頻繁訪問數(shù)據(jù)庫(kù)的問題,但仍會(huì)有大量的并發(fā)請(qǐng)求訪問動(dòng)態(tài)數(shù)據(jù),”讀寫分離”是一種被廣泛采用的方案

“讀寫分離”,機(jī)制首先將那些使用CPU以及內(nèi)存消耗嚴(yán)重的操作分離到一臺(tái)或幾臺(tái)性能很高的機(jī)器上,而將頻繁讀取的操作放到幾臺(tái)配置較低的機(jī)器上,然后,通過數(shù)據(jù)同步機(jī)制,實(shí)現(xiàn)多個(gè)數(shù)據(jù)庫(kù)之間快速高效地同步數(shù)據(jù),從而實(shí)現(xiàn)將”讀寫請(qǐng)求”按實(shí)際負(fù)載情況進(jìn)行均衡分布.

注意:在從服務(wù)器進(jìn)行查詢操作時(shí)報(bào)錯(cuò)”not master and slaveok=”false” ”說明從庫(kù)不能執(zhí)行查詢的操作,可以讓從庫(kù)可以讀,分擔(dān)主庫(kù)的壓力命令如下:

db.getMongo().setSlaveOk();

或者使用rs.slaveOk()

主從操作日志

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

MongoDB的Replica Sets架構(gòu)是通過一個(gè)primary數(shù)據(jù)庫(kù)中的日志表來存儲(chǔ)寫操作的,這個(gè)日志表叫做oplog.rs.oplog.rs是一個(gè)固定長(zhǎng)度的capped collection,存在于local數(shù)據(jù)庫(kù)中,用于記錄Replica Sets操作日志.

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

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

主從切換

有時(shí)候由于種種原因,需要調(diào)整復(fù)制集中的主從角色.步驟如下

1.除了現(xiàn)在的主實(shí)例,和目標(biāo)實(shí)例以外,其它的實(shí)例全部設(shè)為”冰凍”狀態(tài)(freeze狀態(tài),即非主狀態(tài))

Eg.rs.freeze(30),將當(dāng)前實(shí)例”冰凍”,其中的30單位是秒,說明30秒內(nèi)這個(gè)實(shí)例不會(huì)參與primary的內(nèi)部選舉工作,

2.將當(dāng)前主庫(kù)的實(shí)例降級(jí)(stepDown)

Eg.rs.stepDown(30),將當(dāng)前主庫(kù)實(shí)例”降級(jí)”30秒.

3.上面的操作結(jié)束后,用rs.status查看復(fù)制集的狀態(tài).

過程很簡(jiǎn)單,其它的不參與選舉,自己降級(jí),目標(biāo)機(jī)肯定優(yōu)先級(jí)就提升了,成為了主庫(kù).

將上面的主從集實(shí)現(xiàn)主從切換

主從配置信息

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

為復(fù)制集中添加節(jié)點(diǎn)

MongoDB提供了2種增加節(jié)點(diǎn)的方案.

1.通過oplog增加節(jié)點(diǎn)

這種添加方式,使數(shù)據(jù)庫(kù)的同步完全依賴于oplog,即oplog中有多少操作日志,這些操作日志就完全在新添加的節(jié)點(diǎn)中執(zhí)行一遍.已完成數(shù)據(jù)同步.

對(duì)實(shí)例中的2個(gè)節(jié)點(diǎn)中添加一個(gè)節(jié)點(diǎn)

創(chuàng)建數(shù)據(jù)存放文件路徑D:\program files\mongo\data\data3

創(chuàng)建key文件輸出路徑D:\program files\mongo\key/key3.txt [注意key文件中的密鑰必須跟之前節(jié)點(diǎn)中的一致]

創(chuàng)建日志存放文件路徑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

 

然后添加此新節(jié)點(diǎn)到現(xiàn)有的replica collection中.

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

可以使用rs.status()查看復(fù)制集狀態(tài),新增的節(jié)點(diǎn)已經(jīng)添加成功

登錄新增節(jié)點(diǎn),查尋數(shù)據(jù),如下說明數(shù)據(jù)同步成功

2.通過數(shù)據(jù)庫(kù)快照和oplog增加節(jié)點(diǎn)

通過oplog直接執(zhí)行增加節(jié)點(diǎn)操作簡(jiǎn)單且無需人工干預(yù),但oplog是capped collection,采用循環(huán)的方式執(zhí)行日志處理,所以采用oplog的方式執(zhí)行增加節(jié)點(diǎn),有可能導(dǎo)致數(shù)據(jù)的不一致,因?yàn)槿罩局写鎯?chǔ)的信息可能已經(jīng)被刷新過,為了解決這個(gè)問題,可以通過數(shù)據(jù)庫(kù)快照和oplog結(jié)合的方式來增加節(jié)點(diǎn).

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

減少節(jié)點(diǎn)

減少節(jié)點(diǎn)很簡(jiǎn)單,只需要執(zhí)行”rs.remove(“ip:port”)”即可.

例如,將實(shí)例中的9999節(jié)點(diǎn)移除.

可以通過rs.status()查看移除后的狀態(tài)members成員中已經(jīng)沒有9999節(jié)點(diǎn)了.

故障轉(zhuǎn)移

副本集比傳統(tǒng)的Master-Slave有改進(jìn)的地方就是它可以進(jìn)行故障的自動(dòng)轉(zhuǎn)移,如果我們停掉復(fù)制集中的一個(gè)成員,那么剩余成員會(huì)再自動(dòng)選舉一個(gè)成員,作為主庫(kù).

這種故障處理機(jī)制,能極大的提供系統(tǒng)的穩(wěn)定性和擴(kuò)展性.

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

【編輯推薦】

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

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

2023-10-23 19:35:33

數(shù)據(jù)節(jié)點(diǎn)MongoDB

2018-12-13 09:09:49

MongoDB運(yùn)維部署

2023-03-14 23:24:27

Mongodb副本集架構(gòu)

2023-11-28 16:35:40

MongoDB遷移Oplog

2019-10-11 10:52:42

Web架構(gòu)MongoDB

2024-05-20 09:51:53

MongoDB數(shù)據(jù)庫(kù)管理數(shù)據(jù)庫(kù)服務(wù)器

2020-06-01 16:05:17

MongoDB復(fù)制集數(shù)據(jù)庫(kù)

2012-07-27 10:39:16

MongoDB

2022-09-15 08:31:11

主從復(fù)制模式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數(shù)據(jù)庫(kù)存儲(chǔ)

2015-12-21 16:59:16

2020-07-09 08:26:42

Kubernetes容器開發(fā)

2010-06-03 16:02:03

LTE

2019-04-23 10:25:48

云架構(gòu)云計(jì)算

2013-05-27 09:16:26

桌面虛擬化IT基礎(chǔ)架構(gòu)

2020-05-19 11:46:50

MongoDB圖形開源

2011-04-29 13:40:37

MongoDBCommand
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)