环境:
安装了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经验上来
相关推荐
其中,分片(Sharding)是MongoDB中非常重要的分布式特性之一,它能够帮助数据库管理系统实现数据的水平扩展,以提升整个系统的处理能力和吞吐量。 分片概念的起源可以追溯到大型多人在线角色扮演游戏(MMORPG),...
在Linux环境下配置MongoDB的分布式分片群集是提升数据库性能和可扩展性的重要手段。本文将深入探讨如何在Linux操作系统上搭建和管理MongoDB的分片集群。 **一、MongoDB分片群集概述** 分片(Sharding)是MongoDB中...
在本篇中,我们将深入探讨MongoDB的中文API以及如何实施分布式分片,旨在帮助开发者更好地理解和应用这一强大的数据库技术。 一、MongoDB中文API详解 1. 连接与断开:MongoDB的中文API提供了连接数据库的方法,如`...
MongoDB的分布式分片群集(Sharding Cluster)是一种针对大数据量场景的高效扩展解决方案。在MongoDB中,分片(Sharding)是通过将数据分布在多台服务器上来实现水平扩展,以处理海量数据和高并发请求。这种架构通常...
- **分片(Sharding)**:指将数据分布在多个物理服务器上的技术,每个分片持有部分数据。这种设计可以有效提高系统的水平扩展能力,使得数据库能够应对海量数据的存储和处理。 - **分片集群**:由一个或多个分片...
k8s 安装 MongoDB 分片(Sharding)+ 副本集(Replica Set) k8s 安装 MongoDB 分片(Sharding)+ 副本集(Replica Set)是结合 Kubernetes(k8s)和 MongoDB 实现高可用性和高性能的解决方案。本解决方案通过使用 ...
- 配置环境变量:在`~/.bashrc`或`~/.bash_profile`文件中添加`export PATH=<mongodb-install-dir>/bin:$PATH`,然后运行`source ~/.bashrc`或`source ~/.bash_profile`。 - 启动MongoDB:`mongod --dbpath /data/...
MongoDB Community Server(mongodb-org-server-5.0.8-1.el7.x86_64.rpm)适用于RedHat / CentOS 7.0 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。...
总结来说,MongoDB的分片配置涉及到多个步骤,包括安装MongoDB、配置复制集、启动配置服务器和路由服务器,以及设置分片键和迁移数据。理解这些步骤和原理对于管理和维护大规模的MongoDB集群至关重要。
MongoDB Community Server(mongodb-org-server-5.0.4-1.el7.x86_64.rpm)适用于RedHat / CentOS 7.0 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。...
1. **安装MongoDB**:首先,确保在所有参与分片的机器上都安装了MongoDB,并启动单个实例进行测试。 2. **初始化配置服务器**:创建至少3个配置服务器实例,以确保高可用性。在每个配置服务器实例上运行 `mongod` ...
MongoDB Community Server(mongodb-windows-x86_64-5.0.8-signed.msi)适用于RedHat / CentOS 7.0 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 ...
这些问题的解决可以通过引入非关系型数据库,如MongoDB,并利用其分布式云存储架构的优势来实现。本文将介绍一种基于RFID技术和MongoDB融合的分布式云仓储管理系统,该系统针对现代商品仓储管理问题提供了一套解决...
3. 自动分片(Sharding):MongoDB的自动分片功能允许将大型数据集分散到多个服务器上,确保数据分布均匀,提高查询效率。 4. 复制集(Replication):通过复制集,MongoDB可以创建数据副本,以提高容错性和高可用...
MongoDB是一个开源、分布式、高性能的文档型数据库系统,它以JSON格式存储数据,支持丰富的查询语法和自动分片功能,适用于处理大量数据并需要高可用性和可扩展性的应用场景。这个压缩包“mongodb-linux-x86_64-...
在Linux环境下,MongoDB提供了针对不同操作系统版本的二进制发行包,如本例中的"mongodb-linux-x86_64-rhel70-4.4.20.tgz"。这个文件是为Red Hat Enterprise Linux 7.0 (RHEL 7.0)平台设计的64位版本的MongoDB ...
4. **分片查询优化**:在4.4版本中,MongoDB改进了分片查询的性能,特别是在处理大型数据集时。 5. **存储引擎选择**:MongoDB支持多种存储引擎,如MMAPv1、WiredTiger等。WiredTiger是默认引擎,提供更好的性能和...
- 分布式:MongoDB支持分布式部署,可以构建多节点复制集和分片集群,以实现高可用性和水平扩展。 - 文档型:MongoDB以BSON(二进制JSON)格式存储数据,这种格式既能保持JSON的易读性,又能提高存储效率。 - ...