副本集是一组,由N个mongo节点组成并协同工作的,提供自动的故障集群转移。
建立一个副本集需要步骤,1、需要启动每个节点,2、然后进行初始化设置。在这里,我们将配置一组(三个节点),这是标准设置。
一旦mongod节点启动,我们将发出一个命令,以正确地初始化设置。几秒钟后,将选举产生一个主节点,你就可以开始写和查询集。
启动节点
首先为每个节点创建数据目录
mkdir -p /data/r0 /data/r1 /data/r2
启动每个mongod节点,“--replset”参数需要指定一个副本集逻辑名称,我们使用“test”。
启动第一个节点,端口10000
./mongod --dbpath /data/r0 --logpath /data/r0/mg.log --port 10000 --replSet test --fork
启动第二个节点,端口10001
./mongod --dbpath /data/r1 --logpath /data/r1/mg.log --port 10001 --replSet test --fork
最后启动第三个节点,端口10002
./mongod --dbpath /data/r2 --logpath /data/r2/mg.log --port 10002 --replSet test --fork
注:--fork为创建守护进程,--logpath与--fork必须并存
在所有节点启动后,我们还不能使用这个副本集,因为还差最后一步:在shell中初始化副本集。
初始化节点
我们连接到其中一个节点上,并使用replSetInitiate命令进行初始化。此命令需要一个配置对象,指定设定的每个成员的名字。
> mongo 127.0 . 0.1 : 10000 / admin> config = { _id : "test" , members :[... { _id : 0 , host : '127.0.0.1:10000' },... { _id : 1 , host : '127.0.0.1:10001' },... { _id : 2 , host : '127.0.0.1:10002' }]... }> rs . initiate ( config );{"info" : "Config now saved locally. Should come online in about a minute." ,"ok" : 1}
我们指定的配置对象,然后把它传递给rs.initiate()。如果一切正常,我们得到的回应说,副本集将在一分钟内在线。在此期间,其中一个节点将当选为主节点。
运行
>rs.status()
检查节点状态。
复制
现在我们来测试一下,向主节点中写点东西。
db.message.save({name:”ReplSet Test”});
这时候你去看看辅节点上的日志,你将会看到内容被复制了