ITPub博客

首页 > 数据库 > > MongoDB 副本集搭建

MongoDB 副本集搭建

作者:浪花小雨滴 时间:2020-05-08 18:38:37 0 删除 编辑

搭建mongodb副本集

[root@ mongodb]# cd /u02



[root@ u02]# mkdir -p mongodb/data_2777



[root@ u02]# mkdir -p mongodb/data_3777



[root@ u02]# mkdir -p mongodb/data_4777



[root@ mongodb]# tar mongodb-linux-x86_64-3.2.6.tgz



[root@ mongodb]# mv mongodb-linux-x86_64-3.2.6 mongodb



[root@ mongodb]# mkdir -p 2777 3777 4777



[root@ 2777]# mkdir {conf,log,keys,pid}



[root@ 3777]# mkdir {conf,log,keys,pid}



[root@ 4777]# mkdir {conf,log,keys,pid}



[root@ conf]# vi mongodb_2777.conf

systemLog:

destination: file

logAppend: true

path: /u02/mongodb/mongodb/2777/log/shard1.log

storage:

dbPath: /u02/mongodb/data_2777

journal:

enabled: true

directoryPerDB: true

engine: wiredTiger

wiredTiger:

engineConfig:

cacheSizeGB: 10 # the maximum of half of physical RAM or 1 gigabyte

directoryForIndexes: true # mongod stores indexes and collections in separate subdirectories under the data (i.e. storage.dbPath) directory

collectionConfig:

blockCompressor: snappy # The default type of compression to use to compress collection data

processManagement:

fork: true # fork and run in background

pidFilePath: /u02/mongodb/mongodb/2777/pid/mongodb_2777.pid # location of pidfile

net:

bindIp: 0.0.0.0

port: 2777

operationProfiling:

slowOpThresholdMs: 500

mode: slowOp

replication:

replSetName: shard1 #副本集的名称,副本集以此名称来识别是否属于同一个集群中

oplogSizeMB: 512

#auditLog:

# destination: file

# format: JSON

# path: /u02/mongodb/mongodb/2777/log/audit_log/audit.json

#





启动mongodb

/u02/mongodb/mongodb/bin/mongod -f /u02/mongodb/mongodb/2777/conf/mongodb_2777.conf

/u02/mongodb/mongodb/bin/mongod -f /u02/mongodb/mongodb/3777/conf/mongodb_3777.conf

/u02/mongodb/mongodb/bin/mongod -f /u02/mongodb/mongodb/4777/conf/mongodb_4777.conf



登录2777端口mongodb

[root@ conf]# /u02/mongodb/mongodb/bin/mongo --port 2777

MongoDB shell version: 3.2.6

connecting to: 127.0.0.1:2777/test

Server has startup warnings:

2019-10-08T19:47:35.621+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.

2019-10-08T19:47:35.621+0800 I CONTROL [initandlisten]

2019-10-08T19:47:35.622+0800 I CONTROL [initandlisten]

2019-10-08T19:47:35.622+0800 I CONTROL [initandlisten] ** WARNING: You are running on a NUMA machine.

2019-10-08T19:47:35.622+0800 I CONTROL [initandlisten] ** We suggest launching mongod like this to avoid performance problems:

2019-10-08T19:47:35.622+0800 I CONTROL [initandlisten] ** numactl --interleave=all mongod [other options]

2019-10-08T19:47:35.622+0800 I CONTROL [initandlisten]

2019-10-08T19:47:35.622+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.

2019-10-08T19:47:35.622+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'

2019-10-08T19:47:35.622+0800 I CONTROL [initandlisten]

2019-10-08T19:47:35.622+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.

2019-10-08T19:47:35.622+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'

2019-10-08T19:47:35.622+0800 I CONTROL [initandlisten]

shard1:PRIMARY>



shard1:PRIMARY>conf = {_id:"shard1",members:[{_id:0,host:"127.0.0.1:2777"}]};



shard1:PRIMARY>rs.initiate(conf) ;



会显示出你的当前数据库服务实例已经加到副本集中,并且是master

shard1:PRIMARY> db.isMaster()

{

"hosts" : [

"127.0.0.1:2777",

"127.0.0.1:3777",

"127.0.0.1:4777"

],

"setName" : "shard1",

"setVersion" : 3,

"ismaster" : true,

"secondary" : false,

"primary" : "127.0.0.1:2777",

"me" : "127.0.0.1:2777",

"electionId" : ObjectId("7fffffff0000000000000001"),

"maxBsonObjectSize" : 16777216,

"maxMessageSizeBytes" : 48000000,

"maxWriteBatchSize" : 1000,

"localTime" : ISODate("2019-10-08T12:12:35.869Z"),

"maxWireVersion" : 4,

"minWireVersion" : 0,

"ok" : 1

}





接着添加刚刚那2个服务实例到副本集中

shard1:PRIMARY>rs.add("127.0.0.1:3777");



shard1:PRIMARY>rs.add("127.0.0.1:4777");



查看副本集:

shard1:PRIMARY> rs.status()

{

"set" : "shard1",

"date" : ISODate("2019-10-08T12:14:04.786Z"),

"myState" : 1,

"term" : NumberLong(1),

"heartbeatIntervalMillis" : NumberLong(2000),

"members" : [

{

"_id" : 0,

"name" : "127.0.0.1:2777",

"health" : 1,

"state" : 1,

"stateStr" : "PRIMARY",

"uptime" : 1589,

"optime" : {

"ts" : Timestamp(1570536146, 1),

"t" : NumberLong(1)

},

"optimeDate" : ISODate("2019-10-08T12:02:26Z"),

"electionTime" : Timestamp(1570536062, 2),

"electionDate" : ISODate("2019-10-08T12:01:02Z"),

"configVersion" : 3,

"self" : true

},

{

"_id" : 1,

"name" : "127.0.0.1:3777",

"health" : 1,

"state" : 2,

"stateStr" : "SECONDARY",

"uptime" : 706,

"optime" : {

"ts" : Timestamp(1570536146, 1),

"t" : NumberLong(1)

},

"optimeDate" : ISODate("2019-10-08T12:02:26Z"),

"lastHeartbeat" : ISODate("2019-10-08T12:14:04.654Z"),

"lastHeartbeatRecv" : ISODate("2019-10-08T12:14:03.533Z"),

"pingMs" : NumberLong(0),

"syncingTo" : "127.0.0.1:2777",

"configVersion" : 3

},

{

"_id" : 2,

"name" : "127.0.0.1:4777",

"health" : 1,

"state" : 2,

"stateStr" : "SECONDARY",

"uptime" : 698,

"optime" : {

"ts" : Timestamp(1570536146, 1),

"t" : NumberLong(1)

},

"optimeDate" : ISODate("2019-10-08T12:02:26Z"),

"lastHeartbeat" : ISODate("2019-10-08T12:14:04.654Z"),

"lastHeartbeatRecv" : ISODate("2019-10-08T12:14:03.414Z"),

"pingMs" : NumberLong(0),

"configVersion" : 3

}

],

"ok" : 1

}



rs.status()

"health" : 1, #代表机器正常

"stateStr" : "PRIMARY", #代表是主节点,可读写,其中有以下几下状态

1. STARTUP:刚加入到复制集中,配置还未加载

2. STARTUP2:配置已加载完,初始化;

3. RECOVERING:正在恢复,不适用读

4. ARBITER: 仲裁者

5. DOWN:节点不可到达

6. UNKNOWN:未获取其他节点状态而不知是什么状态,一般发生在只有两个成员的架构

7. REMOVED:移除复制集

8. ROLLBACK:数据回滚,在回滚结束时,转移到RECOVERING或SECONDARY状态

9. FATAL:出错。查看日志grep “replSet FATAL”找出错原因,重新做同步

10. PRIMARY:主节点

11. SECONDARY:备份节点





创建数据库:

shard1:PRIMARY> use yoon



查看当前数据库:

shard1:PRIMARY> db

yoon



插入数据:

shard1:PRIMARY> db.movie.insert({"name":"hank"});

WriteResult({ "nInserted" : 1 })



查看当前库下的表:

shard1:PRIMARY> show collections

movie



查看表中数据:

shard1:PRIMARY> db.movie.find()

{ "_id" : ObjectId("5d9c7ee9d7a8df8fd023d6ed"), "name" : "hank" }





登录3777端口查看表movie:

[root@ conf]# /u02/mongodb/mongodb/bin/mongo --port 3777

注意:新建的slave是不能读和写的,当在从服务器上读时会出现errmsg:not master and slaveOk=flase code:13435 错误,需要执行:rs.slaveOk()来开启读功能



shard1:SECONDARY> rs.slaveOk()



shard1:SECONDARY> show dbs

local 0.000GB

yoon 0.000GB

shard1:SECONDARY> use yoon

switched to db yoon

shard1:SECONDARY> show collections

movie

shard1:SECONDARY> db.movie.find()

{ "_id" : ObjectId("5d9c7ee9d7a8df8fd023d6ed"), "name" : "hank" }





来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28939273/viewspace-2659159/,如需转载,请注明出处,否则将追究法律责任。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3123459/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    40175