mongodb 主从配置比较简单,只需要在启动的时候添加参数。
我们搭建一个模拟的环境,在一台centos上启动三个mongodb服务。监听端口分别为:
27010、27011、27012。配置后的环境为:27010为主,27011、27012为从。
下面开始实现上面的环境:
1) 创建mongodb数据存放的文件夹
- mkdir -p /mongodata/test/db27010
- mkdir -p /mongodata/test/db27011
- mkdir -p /mongodata/test/db27012
2)启动27010主
在启动命令中加入 master,该mongo服务即可作为主。
- mongod --dbpath /mongodata/test/db27010 --port 27010 --master
- --logpath /mongodata/test/db27010/log.txt --fork
3)启动27011、27012从
添加参数 --slave 作为从,通过--source localhost:27010来指定主的位置。
- mongod --dbpath /mongodata/test/db27011 --port 27011 --slave --source
- localhost:27010 --logpath /mongodata/test/db27011/log.txt --fork
-
- mongod --dbpath /mongodata/test/db27012 --port 27012 --slave --source
- localhost:27010 --logpath /mongodata/test/db27012/log.txt --fork
4)测试
查看mongo服务
- ps -aux|grep mongo
看到如下内容:
- root 21735 0.1 8.0 237012 20440 ?
- Sl 20:09 0:00 mongod --dbpath /mongodata/test/db27010
- --port 27010 --master --logpath /mongodata/test/db27010/log.txt --fork
- root 21784 0.9 7.9 129416 20164 ?
- Sl 20:15 0:00 mongod --dbpath /mongodata/test/db27011
- --port 27011 --slave --source localhost:27010
- --logpath /mongodata/test/db27011/log.txt --fork
- root 21798 0.6 7.9 129384 20160 ?
- Sl 20:15 0:00 mongod --dbpath /mongodata/test/db27012
- --port 27012 --slave --source localhost:27010
- --logpath /mongodata/test/db27012/log.txt --fork
我们的三个mongodb服务都已经启动。
添加测试数据:
我们在主27010中创建user集合,并添加100个用户,然后再从中查看。
- mongo --port 27010
- use user;
- for(i=0;i<100;i++){ db.user.insert({"name":"ximu"+i}); }
查看主的90-94的数据:
- db.user.find().skip(90).limit(5);
查看从的数据:
- mongo --port 27011
- show dbs;
- use user;
- db.user.find().skip(90).limit(5);
-
- mongo --port 27012
- show dbs;
- use user;
- db.user.find().skip(90).limit(5);
5)主从的管理
查看当前的从服务器:
- mongo --port 27010
- use local;
- db.slaves.find();
输出如下内容:
- { "_id" : ObjectId("4fabb177fc376c0a2552bab4"), "host" : "127.0.0.1", "ns"
- : "local.oplog.$main", "syncedTo" : { "t" : 1336653678000, "i" : 1 } }
- { "_id" : ObjectId("4fabb18078bc627b617794d2"), "host" : "127.0.0.1", "ns"
- : "local.oplog.$main", "syncedTo" : { "t" : 1336653678000, "i" : 1 } }
查看从的主:
- mongo --port 27011
- use local;
- db.sources.find();
输出如下内容:
- { "_id" : ObjectId("4fabb18078bc627b617794d1"), "host" : "localhost:27010"
- , "source" : "main", "syncedTo" : { "t" : 1336653868000, "i" : 1 }
- , "localLogTs" : { "t" : 0, "i" : 0 } }
6)主从复制的选项
–slavedelay 10 #延时复制 单位为秒
–autoresync #自动重新同步
–only #复制指定的数据库,默认复制所有的库
–oplogSize #主节点的oplog日志大小,单位为M
(ximu) |