创建副本集的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权威指南第二版。
本文指导如何在不连接数据库的情况下创建MongoDB shell,并通过命令行创建包含3个数据库服务的副本集,包括主服务和两个从服务。详细介绍了在主服务器上添加数据后,如何确保从服务器能够正确同步数据。
&spm=1001.2101.3001.5002&articleId=39274839&d=1&t=3&u=ef9bb7dae6444fb6a2f9029aab7a4bc1)
7288

被折叠的 条评论
为什么被折叠?



