日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

复制集配置文件linux,mongodb的复制集实现

發(fā)布時間:2024/9/15 linux 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 复制集配置文件linux,mongodb的复制集实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡介:

mongodb有兩種類型的復(fù)制,第一種是同于MySQL的主從復(fù)制模式,第二種是復(fù)制集,提供了自動故障轉(zhuǎn)移的主從復(fù)制集群。其中復(fù)制集沒有固定的主節(jié)點,當(dāng)一個主機的故障后從節(jié)點會重新“選舉”出一個新的主節(jié)點,從而提高的系統(tǒng)的可用性

一、實驗環(huán)境:

(1)各節(jié)點信息:

node1: 172.16.2.12

node2: 172.16.2.13

node3: 172.16.2.14

(2)各個節(jié)點之間確保時間同步

(3)各個節(jié)點確保iptables和selinux以關(guān)閉

二、在配置復(fù)制集時我們需要了解復(fù)制集的影響因素

(1)復(fù)制集(副本集)重新選舉的影響條件

心跳信息(heartbeat)、優(yōu)先級(priority)、optime(某成員節(jié)點最近一次應(yīng)用本地oplog的時間戳)、網(wǎng)絡(luò)連接、網(wǎng)絡(luò)分區(qū)

(2)觸發(fā)選舉的事件:

①新副本集初始化;

②從節(jié)點聯(lián)系不到主節(jié)點;

③主節(jié)點"下臺"時;有以下原因會導(dǎo)致主節(jié)點"下臺"

主節(jié)點收到setupDown()命令時會下臺;

某從節(jié)點有更高的優(yōu)先級且已經(jīng)滿足成為主節(jié)點的其他所有條件;

主節(jié)點無法聯(lián)系到副本集的"多數(shù)方"

三、配置過程

(1)各個節(jié)點安裝mongodb

[mongodb-org-2.6]???\\準(zhǔn)備yum源

name=MongoDB?2.6?Repository

baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/

gpgcheck=0

enabled=1

#?yum?-y?install?mongodb-org-server?mongodb-org-shell?mongodb-org-tools?\\每個節(jié)點都要安裝

(2)創(chuàng)建mongodb數(shù)據(jù)存放目錄

#?mkdir?-vp?/mongodb/data;?chown?-R?mongod.mongod?/mongodb???\\每個節(jié)點都要創(chuàng)建,方法相同

(3)編輯mongodb配置文件:/etc/mongod.conf,修改內(nèi)容如下:

[root@node1?~]#?cat?/etc/mongod.conf

#?mongod.conf

#where?to?log

logpath=/var/log/mongodb/mongod.log??\\指定log日志文件路徑

logappend=true??\\是否自動切割日志

#?fork?and?run?in?background

fork=true???\\是否在后端運行

#port=27017??\\指定監(jiān)聽端口;默認(rèn)即可

dbpath=/mongodb/data???\\指定數(shù)據(jù)存放路徑

#?location?of?pidfile

pidfilepath=/var/run/mongodb/mongod.pid??\\指明pid文件路徑

#?Listen?to?local?interface?only.?Comment?out?to?listen?on?all?interfaces.

#bind_ip=127.0.0.1??\\指定監(jiān)聽端口,默認(rèn)為127.0.0.1,最好根據(jù)實際需求定義

#?Disables?write-ahead?journaling

#?nojournal=true

#?Enables?periodic?logging?of?CPU?utilization?and?I/O?wait

#cpu=true

#?Turn?on/off?security.??Off?is?currently?the?default

#noauth=true

#auth=true

#?Verbose?logging?output.

#verbose=true

#?Inspect?all?client?data?for?validity?on?receipt?(useful?for

#?developing?drivers)

#objcheck=true

#?Enable?db?quota?management

#quota=true

#?Set?oplogging?level?where?n?is

#???0=off?(default)

#???1=W

#???2=R

#???3=both

#???7=W+some?reads

#diaglog=0

#?Ignore?query?hints

#nohints=true

#?Enable?the?HTTP?interface?(Defaults?to?port?28017).

#httpinterface=true

#rest=true

#?Turns?off?server-side?scripting.??This?will?result?in?greatly?limited

#?functionality

#noscripting=true

#?Turns?off?table?scans.??Any?query?that?would?do?a?table?scan?fails.

#notablescan=true

#?Disable?data?file?preallocation.

#noprealloc=true

#?Specify?.ns?file?size?for?new?databases.

#?nssize=

#?Replication?Options

#?in?replicated?mongo?databases,?specify?the?replica?set?name?here

replSet=one??\\最重要的一項,設(shè)置復(fù)制集的名稱,這里設(shè)置為“one”

replIndexPrefetch=_id_only???\\這里設(shè)置取回的索引,此次設(shè)置的是"_id_only"

#?maximum?size?in?megabytes?for?replication?operation?log

#oplogSize=1024

#?path?to?a?key?file?storing?authentication?info?for?connections

#?between?replica?set?members

#keyFile=/path/to/keyfile

[root@node1?~]#?scp?/etc/mongod.conf?node2:/etc/???\\復(fù)制配置文件給node2節(jié)點一份

[root@node1?~]#?scp?/etc/mongod.conf?node3:/etc/????\\復(fù)制配置文件給node3節(jié)點一份

[root@node1?~]#?/etc/init.d/mongod?start

Starting?mongod:???????????????????????????????????????????[??OK??]

[root@node2?~]#?/etc/init.d/mongod?start

Starting?mongod:???????????????????????????????????????????[??OK??]

[root@node3?~]#?/etc/init.d/mongod?start

Starting?mongod:???????????????????????????????????????????[??OK??]

(4)配置主節(jié)點

[root@node1?~]#?mongo????\\登錄到mongodb數(shù)據(jù)庫

MongoDB?shell?version:?2.6.11

connecting?to:?test

Welcome?to?the?MongoDB?shell.

For?interactive?help,?type?"help".

For?more?comprehensive?documentation,?see

http://docs.mongodb.org/

Questions??Try?the?support?group

http://groups.google.com/group/mongodb-user

>?rs.initiate()???\\初始化復(fù)制集

{

"info2"?:?"no?configuration?explicitly?specified?--?making?one",

"me"?:?"node1.linux.com:27017",

"info"?:?"Config?now?saved?locally.??Should?come?online?in?about?a?minute.",

"ok"?:?1

}

>

one:PRIMARY>???\\初始化復(fù)制集后,提示符變成現(xiàn)在的樣子

one:PRIMARY>?rs.add("172.16.2.13")??\\添加node2從節(jié)點

{?"ok"?:?1?}

one:PRIMARY>?rs.add("172.16.2.14")???\\添加node3從節(jié)點

{?"ok"?:?1?}

(5)配置從節(jié)點

[root@node2?~]#?mongo??\\鏈接node2節(jié)點的mongodb

MongoDB?shell?version:?2.6.11

connecting?to:?test

one:SECONDARY>?rs.slaveOk()???\\啟動node2從節(jié)點

[root@node3?~]#?mongo???\\鏈接node2節(jié)點的mongodb

MongoDB?shell?version:?2.6.11

connecting?to:?test

one:SECONDARY>?rs.slaveOk()???\\啟動node3從節(jié)點

(6)查看各個節(jié)點信息:

one:PRIMARY>?rs.status()

{

"set"?:?"one",?\\“one”復(fù)制集的名稱

"date"?:?ISODate("2015-08-29T08:59:14Z"),??\\日期類型

"myState"?:?1,??\\當(dāng)前狀態(tài)

"members"?:?[???\\復(fù)制集成員信息

{

"_id"?:?0,??\\主節(jié)點ID

"name"?:?"node1.linux.com:27017",??\\主節(jié)點的主機名

"health"?:?1,??\\節(jié)點健康值

"state"?:?1,??\\狀態(tài)

"stateStr"?:?"PRIMARY",??\\當(dāng)前為主節(jié)點

"uptime"?:?848,?\\運行時長

"optime"?:?Timestamp(1440838386,?1),?\\時間戳

"optimeDate"?:?ISODate("2015-08-29T08:53:06Z"),

"electionTime"?:?Timestamp(1440838311,?2),

"electionDate"?:?ISODate("2015-08-29T08:51:51Z"),

"self"?:?true??\\如果在當(dāng)前主機則為true,否則為false

},

{

"_id"?:?1,

"name"?:?"172.16.2.13:27017",

"health"?:?1,

"state"?:?2,

"stateStr"?:?"SECONDARY",

"uptime"?:?372,

"optime"?:?Timestamp(1440838386,?1),

"optimeDate"?:?ISODate("2015-08-29T08:53:06Z"),

"lastHeartbeat"?:?ISODate("2015-08-29T08:59:12Z"),

"lastHeartbeatRecv"?:?ISODate("2015-08-29T08:59:13Z"),

"pingMs"?:?1,

"syncingTo"?:?"node1.linux.com:27017"??\\從那臺主機同步數(shù)據(jù)

},

{

"_id"?:?2,

"name"?:?"172.16.2.14:27017",

"health"?:?1,

"state"?:?2,

"stateStr"?:?"SECONDARY",

"uptime"?:?368,

"optime"?:?Timestamp(1440838386,?1),

"optimeDate"?:?ISODate("2015-08-29T08:53:06Z"),

"lastHeartbeat"?:?ISODate("2015-08-29T08:59:13Z"),

"lastHeartbeatRecv"?:?ISODate("2015-08-29T08:59:14Z"),

"pingMs"?:?1,

"syncingTo"?:?"node1.linux.com:27017"

}

],

"ok"?:?1

}

(7)驗證復(fù)制集節(jié)點數(shù)據(jù)是否同步

one:PRIMARY>?use?testdb?\\切換到新的數(shù)據(jù)庫;

switched?to?db?testdb

one:PRIMARY>?for(i=1;i<=100;i++)?db.test.insert({name:?"stu"+i,?age:?"i%100",??class:?"Net12"})

\\在主節(jié)點插入數(shù)據(jù)

one:SECONDARY>?db.test.find()??\\在node2從節(jié)點查看主節(jié)點插入的數(shù)據(jù)

{?"_id"?:?ObjectId("55e177388aa7580730a33942"),?"name"?:?"stu1",?"age"?:?"i%100",?"class"?:?"Net12"?}

{?"_id"?:?ObjectId("55e177388aa7580730a33943"),?"name"?:?"stu2",?"age"?:?"i%100",?"class"?:?"Net12"?}

{?"_id"?:?ObjectId("55e177388aa7580730a33944"),?"name"?:?"stu3",?"age"?:?"i%100",?"class"?:?"Net12"?}

{?"_id"?:?ObjectId("55e177388aa7580730a33945"),?"name"?:?"stu4",?"age"?:?"i%100",?"class"?:?"Net12"?}

one:SECONDARY>?db.test.find()??\\在node3節(jié)點查看主節(jié)點插入的數(shù)據(jù)

{?"_id"?:?ObjectId("55e177388aa7580730a33942"),?"name"?:?"stu1",?"age"?:?"i%100",?"class"?:?"Net12"?}

{?"_id"?:?ObjectId("55e177388aa7580730a33943"),?"name"?:?"stu2",?"age"?:?"i%100",?"class"?:?"Net12"?}

{?"_id"?:?ObjectId("55e177388aa7580730a33944"),?"name"?:?"stu3",?"age"?:?"i%100",?"class"?:?"Net12"?}

{?"_id"?:?ObjectId("55e177388aa7580730a33945"),?"name"?:?"stu4",?"age"?:?"i%100",?"class"?:?"Net12"?}

{?"_id"?:?ObjectId("55e177388aa7580730a33946"),?"name"?:?"stu5",?"age"?:?"i%100",?"class"?:?"Net12"?}

{?"_id"?:?ObjectId("55e177388aa7580730a33947"),?"name"?:?"stu6",?"age"?:?"i%100",?"class"?:?"Net12"?}

{?"_id"?:?ObjectId("55e177388aa7580730a33948"),?"name"?:?"stu7",?"age"?:?"i%100",?"class"?:?"Net12"?}

(8)驗證從節(jié)點是否可以寫入數(shù)據(jù)

one:SECONDARY>?db.test.insert({name:?"stu101",?age:?20,?class:?"Net12"})\\在node2測試,從節(jié)不能寫入

WriteResult({?"writeError"?:?{?"code"?:?undefined,?"errmsg"?:?"not?master"?}?})

one:SECONDARY>?db.test.insert({name:?"stu101",?age:?20,?class:?"Net12"})\\在node3測試,從節(jié)點不能寫入

WriteResult({?"writeError"?:?{?"code"?:?undefined,?"errmsg"?:?"not?master"?}?})

(9)通過以上測試,可以證明mongodb的復(fù)制集已經(jīng)可以正常工作同時從節(jié)點只有讀權(quán)限,而主節(jié)點有讀寫權(quán)限

(10)mongodb額外命令可以通過rs.help()查看幫助信息,下面只介紹常用的幾個命令

one:PRIMARY>?rs.printReplicationInfo()???\\打印出復(fù)制集信息

configured?oplog?size:???1301.37744140625MB

log?length?start?to?end:?1169secs?(0.32hrs)

oplog?first?event?time:??Sat?Aug?29?2015?16:51:51?GMT+0800?(CST)

oplog?last?event?time:???Sat?Aug?29?2015?17:11:20?GMT+0800?(CST)

now:?????????????????????Sat?Aug?29?2015?17:19:35?GMT+0800?(CST)

one:PRIMARY>?rs.printSlaveReplicationInfo()?\\查看主從復(fù)制延遲

source:?172.16.2.13:27017

syncedTo:?Sat?Aug?29?2015?17:11:20?GMT+0800?(CST)

0?secs?(0?hrs)?behind?the?primary

source:?172.16.2.14:27017

syncedTo:?Sat?Aug?29?2015?17:11:20?GMT+0800?(CST)

0?secs?(0?hrs)?behind?the?primary

one:PRIMARY>

謝謝大家花時間看完我寫的博客,若有不足支持請多多提出寶貴的意見。O(∩_∩)O

原創(chuàng)文章,作者:馬行空,如若轉(zhuǎn)載,請注明出處:http://www.178linux.com/7764

總結(jié)

以上是生活随笔為你收集整理的复制集配置文件linux,mongodb的复制集实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。