Heim >Datenbank >MySQL-Tutorial >MongoDB 副本集自动复制 Replica Set

MongoDB 副本集自动复制 Replica Set

WBOY
WBOYOriginal
2016-06-07 16:47:17782Durchsuche

MongoDB部署实验系列文章,MongoDB做为NoSQL数据库,最近几年持续升温,越来越多的企业都开始尝试用MongoDB代替原有Database做一

MongoDB部署实验系列文章,MongoDB做为NoSQL数据库,最近几年持续升温,越来越多的企业都开始尝试用MongoDB代替原有Database做一些事情。MongoDB也在集群,分片,复制上也有相当不错的的表现。我通过将做各种MongoDB的部署实验进行介绍。

第二篇 MongoDB 副本集自动复制 Replica Set,分为7个部分
 1.初始化文件目录
 2.启动副本集 Replica Set
 3.模拟 PRIMARY失败,SECONDARY自动切换
 4.修复失败节点
 5.恢复失败节点,补充到SECONDARY
 6.删除一个Replica Set节点
 7.新增加一个Replica Set节点


 
系统环境介绍:
 
Ubuntu 12.04. LTS 64bit Server 
 
初始化文件目录
 
~ pwd
 /home/conan/dbs
 
~ mkdir node1 node2 node3
 ~ ls -l
 drwxrwxr-x 2 conan conan 4096 May 31 14:21 node1
 drwxrwxr-x 2 conan conan 4096 May 31 14:21 node2
 drwxrwxr-x 2 conan conan 4096 May 31 14:21 node3
 

 
 
启动副本集 Replica Set
 
启动node1,node2,node3
 
mongod --dbpath /home/conan/dbs/node1 --port 10001 --replSet blort --nojournal --fork --logpath /home/conan/dbs/node1.log
 mongod --dbpath /home/conan/dbs/node2 --port 10002 --replSet blort --nojournal --fork --logpath /home/conan/dbs/node2.log
 mongod --dbpath /home/conan/dbs/node3 --port 10003 --replSet blort --nojournal --fork --logpath /home/conan/dbs/node3.log
 

副本集初始化
 
~ mongo localhost:10001
 MongoDB shell version: 2.4.3
 connecting to: localhost:10001/test
 > rs.initiate({_id:"blort",members:[
 {_id:1,host:"localhost:10001"},
 {_id:2,host:"localhost:10002"},
 {_id:3,host:"localhost:10003"},
 ]})
 {
 "info" : "Config now saved locally. Should come online in about a minute.",
 "ok" : 1
 }
 
查看日志信息:node1变选为PRIMARY,node2,node3分别是2个SECONDARY
 
Fri May 31 14:26:44.728 [conn2] ******
 Fri May 31 14:26:44.728 [conn2] replSet info saving a newer config version to local.system.replset
 Fri May 31 14:26:44.741 [conn2] replSet saveConfigLocally done
 Fri May 31 14:26:44.741 [conn2] replSet replSetInitiate config now saved locally. Should come online in about a minute.
 Fri May 31 14:26:44.741 [conn2] command admin.$cmd command: { replSetInitiate: { _id: "blort", members: [ { _id: 1.0, host: "localhost:10001" }, { _id: 2.0, host: "localhost:10002" }, { _id: 3.0, host: "localhost:10003" } ] } } ntoreturn:1 keyUpdates:0 locks(micros) W:646741 reslen:112 652ms
 Fri May 31 14:26:53.682 [rsStart] replSet I am localhost:10001
 Fri May 31 14:26:53.682 [rsStart] replSet STARTUP2
 Fri May 31 14:26:53.683 [rsHealthPoll] replSet member localhost:10002 is up
 Fri May 31 14:26:53.684 [rsHealthPoll] replSet member localhost:10003 is up
 Fri May 31 14:26:54.285 [initandlisten] connection accepted from 127.0.0.1:46469 #3 (3 connections now open)
 Fri May 31 14:26:54.683 [rsSync] replSet SECONDARY
 

用mongo客户端查看设置
 node1连接
 
~ mongo localhost:10001
 MongoDB shell version: 2.4.3
 connecting to: localhost:10001/test
 blort:PRIMARY> rs.status()
 {
 "set" : "blort",
 "date" : ISODate("2013-05-31T06:34:12Z"),
 "myState" : 1,
 "members" : [
 {
 "_id" : 1,
 "name" : "localhost:10001",
 "health" : 1,
 "state" : 1,
 "stateStr" : "PRIMARY",
 "uptime" : 659,
 "optime" : {
 "t" : 1369981604,
 "i" : 1
 },
 "optimeDate" : ISODate("2013-05-31T06:26:44Z"),
 "self" : true
 },
 {
 "_id" : 2,
 "name" : "localhost:10002",
 "health" : 1,
 "state" : 2,
 "stateStr" : "SECONDARY",
 "uptime" : 439,
 "optime" : {
 "t" : 1369981604,
 "i" : 1
 },
 "optimeDate" : ISODate("2013-05-31T06:26:44Z"),
 "lastHeartbeat" : ISODate("2013-05-31T06:34:11Z"),
 "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
 "pingMs" : 0,
 "syncingTo" : "localhost:10001"
 },
 {
 "_id" : 3,
 "name" : "localhost:10003",
 "health" : 1,
 "state" : 2,
 "stateStr" : "SECONDARY",
 "uptime" : 439,
 "optime" : {
 "t" : 1369981604,
 "i" : 1
 },
 "optimeDate" : ISODate("2013-05-31T06:26:44Z"),
 "lastHeartbeat" : ISODate("2013-05-31T06:34:11Z"),
 "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
 "pingMs" : 0,
 "syncingTo" : "localhost:10001"
 }
 ],
 "ok" : 1
 }
 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn