扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1.Mongo DB ,是目前在IT行业非常流行的一种非关系型数据库(NOSQL),其灵活的数据
在金城江等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计、做网站 网站设计制作按需网站策划,公司网站建设,企业网站建设,高端网站设计,网络营销推广,成都外贸网站建设公司,金城江网站建设费用合理。
存储方式,备受当前IT从业人员的青睐。Mongo DB很好的实现了面向对象的思想(OO思想),
在Mongo DB中 每一条记录都是一个Document对象。Mongo DB最大的优势在于所有的数据
持久操作都无需开发人员手动编写SQL语句,直接调用方法就可以轻松的实现CRUD操作。
2.monogodb安装
1.wget http://fastdl.MongoDB.org/linux/mongodb-linux-x86_64-2.6.5.tgz
2.tar xf mongodb-linux-x86_64-2.6.5.tgz
3.mv mongodb-linux-x86_64-2.6.5 /usr/local/mongodb
4.yum install openssl-devel openssl
3.mongodb启动测试
1.mkdir -pv /data/mongodb /log/mongodb
2./usr/local/mongodb/bin/mongod --port 27017 --fork --dbpath=/data/mongodb --logpath=/log/mongodb/mongodb.log --logappend
3./usr/local/mongodb/bin/mongo
use admin
db.shutdownServer()
exit
4.mongodb配置文件
在2.6版本以后使用另一种配置文件的格式,不能兼容以前的模式
2.6 http://docs.mongodb.org/manual/reference/configuration-options/
2.4 http://docs.mongodb.org/v2.4/reference/configuration-options/
概略
processManagement
systemLog
storage
net
setParameter
security
operationProfiling
replication
sharding
auditLog
示例
cat >>/usr/local/mongodb/mongodb.conf < systemLog: destination: file path: "/log/mongodb/mongodb.log" logAppend: true storage: dbPath: "/data/mongodb" #directoryPerDB: true mmapv1: smallFiles: true journal: enabled: true processManagement: fork: true pidFilePath: "/usr/local/mongodb/mongodb.pid" net: bindIp: 127.0.0.1,192.168.1.204 port: 27017 maxIncomingConnections: 1000000 http: enabled: true EOF #启动 /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf #如果是第二次启动并且使用了directoryPerDB: true,则必需要把dbPath也更换为其他目录 #通过web查看状态信息 http://192.168.1.221:28017/ #停止服务 /usr/local/mongodb/bin/mongo use admin db.shutdownServer() exit 5.mongodb主从配置 #会把之前的数据也会同步到从机上 #方法1 /usr/local/mongodb/bin/mongod --port 27017 --fork --dbpath=/data/mongodb --logpath=/log/mongodb/mongodb.log --logappend --master --oplogSize 64 /usr/local/mongodb/bin/mongod --port 27017 --fork --dbpath=/data/mongodb --logpath=/log/mongodb/mongodb.log --logappend --slave --source 192.168.1.204:27017 #方法2 /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf --master --oplogSize 64 /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf --slave --source 192.168.1.204:27017 #测试 #主库添加记录 /usr/local/mongodb/bin/mongo use test db.blog.save({title:"new article"}) #从库查询 /usr/local/mongodb/bin/mongo db.blog.find() #在从机上查看主机信息 use local db.sources.find(); #主从切换 #如果在应用中主挂掉了 #这个情况就需要停止从库, 把从库以主库的启动命令起来 6.mongodb集群(replset)(只支持12个节点,多于12个节点使用master/slave) #比主比好的地方是当主挂机上可以主动切换一个从为主 #在配置文件中加入如下内容 replication: oplogSizeMB: 128 replSetName: test http://docs.mongodb.org/manual/tutorial/deploy-replica-set-for-testing/ 结点类型 Primary,Secondaries,Arbiters(只投票,不复制数据) 1.在每个节点启动mongodb /usr/local/mongodb/bin/mongod --dbpath /data/mongodb/ --replSet test --smallfiles --oplogSize 128 /usr/local/mongodb/bin/mongod --dbpath /data/mongodb/ --replSet test --smallfiles --oplogSize 128 #/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf 2.连接其中一个 mongodb shell /usr/local/mongodb/bin/mongo 3.配置自己为其中一个节点 rsconf = { _id: "test", members: [ { _id: 0, host: "192.168.1.204:27017" } ] } rs.initiate( rsconf ) 4.在主节点上添加其他节点(在mognodb shell中提示符为PRIMARY>) rs.add("192.168.1.204:27017") rs.addArb("192.168.1.201:27017") rs.remove("192.168.1.204:27017") 5.之后会自动重新选举一个新的主节点 6.使用配置文件的方法有配置文件中加入如下参数即可 replication: replSetName: "repltest" oplogSizeMB: 64 7.重新更新配置(更改主机,更改优先级) cfg = rs.conf(); cfg.members[1].priority = 2;(0为不能为主) cfg.members[0].hidden = true;(隐藏) cfg.members[0].slaveDelay = 3600;(延时秒) cfg.members[3].votes = 0;(无投票权) rs.reconfig(cfg); 注意: 1.配置好后从是不能提供读的需要使用命令开启(在从上执行) rs.slaveOk(); ===> db.getMongo().setSlaveOk() 2.主节点不允许直接优先级为0,应该先执行如下命令才能设置 rs.stepDown() 3.查看帮助 rs.help() 4.官方文档 http://docs.mongodb.org/manual/ 5.测试语句 db.foo.save({"id":123,"name":'liuyuanshijie'}); db.foo.find({"id":123}) 6.只有主能写,其他节点不可写,但可以设置为读 #配置时可以预先准备两个做主,配置完成后一个成为primary,另一个成为secondary #然后通过设置给较高的优先级,当主挂了后,从会立即接管成为主。 #这样就可以使用keepalived在两个机器上配置VIP来做成高可用。 #使用检测脚本来检测两个服务器上的mongodb服务是否可用。 7.mongodb集群(Shard) #主要功能是可以进行数据分片分散存储到各个机器 1.配置config server cat >>/usr/local/mongodb/configsvr.conf < systemLog: destination: file path: "/log/configsvr/configsvr.log" logAppend: true storage: dbPath: "/data/configsvr" mmapv1: smallFiles: true journal: enabled: true processManagement: fork: true pidFilePath: "/usr/local/mongodb/configsvr.pid" net: bindIp: 127.0.0.1,192.168.1.221 port: 20000 maxIncomingConnections: 1000000 http: enabled: true sharding: clusterRole: configsvr EOF mkdir -pv /log/configsvr/ /data/configsvr /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/configsvr.conf 2.配置mongos路由 cat >>/usr/local/mongodb/mongos.conf < systemLog: destination: file path: "/log/mongos/mongos.log" logAppend: true sharding: autoSplit: true configDB: 192.168.1.221:20000 chunkSize: 32 processManagement: fork: true pidFilePath: "/usr/local/mongodb/mongos.pid" net: bindIp: 127.0.0.1,192.168.1.221 port: 30000 maxIncomingConnections: 1000000 http: enabled: true EOF mkdir -pv /log/mongos/ /usr/local/mongodb/bin/mongos -f /usr/local/mongodb/mongos.conf 3.启动各个实例,或者配置replset sharding: clusterRole: shardsvr 4.添加shard到集群 #连接到mongos /usr/local/mongodb/bin/mongo --host 192.168.1.221 --port 30000 #添加shard sh.addShard( "192.168.1.222:27017" ) #如果是集群使用如下方法添加 sh.addShard( "rs1/lab1:27017,lab2:27017,lab3:27017" ) #如果不能添加先删除test数据库 use test db.dropDatabase(); #查看shard use admin db.runCommand( {listshards : 1 } ) 5.为数据库开启分片 sh.enableSharding("test") 或 use admin db.runCommand( { enableSharding: test } ) 6.测试 use admin db.runCommand({enablesharding:"test2"}); //声明test2库允许分片 db.runCommand( { shardcollection : "test2.books", key : { id : 1 } } ); //声明books表要分片 use test2 //切换到test2 db.stats(); //查看数据库状态 db.books.stats(); //查看表状态 #添加数据 for (var i = 1; i <= 20000; i++) db.books.save({id:i,name:"12345678",sex:"male",age:27,value:"test"}); db.books.stats(); //查看表状态 #一次插入2W条数据,5秒左右才能平衡,你可以db.book.stats(); #重复这个命令,你会发现数据流的变化。 8.mongo php扩展安装 http://pecl.php.net/package/mongo
标题名称:mongodb安装配置
网站地址:http://kswjz.com/article/poosoo.html
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流