创建三个数据库目录
$ cd /data
$ mkdir db27017 db27018 db27019
启动三个实例
$ mongod --replSet replset --dbpath /data/db27017 --port 27017 --oplogSize 200 --smallfiles
$ mongod --replSet replset --dbpath /data/db27018 --port 27018 --oplogSize 200 --smallfiles
$ mongod --replSet replset --dbpath /data/db27019 --port 27019 --oplogSize 200 --smallfiles
开启命令行
$ mongo
初始化
$ rs.initiate()
查看 name
$ rs.status()
添加一个从节点, 这里的 'lai-2.local' 是 rs.status() 查出来的 name 属性
$ rs.add('lai-2.local:27018')
添加一个 arbiter
$ rs.addArb('lai-2.local:27019')
再查看状态, 可以看到 members 变成了三个
$ rs.status()
自动恢复
$ mongo —nodb
执行下面的代码, 模拟插入操作
var conn = new Mongo("replset/localhost:27017,localhost:27018,localhost:27019");
var db =conn.getDB("test");
var count=0; while(count++<1000) {
try{
sleep(1000);
db.col.insert({n: count});
print("插入成功 #" + count);
}
catch(exception){
print("插入失败 #"+count+", 正在重试...");
count--;
}
}
执行上述脚本后, 关掉 27017 的 shell 看看发生了什么?
数据库连接 27017 失败, 会尝试连接 27018.
这时候 27018 变成主节点了.
重启 27017 的话, 27017 变成非主节点了.
这时候再次关掉 27018 的shell, 27017 则会变成主节点.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。