MongoDB配置Master和Slave模式
MongoDB是一个可扩展,高性能、开源、模式自由、面向文档的数据库
它并不是我们通常用的RDBMS,属于最近比较热门的"NoSql"的数据库范畴
它和一般的基于key-value的db还是不大一样的,因为它本身的功能很强大
它已经实现了类似于SQL的很多功能,如index,limit,skip,group....
当应用的数据量达到海量级,传统的Mysql,Oracle不能满足我们的性能要求
而对于数据还有一定的查询需求时,也许可以考虑一下使用MongoDB
安装很简单:
- wget "http://downloads.mongodb.org/linux/mongodb-linux-x86_64-1.2.4.tgz"
- tar zxvf mongodb-linux-x86_64-1.2.4.tz
- ln -s /opt/mongodb-linux-x86_64-1.2.4/ /usr/local/mongodb
- mkdir /opt/mongodb_data
MongoDB有2个版本的,官方推荐使用mongodb-linux-x86_64-1.2.4.tgz,只有在linux是老系统,mongodb无法启动时,才使用"legacy static“版
MongoDB里提供了简单的Auth功能,如果要开启认证,则在启动之前,需要首先增加用户
- /usr/local/mongodb/bin/mongo admin
- db.addUser('admin','manager')
- db.auth('admin','manager')
- show dbs
- use address
- db.addUser('mongodb','test')
其中,admin是一个特殊的数据库,只有在admin上db.auth通过后,才能给其它的数据库增加权限
如上,我们为address数据库增加了一个mongodb的用户
另外,如果我们要启用Master/Slave模式,而且开启了Auth功能,则需要同时在Master和Slave上的local数据库上增加一个repl的用户
- use local
- db.addUser('repl','replication')
否则,当我们启动slave时,会报错:
replauthenticate: can't authenticate to master server, user:repl
然后,我们使用如下脚本来分别启动Master和Slave即可,注意--oplogSize选项,它指定了master往slave同步时,更新日志保存的最大大小,默认64位机器,最大1G,如果太小,slave没有及时跟上的话,有可能会数据不一致
- nohup /usr/local/mongodb/bin/mongod run--dbpath=/data/mongodb_data/--logpath=/data/mongodb_data/mongodb.log--oplogSize=10000M--logappend --auth --master &
- nohup /usr/local/mongodb/bin/mongod run --dbpath=/opt/mongodb_data/--logpath=/opt/mongodb_data/mongodb.log --logappend --auth --slave--source=192.168.10.10:27017 &
在python中,可以使用pymongo模块
- frompymongo.connectionimportConnection
- connection = Connection("127.0.0.1",27017)
- db = connection.mail_addr
- db.authenticate('mongodb','test')
- ......
- db.address.save(user_addr,safe=True)
使用save来保存某个记录,如果我们已经使用find()查处了某个记录,则修改后也可以使用save来进行update操作
如果要实现某条记录不存在就insert,存在就update,则可以使用
- db.foo.update({'yy'}:5,{'$set':{'xx':2}},upsert=true)
MongoDB的功能很强大,可以像Mysql那样建立索引,且支持多字段索引、支持unique索引...
今后有空继续研究....
对于一个支持SPI协议的IC 有 master模式和slave模式,是不是slave模式不能控制TF卡或串口显示屏
我们现在用的是单机模式,每条数据大小1kb; 日数据大小1.5亿 现在用的是capped size:500G,存储容量:6亿; 线上实际运行结果,数据达到3亿性能开始大幅下降; 50台客户端-->1台mongodb; 不知道你有没有好的优化建议.
欢迎回复
你好!我使用mongoDB 启动route_process
显示以下信息,请问是怎么回事?如果方面的话可以发邮件告诉我或或则回复我的留言。谢谢!
配置服务启动起来的进行信息
root 3214 0.0 0.4 91320 3688 ? Sl 13:48 0:00 /usr/local/mongoDB/sharding_cluster/config_service_1.8/bin/mongod --configsvr --port 30000 --dbpath /data/shard/config/ --fork --logpath /data/shard/logs/config.log --directoryperdb
启动路由进行命令及参数
./mongos --configdb localhost:30000
Tue Apr 24 13:50:26 ./mongos db version v1.8.5, pdfile version 4.5 starting (--help for usage)
Tue Apr 24 13:50:26 git version: 403c8dadcd56f68dcbe06013ecbfac67b32a22ac
Tue Apr 24 13:50:26 build sys info: Linux ip-10-110-9-236 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_41
Tue Apr 24 13:50:26 Assertion failure VERSION == dbConfigVersion( conn.conn() ) s/config_migrate.cpp 42
0x50fdee 0x52143d 0x68128b 0x67964e 0x67a148 0x35cc01d994 0x4a1cd9
./mongos(_ZN5mongo12sayDbContextEPKc+0xae) [0x50fdee]
./mongos(_ZN5mongo8assertedEPKcS1_j+0xfd) [0x52143d]
./mongos(_ZN5mongo12ConfigServer18checkConfigVersionEb+0xf7b) [0x68128b]
./mongos(_Z5_mainiPPc+0x1b6e) [0x67964e]
./mongos(main+0x18) [0x67a148]
/lib64/libc.so.6(__libc_start_main+0xf4) [0x35cc01d994]
./mongos(_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKcl+0x59) [0x4a1cd9]
Tue Apr 24 13:50:26 ~ScopedDbConnection: _conn != null
uncaught exception in mongos main:
0 assertion s/config_migrate.cpp:42
我的邮箱是:kevin_Luan@126.com