mongo主从 副本集
一,mongo 主从
mongo的主从配置
1,主从同步原理,从库通过去读取主库的oplog来实现数据的同步
弊端: 主从不能自动切换(副本集可以)
环境:(在一个服务器上启用多个mongo进程,监听在不同端口,也可以实现)
master :192.168.78.130
slave : 192.168.78.131
步骤一:
在master 130上,启用mongod :
[[email protected] bin]# ./mongod --dbpath=/root/data --logpath=/root/data/mongo.log --logappend --fork --port=10001 --master
forked process: 6488
all output going to: /root/data/mongo.log
child process started successfully, parent exiting
这里主要是一个--master参数,告诉mongo 自己此时是master
步骤二:
在slave 131 上,启用mongod
[[email protected] bin]# ./mongod --dbpath=/root/data --logpath=/root/data/mongo.log --logappend --fork --port=10002 --slave --source 192.168.78.130:10001
forked process: 5440
all output going to: /root/data/mongo.log
child process started successfully, parent exiting
这里--slave指定本机为slave 通过--source 指向master服务器 130:10001
搭建成功
测试:
在master 130上插入数据
登陆 --host指定登陆服务器ip地址,--port指定端口
[[email protected] bin]# ./mongo --host 192.168.78.130 --port 10001
MongoDB shell version: 2.2.2
connecting to: 192.168.78.130:10001/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
> show dbs
local 0.078125GB
> use pincer
switched to db pincer
> db.pincer.insert({"test":111})
> show collections
pincer
system.indexes
> db.pincer.find()
{ "_id" : ObjectId("52100534f11fdb125391724e"), "test" : 111 }
master上已经在pincer库中的pincer集合中插入了test:111
到131 slave上去查看
> show dbs
local 0.078125GB
pincer 0.0625GB
> use pincer
switched to db pincer
> show collections
pincer
system.indexes
> db.pincer.find()
{ "_id" : ObjectId("52100534f11fdb125391724e"), "test" : 111 }
可以看到数据已经同步了
在master(或slave)上查看
> db.printReplicationInfo()
configured oplog size: 47.6837158203125MB
log length start to end: 97secs (0.03hrs)
oplog first event time: Thu Aug 08 2013 09:06:22 GMT+0800 (CST)
oplog last event time: Thu Aug 08 2013 09:07:59 GMT+0800 (CST)
now: Thu Aug 08 2013 09:27:59 GMT+0800 (CST)
这里的oplog 47M 就是指oplog的日志大小(如果从去同步主时,因为之前主的数据太大了,那么要设置大点oplog,--oplogSize)
查看主从信息
在master上
> use local
switched to db local
> db.slaves.find()
{ "_id" : ObjectId("5202f30721f1c7b358a9c53f"), "host" : "192.168.78.131", "ns" : "local.oplog.$main", "syncedTo" : Timestamp(1376782169000, 1) }
可以看到这里的从是131
在slave上
> db.slaves.find()
{ "_id" : ObjectId("5202ef26b15304f923e5b3ce"), "host" : "192.168.78.131", "ns" : "local.oplog.rs", "syncedTo" : Timestamp(1375924079000, 1) }
> db.sources.find()
{ "host" : "192.168.78.130:10001", "source" : "main", "syncedTo" : Timestamp(1376782899000, 1) }
从集合sources中可以看到,master是130
从集合slaves中可以看懂,slave是131