mongodb安装配置
admin
2023-04-11 19:24:01
0

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


  

  


相关内容

热门资讯

魏平政出线几率高!国民党整合拼... 海峡导报综合报道 国民党迟未公布彰化县长人选,地方盛传,周三国民党中常可能会有答案,引发关注。对此,...
人均奖金600万,知道内存为什... 唯物的中国芯片产业深度观察AI带动存储狂飙,韩国存储大厂SK海力士也跟着起飞。近日,有投行预测其年终...
“洪迪厄斯”号邮轮最后一批转运... △当地时间5月11日,荷兰埃因霍温,身着防护服的人员在机场载有“洪迪厄斯”号乘客和船员的飞机旁工作当...
特朗普当场问:谁喜欢万斯?谁喜... 美国副总统万斯和国务卿鲁比奥谁会成为2028年共和党总统候选人备受关注,总统特朗普5月11日在白宫的...
实探杭州“被电商拉黑”街道:随... 据扬子晚报报道,5月6日,一名网友在社媒发帖称,自己在某电商平台看中了一款商品,商品界面却显示其地址...
大连女子烧烤店内用铁签喂狗,十... 5月11日,一段网传视频显示,女子让宠物狗坐在辽宁大连一家烧烤店的卡座上,并用铁签将肉串喂给宠物狗,...
沃尔核材获得实用新型专利授权:... 证券之星消息,根据天眼查APP数据显示沃尔核材(002130)新获得一项实用新型专利授权,专利名为“...
科技伦理审查助力人工智能产业高... 转自:证券日报     本报记者 郭冀川     随着AI(人工智能)技术迭代加速,相关伦理审查的重...
捷昌驱动获得实用新型专利授权:... 证券之星消息,根据天眼查APP数据显示捷昌驱动(603583)新获得一项实用新型专利授权,专利名为“...
2026云手机为什么这么火?这... 你是否也有过这样的念头:想试试云手机,但一看价格,月付几十甚至上百元,立马打了退堂鼓?又或者,你曾贪...