MongoDB配置及php连接测试

MongoDB配置及php连接测试

  (2010-05-10 10:41:36)
标签: 

mongodb

 

php

 

杂谈

分类: 技术文章
MongoDB的auto-sharding功能是指mongodb通过mongos自动建立一个水平扩展的数据库集群系统,将数据库分表存储在sharding的各个节点上。
一个mongodb集群包括一些shards(包括一些mongod进程),mongos路由进程,一个或多个config服务器

Shards
每一个shard包括一个或多个服务和存储数据的mongod进程(mongod是MongoDB数据的核心进程)
典型的每个shard开启多个服务来提高服务的可用性。这些服务/mongod进程在shard中组成一个复制集

Chunks
Chunk是一个来自特殊集合中的一个数据范围,(collection,minKey,maxKey)描叙一个chunk,它介于minKey和maxKey范围之间。
例如chunks 的maxsize大小是100M,如果一个文件达到或超过这个范围时,会被切分到2个新的chunks中。当一个shard的数据过量时,chunks将会被迁移到其他的shards上。同样,chunks也可以迁移到其他的shards上

Config Servers
Config服务器存储着集群的metadata信息,包括每个服务器,每个shard的基本信息和chunk信息
Config服务器主要存储的是chunk信息。每一个config服务器都复制了完整的chunk信息。

配置:(模拟2个shard服务和一个config服务)
Shard1:192.168.11.37:27017
Shard2:192.168.11.39:27017
Config:192.168.11.40:27019
mongos: 192.168.11.41:27017
Mongos启动时默认使用的27017端口

启动服务
192.168.11.37
mkdir /data/db
cd /mnt/disk1/mongodb-linux-x86_64-1.4.2/bin
./mongod --shardsvr --dbpath /data/db > /tmp/mongodb.log &

192.168.11.39
mkdir /data/db
cd /mnt/disk1/mongodb-linux-x86_64-1.4.2/bin
./mongod --shardsvr --dbpath /data/db > /tmp/mongodb.log &

192.168.11.40
cd /mnt/disk1/mongodb-linux-x86_64-1.4.2/bin
./mongod --configsvr  --dbpath /data/db > /tmp/mongoconfigdb.log &

192.168.11.41
cd /mnt/disk1/mongodb-linux-x86_64-1.4.2/bin
./mongos --configdb 192.168.11.40:27019 > /tmp/mongoconfigdb.log &

检查服务状态
ps -ef|grep mongo
netstat -an  -t
开启的28017是对应的http接口

管理MongoDB
192.168.11.41
cd /mnt/disk1/mongodb-linux-x86_64-1.4.2/bin
./mongo   默认连接到mongos上
> show dbs
加入shard节点
> use admin
> db.runCommand( { addshard : "192.168.11.37:27018", allowLocal : true } )
> db.runCommand( { addshard : "192.168.11.39:27018", allowLocal : true } )
> db.runCommand({listshards:1});   查看shard节点列表
新建自动切片的库user001:
> config = connect("192.168.11.40:27019")
> config = config.getSisterDB("config")
> user001=db.getSisterDB("user001");
> db.runCommand({enablesharding:"user001"})
> db.printShardingStatus();
在user001中新建表,插入数据
> use user001
> db.createCollection("user_001")
> show collections
> db.user_001.insert({uid:1,username:"Falcon.C",sex:"男",age:25});
> db.user_001.find();
查看user001库分配到了哪个shard
192.168.11.37/39
cd /data/db
ls -l
可以看到user001被分配到了192.168.11.39的shard上了,但是通过mongos路由,我们并感觉不到是数据存放在哪个shard的chunk上

Sharding的管理命令
192.168.11.41
> db.$cmd.findOne({isdbgrid:1});     
> db.$cmd.findOne({ismaster:1});
> printShardingStatus(db.getSisterDB("config"))
> use admin
> db.runCommand({netstat:1})

php测试
vi mondb.php
<?php
$m = new Mongo("192.168.11.41");       //connect to mongs
$db = $m->user001;                     //选择一个数据库(user001)
$collection = $db->user_001;           //选择一个collection(user_001)
$result = $collection->find();
foreach($result as $val){
       print_r($val);
}

echo "<br><br>";

foreach($result as $val){
       echo "用户ID:".$val["uid"]."<br>";
       echo "用户姓名:".$val["username"]."<br>";
       echo "用户性别:".$val["sex"]."<br>";
       echo "用户年龄:".$val["age"]."<br>";
}
// disconnect
$m->close();
?>

http://192.168.11.37/mondb.php
显示结果:
Array ( [_id] => MongoId Object ( ) [uid] => 1 [username] => Falcon.C [sex] => 男 [age] => 25 ) 

用户ID:1
用户姓名:Falcon.C
用户性别:男
用户年龄:25 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值