您的位置:首页 > 数据库 > Mongodb

MongoDB在Linux下的安装及自动分片

2013-11-05 21:39 405 查看
分布式文档存储数据库 MongoDB 现在真是火了。 去年曾经应云计算那边的要求,小试过一把。 

不过当时测试时1.8.1版,现在都2.4版了,只能说NoSQL发展太快了。

 

 mongodb提供两个下载版本: mongodb-linux-x86_64-1.8.1.tgz 和 mongodb-linux-x86_64-static-legacy-1.8.1.tgz

  区别:只有在linux是老系统,mongodb无法启动时,或者出现浮点数异常,才使用"legacy static"版, 

             尽可能使用mongodb-linux-x86_64-1.8.1.tgz

--==========================================================================================================

--新增用户和所属组

groupadd mongodb

useradd -g mongodb mongodb

[root@localhost ~]# mkdir -p /data/db/m_data

[root@localhost ~]# chown -R mongodb:mongodb /data/db*

tar zxvf mon*.tgz

--tar zxf mongodb-linux-x86_64-static-legacy-1.8.1.tgz -C /usr/local/mongodb

--==========================================================================================================

/data/mongodbexe/bin

--启动

/data/mongodbexe/bin/mongod --dbpath /data/db  --logpath /data/db/log/xclmongo.log --fork

--进入shell

/data/mongodbexe/bin/mongo

--==========================================================================================================

--==========================================================================================================

--安装相应的服务 

vi /etc/rc.local

/data/mongodbexe/bin/mongod --dbpath /data/db  --logpath /data/db/log/xclmongo.log  --logappend --fork run

--  --port 27017

/data/mongodbexe/bin/mongod --dbpath /data/db --fork --logpath /data/db/log/xclmongo.log --logappend run

--==========================================================================================================

/data/mongodbexe/bin/mongod --dbpath /data/db --fork --logpath /data/db/log/xclmongo.log --logappend run

--==========================================================================================================

Using MongoDB

Among the tools included in the mongo-10gen package, is the mongo shell. You can connect to your MongoDB instance by issuing the following command at the system prompt:

mongo

This will connect to the database running on the localhost interface by default. At the mongo prompt, issue the following two commands to insert a record in the “test” collection of the (default) “test” database and then retrieve that document.

> db.test.save( { a: 1 } )

> db.test.find()

--==========================================================================================================

--命令方式

>use admin

switched to db admin

>db.shutdownServer()

进程方式

ps –aef | grep mongod

kill -2 <PID>

--关闭

kill -15 pid

--或:

[root@localhost ~]# /data/mongodbexe/bin/mongo

MongoDB shell version: 2.0.7

connecting to: test

> shutdown

Tue Aug 21 13:43:38 ReferenceError: shutdown is not defined (shell):1

> use admin;

switched to db admin

> db.shutdownServer();

Tue Aug 21 13:44:02 DBClientCursor::init call() failed

Tue Aug 21 13:44:03 query failed : admin.$cmd { shutdown: 1.0 } to: 127.0.0.1

server should be down...

Tue Aug 21 13:44:03 trying reconnect to 127.0.0.1

Tue Aug 21 13:44:03 reconnect 127.0.0.1 failed couldn't connect to server 127.0.0.1

Tue Aug 21 13:44:03 Error: error doing query: unknown shell/collection.js:151  

>

 --'

--==========================================================================================================

[root@localhost bin]# /data/mongodbexe/bin/mongod --dbpath /data/db --fork --logpath /data/db/log/xclmongo.log --logappend

all output going to: /data/db/log/xclmongo.log

forked process: 20946

[root@localhost bin]# ./mongo

MongoDB shell version: 2.0.7

connecting to: test

Tue Aug 21 13:33:24 Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84  --'

exception: connect failed

--==========================================================================================================

自动分片   路由进程 mongos

 知道所有数据的存放位置,所以应用可以连接它来正常发送请求

  客户连接mongod进程

  

 /data/mongodbexe/bin/mongod 

 mkdir -p /data/dbs/config

 chown -R mongodb:mongodb /data/dbs/config

 

 --启动服务器

 /data/mongodbexe/bin/mongod --dbpath /data/dbs/config --port 20000  --logpath /data/db/log/xclmongo.log  --logappend --fork run

 

 --建立mongos进程,以供应用程序连接

 /data/mongodbexe/bin/mongos --port 30000 --configdb localhost:20000

 

 --添加片

   mkdir -p /data/dbs/shard1

 /data/mongodbexe/bin/mongod --dbpath /data/dbs/shard1 --port 10000  --logpath /data/db/log/xclmongo.log  --logappend --fork run

  

 --现在.连接刚才启动的mongos,为集群添加一个片

 ./mongo localhost:30000/admin

 --确定是连接的mongos 而不是mongod 后,就可以通过addshard命令添加片了

 db.runCommand({addshard : "localhost:10000",allowLocal : true})

 {
"added" : "localhost:10000",
"ok" : true

 }

 --想添加片时,就运行addshard.  MongoDB会负责将片集成到集群

 

 ----切分数据

  -- 分片要先在数据库和集合级别将分片功能打开. 以"_id" 为基准切分foo数据库的bar集合.

  db.runCommand({"enablesharding" : "foo"})

  -- 内部的集合会存储到不同的片上.

  

  --上面二步是在库和集合级别打开分片功能,现在对集合进行分片 

  db.runCommand({"shardcollection" : "foo.bar","key" : {"_id" : 1}})

    -- 就会依"_id"分片了,即"_id"的值自动分散到各个片上.

--====================================================  

MAIL:xcl_168@aliyun.com

我的CSDN BLOG: http://blog.csdn.net/xcl168
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MongoDB 数据分片 NoSQL