创建副本集的quick-start
tips:确保存在/data/db的目录,且有写权限,因为以下操作将在这个目录创建数据库
1、执行命令
mongo --nodb
--nodb表示允许在不连接数据库的情况下创建一个shell
2、执行命令
replicaSet = new ReplSetTest({"nodes" : 3})
这条命令告诉shell创建3个数据库服务,一个主服务,两个从服务。但只有执行3中的命令,server才会真正被创建。
3、执行命令
replicaSet
.
startSet
()
replicaSet
.
initiate
()
这两条命令成功创建了3个mongod进程,端口号分别为31000,31001,31002,
4、再开一个终端,连接到其中一个mongod
conn1 = new Mongo("localhost:31000")
primaryDB
=
conn1
.
getDB
("test")
5、执行命令
primaryDB
.
isMaster
()
可以看到当前服务器的状态。
6、在主服务器上添加一些数据,看看从服务器有什么变化。
for (i=0; i<1000; i++) { primaryDB.coll.insert({count: i}) }
再开一个终端连接到从服务器
conn1 = new Mongo("localhost:31000")
secondDB = conn1.getDB("test")
secondDB.coll.count()
会输出Sun Sep 14 22:19:18 uncaught exception: count failed: { "errmsg" : "not master", "ok" : 0 }
这是防止你无意中查询从服务器而得到旧数据。解决方法是
conn1.setSlaveOk()然后你就可以查询到和主服务器一样的数据了。
7、从服务器禁止写入数据,他只能通过复制主服务器来写入数据。
部分翻译自mongodb权威指南第二版。
部分翻译自mongodb权威指南第二版。