MongoDB在Linux下的安装及自动分片
分布式文档存储数据库 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 区别:只有在lin
分布式文档存储数据库 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
更多推荐
所有评论(0)