MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
MongoDB是NoSQL中的一种,随着越来越多公司产品使用,已经开始逐步取代一些高性能查询的地位了。
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
面向集合存储,易存储对象类型的数据。
模式自由。
支持动态查询。
支持完全索引,包含内部对象。
支持查询。
支持复制和故障恢复。
使用高效的二进制数据存储,包括大型对象(如视频等)。
自动处理碎片,以支持云计算层次的扩展性
支持RUBY,PYTHON,JAVA,C++,PHP等多种语言。
文件存储格式为BSON(一种JSON的扩展)
可通过网络访问
######### 安装过程 ##########
[root@master yunwei]# wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.3.tgz [root@master yunwei]# tar zxf mongodb-linux-x86_64-3.0.3.gz -C /usr/local/ [root@master yunwei]# cd /usr/local [root@master local]# ln -s mongodb-linux-x86_64-3.0.3 mongodb [root@master local]# ll lrwxrwxrwx 1 root root 26 Jun 15 10:26 mongodb -> mongodb-linux-x86_64-3.0.3 [root@master local]# cd mongodb [root@master mongodb]# ll total 68 drwxr-xr-x 2 root root 4096 Jun 15 10:26 bin -rw-r--r-- 1 1046 1046 34520 May 12 05:35 GNU-AGPL-3.0 -rw-r--r-- 1 1046 1046 1359 May 12 05:35 README -rw-r--r-- 1 1046 1046 22660 May 12 05:35 THIRD-PARTY-NOTICES
bin下的mongod就是MongoDB的服务端进程,mongo就是其客户端,其它的命令用于MongoDB的其它用途如MongoDB文件导出等。
2、 启动MongoDB、要先建立好MongoDB 存放数据文件和日志文件的目录:
[root@master mongodb]# pwd /mysqldata/mongodb [root@master mongodb]# ll total 8 drwxr-xr-x 2 root root 4096 Jun 15 14:27 db # 存放db数据的文件 drwxr-xr-x 2 root root 4096 Jun 15 14:28 log # 存放mongodb的日志文件 [root@master mongodb]# cd log [root@master log]# pwd /mysqldata/mongodb/log [root@master log]# ll total 4 -rw-r--r-- 1 root root 2440 Jun 15 15:06 mongodb.log -rw-r--r-- 1 root root 0 Jun 15 15:05 mongodb.log.2015-06-15T07-06-06
3、在MongoDB安装目录下的bin下使用mongod启动MongoDB;
第一种命令启动: [root@master mongodb]# cd bin/ [root@master bin]# ll total 116340 -rwxr-xr-x 1 1046 1046 4305912 May 12 05:35 bsondump -rwxr-xr-x 1 1046 1046 11694552 May 12 05:43 mongo -rwxr-xr-x 1 1046 1046 22349960 May 12 05:43 mongod -rwxr-xr-x 1 1046 1046 6199144 May 12 05:35 mongodump -rwxr-xr-x 1 1046 1046 6001840 May 12 05:35 mongoexport -rwxr-xr-x 1 1046 1046 5956232 May 12 05:35 mongofiles -rwxr-xr-x 1 1046 1046 6211952 May 12 05:35 mongoimport -rwxr-xr-x 1 1046 1046 5686856 May 12 05:35 mongooplog -rwxr-xr-x 1 1046 1046 22129448 May 12 05:43 mongoperf -rwxr-xr-x 1 1046 1046 6332464 May 12 05:35 mongorestore -rwxr-xr-x 1 1046 1046 10552760 May 12 05:43 mongos -rwxr-xr-x 1 1046 1046 5909928 May 12 05:35 mongostat -rwxr-xr-x 1 1046 1046 5769944 May 12 05:35 mongotop [root@master bin]# ./mongod --help # 可以使用--help查看mongodb的帮助文档 [root@master bin]# ./mongod --dbpath=/mysqldata/mongodb/db/ --logpath=/mysqldata/mongodb/log/mongodb.log --logappend --port=27017 --fork & [root@master log]# netstat -lanp | grep 27017 tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 2661/./mongod unix 2 [ ACC ] STREAM LISTENING 2420077 2661/./mongod /tmp/mongodb-27017.sock 第二种配置文件启动: mkdir /etc/mongodb cd /etc/mongodb vim mongodb.conf port=27017 #端口号 fork=true #以守护进程的方式运行,创建服务器进程 logpath=/mysqldata/mongodb/log/mongodb.log #日志输出文件路径 logappend=true #日志输出方式 dbpath=/mysqldata/mongodb/db #数据库路径 shardsvr=true #设置是否分片 maxConns=600 #数据库的最大连接数 启动: mongod -f /etc/mongodb/mongodb.conf
4、可以看到,已启动成功,现在使用mongo客户端访问一下该数据库,看到下面的就说明启动成功了(如果出现在些警告也没关系的)
[root@master bin]# ./mongo MongoDB shell version: 3.0.3 connecting to: test Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user > show dbs; local 0.078GB > use local; switched to db local > show tables; startup_log system.indexes > select * from system.indexes; 2015-06-15T15:23:16.469+0800 E QUERY SyntaxError: Unexpected identifier
############ MongoDB一些命令的使用 #############
[root@master bin]# ./mongo MongoDB shell version: 3.0.3 connecting to: test Welcome to the MongoDB shell. > db #查看所有数据库 local > show collections startup_log system.indexes > use mydb #直接use mydb 就可以创建mydb这个数据库 switched to db mydb > db mydb > db.user.save({name:‘Rod‘,age:30}) #新增数据 > for(var i=1;i<=10;i++) db.user.save({x:8,y:i}) #遍历插入10条数据 > db.user.find() { "_id" : ObjectId("557e8101e23d20a4115e493d"), "x" : 8, "y" : 1 } { "_id" : ObjectId("557e8101e23d20a4115e493e"), "x" : 8, "y" : 2 } { "_id" : ObjectId("557e8101e23d20a4115e493f"), "x" : 8, "y" : 3 } { "_id" : ObjectId("557e8101e23d20a4115e4940"), "x" : 8, "y" : 4 } { "_id" : ObjectId("557e8101e23d20a4115e4941"), "x" : 8, "y" : 5 } { "_id" : ObjectId("557e8101e23d20a4115e4942"), "x" : 8, "y" : 6 } { "_id" : ObjectId("557e8101e23d20a4115e4943"), "x" : 8, "y" : 7 } { "_id" : ObjectId("557e8101e23d20a4115e4944"), "x" : 8, "y" : 8 } { "_id" : ObjectId("557e8101e23d20a4115e4945"), "x" : 8, "y" : 9 } { "_id" : ObjectId("557e8101e23d20a4115e4946"), "x" : 8, "y" : 10 } > db.user.find({y:{$lt:5}}) #查询y小于5的数据 { "_id" : ObjectId("557e8101e23d20a4115e493d"), "x" : 8, "y" : 1 } { "_id" : ObjectId("557e8101e23d20a4115e493e"), "x" : 8, "y" : 2 } { "_id" : ObjectId("557e8101e23d20a4115e493f"), "x" : 8, "y" : 3 } { "_id" : ObjectId("557e8101e23d20a4115e4940"), "x" : 8, "y" : 4 } > db.user.findOne() #只查询第一条数据 { "_id" : ObjectId("557e8101e23d20a4115e493d"), "x" : 8, "y" : 1 }
二、mongodb主从复制配置
主从复制是mongodb最常用的复制方式,这种方式很灵活.可用于备份,故障恢复,读扩展等.最基本的设置方式就是建立一个主节点和一个或多个从节点,每个从节点要知道主节点的地址. 我们用两种方式来实现主从.
这里我们用一主一从实现mongodb的复制
配置文件方式:
1.主机
mongodb-master 10.48.255.244 master
mongodb-slave 10.48.255.243 slave
2.把以上安装过程应用于mongodb这两个主机,配置文件稍加改动
在mongodb-master上,配置文件增加
master=true oplogSize=2048 #类似于mysql的日志滚动,单位m
在mongodb-slave上,配置文件增加:
slave=true source=10.48.100.1:27017 #指定主mongodb server slavedelay=10 #延迟复制,单位为秒 autoresync=true #当发现从服务器的数据不是最新时,向主服务器请求同步数据
命令方式:
1)实验环境
主:192.168.0.14
从:192.168.0.64
2)时间同步
两台机器做时间同步
[root@zabbix_server src]# ntpdate time.windows.com
3)启动服务
master:192.168.0.14
启动命令
/usr/local/mongodb/bin/mongod --master --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork
slave:192.168.0.64
启动命令
/usr/local/mongodb/bin/mongod --slave --source 192.168.0.14:27017 --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork
原文地址:http://tanxw.blog.51cto.com/4309543/1662068 (安装)
主从:http://blog.chinaunix.net/uid-24250828-id-3770298.html
http://linuxme.blog.51cto.com/1850814/965184
原文地址:http://asaderas.blog.51cto.com/9344932/1714726