`
landyer
  • 浏览: 138609 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

MongoDB1.8安装、分布式自动分片(Auto-Sharding)配置备忘

阅读更多

原文地址:http://www.shubo.info/mongodb1-8%E5%AE%89%E8%A3%85%E3%80%81%E5%88%86%E5%B8%83%E5%BC%8F%E8%87%AA%E5%8A%A8%E5%88%86%E7%89%87auto-sharding%E9%85%8D%E7%BD%AE%E5%A4%87%E5%BF%98

 

 

MongoDB1.8安装、分布式自动分片(Auto-Sharding)配置备忘

2011 年 05 月 05 日No Comments

环境:

安装了centos5.6 64位系统的服务器两台,因为32位,mongodb限制数据库容量总和只能是2G左右

安装了apache2.2+php5.1环境,因为之后我们要运行mongodb的WEB管理程序RockMongo

两台服务器IP分别为192.168.1.11,192.168.1.22

安装MongoDB:

直接从官网下载(http://www.mongodb.org/downloads)Linux 64-bit版本,截至此文发布版本为1.8.1

wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.8.1.tgz

tar xvzf mongodb-linux-x86_64-1.8.1.tgz

cd mongodb-1.8.1

里面有很多文件mongodb相关文件

其中我们接下来用到的几个为

mongod:MongoDB主进程,可以以shard server、config server等方式启动

mongos:MongoDB路由进程,配置了Auto-Sharding的服务器,通过这个路由进程来管理各种请求,类似一个透明代理。

mongo:MongoDB客户端工具,可以在服务器上进行命令行方式的维护

其他程序文件请自行google或者看官方文档,应该是有一些导入导出,数据库修复等程序。

注意:建议通过ln -s /root/mongodb/bin/mongod /usr/bin/mongod进行软链接,这样方便后面的操作

启动Mongodb相关进程,为做配置准备

注:这里可以是像我这样的两台或多台服务器,如果服务器资源有限,也可以用单机启动不同端口的进程来做测试

首先分别在11,22服务器上启动shardsvr进程

mongod --shardsvr --dbpath=/home/mongodb/data/ --logpath=/home/mongodb/log/shardsvr_logs.txt --logappend &

启动信息会存入我们指定的日志文件,启动成功信息如下:

Thu May  5 23:54:41 [initandlisten] MongoDB starting : pid=10172 port=27018 dbpath=/home/mongodb/data/ 64-bit

Thu May  5 23:54:41 [initandlisten] db version v1.8.1, pdfile version 4.5

Thu May  5 23:54:41 [initandlisten] git version: a429cd4f535b2499cc4130b06ff7c26f41c00f04

Thu May  5 23:54:41 [initandlisten] build sys info: Linux bs-linux64.10gen.cc 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_41

Thu May  5 23:54:41 [initandlisten] waiting for connections on port 27018

Thu May  5 23:54:41 [websvr] web admin interface listening on port 28018

可以看到这里shardsvr默认端口为27018

接下来在11服务器上启动configsvr

mongod --configsvr --dbpath=/home/mongodb/config_db/ --repairpath=/home/mongodb/config_repair_db/ --logpath=/home/mongodb/log/configsvr_logs.txt --logappend &

启动成功也会写入日志文件,日志内容类似上面的,不指定端口的情况下configsvr的默认端口为27019

然后我们在11服务器上启动mongos路由进程:

mongos --configdb 192.168.1.11:27019 --logpath=/home/mongodb/log/mongos_logs.txt --logappend &

这里--configdb指定的IP和端口为configsvr所在服务器的IP和端口,mongos进程默认端口为27017,客户端的一些操作只要通过连接mongos就可以任何操作,只要配置好了,后端的一些分布式分片存储等逻辑,MongoDB会自动帮你完成。

部署RockMongo到服务器上

首先到这里下载http://pecl.php.net/package/mongo php mongo扩展

wget http://pecl.php.net/get/mongo-1.1.4.tgz

tar mongo-1.1.4.tgz

cd mongo-1.1.4

phpize    //如果命令不能用请yum install php-dev

./configure

make && make install

修改/etc/php.ini

追加extension = "mongo.so"

然后重启apache就可以了 service httpd restart

接着从http://code.google.com/p/rock-php/downloads/list下载解压就可以用了,默认帐号密码为admin admin

部署完以后创建demo数据库,管理界面很简单,一看你就懂了。

配置自动分片(Auto_Sharding):

用mongo shell连接mongos进程进行配置管理

mongo 192.168.1.11:27017

>show dbs   //显示所有database

admin

config

>use admin  //切换到admin数据库进行相关配置

switched to db admin

>db.runCommand({addshard:"192.168.1.11:27018"});  //添加shard节点1

{ "shardAdded" : "shard0000", "ok" : 1 }

> db.runCommand({addshard:"127.0.0.1:27018"}) //添加shard节点2

{ "shardAdded" : "shard0001", "ok" : 1 }

>db.runCommand({enableSharding:"demo"}); //为数据库DEMO启用sharding

{ "ok" : 1 }

>db.runCommand({shardcollection:"demo.iptables",key:{_id:1}}); //设置为哪个文档设置自动分区。这里需要区分一个概念,MongoDB的自动分区是针对文档进行的,不设置的文档默认存储在单节点上

{ "collectionsharded" : "demo.iptables", "ok" : 1 }

>use demo

>for (var i=1; i<=100000; i++) db.iptbales.save({"ip":"127.0.0.1"});//循环插入10W测试数据

这个过程可能需要几秒的时间,完成了会出现箭头>

接着你可以通过db.stats();命令来查看分区存储情况,下面是我的一个截图

如果你只看到一个节点,请重复执行几次测试数据存入语句,应该就可以了。

至此简单的Auto-Sharding配置完成,如果此次在项目中试用mongodb成功,我会经常分享mongodb经验上来

分享到:
评论
2 楼 landyer 2011-09-04  
happinesss 写道
你是做java开发的吗

我是杂货铺,什么都开发的,最近在做 JAVA
1 楼 happinesss 2011-08-31  
你是做java开发的吗

相关推荐

Global site tag (gtag.js) - Google Analytics