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

来源:互联网 发布:6级听力 知乎 编辑:程序博客网 时间:2024/04/28 05:15

分布式文档存储数据库 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

原创粉丝点击