目录
MongoDB简介
MongoDB是一个开源的文档型数据库,使用C++写的NoSQL数据库。MongoDB是一个高性能,开源,模式自由(schema-free)的文档型数据库,它在许多场景下可用于替代传统的关系型数据库或键/值(key-value)存储方式。MongoDB具有以下特性:
面向集合的存储:适合存储对象及JSON形式的数据。
动态查询:MongoDB支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
完整的索引支持:包括文档内嵌对象及数组。MongoDB的查询优化器会分析查询表达式,并生成一个高效的查询计划。
查询监视:MongoDB包含一个监视工具用于分析数据库操作的性能。
复制及自动故障转移:MongoDB数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目标是提供冗余及自动故障转移。
高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)。
MongoDB的官方网站是http://www.mongodb.org/
安装MongoDB
下面我们在CentOS 6.5 x64系统上安装最新的MongoDB 2.6.4版。
要安装最新的64位MongoDB 2.6.4版,步骤如下:
系统约定
Centos-6.5下安装MongoDB
安装机器:192.168.15.237
上传位置:/usr/local/src
软件安装:/usr/local/mongodb
数据位置:/data/mongodb/data
日志位置:/data/mongodb/log
检查是否安装过mongodb
rpm -qa | grep mongodb service mongod status
关闭SElinux
vi /etc/selinux/config #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled #增加 :wq! #保存退出 reboot 重启系统使配置生效 或 setenforce 0 #使配置立即生效
配置防火墙
vi /etc/sysconfig/iptables #编辑 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 27017 -j ACCEPT #允许27017端口通过防火墙 :wq! #保存退出 /etc/init.d/iptables restart #重启防火墙使配置生效
安装mongodb
没有具体的安装步骤,解压到存放目录就好了
cd /usr/local/src wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.4.tgz
解压并把解压包bin目录中的文件全部移到/usr/local/mongodb/bin目录下面
tar -zxvf mongodb-linux-x86_64-2.6.4.tgz #解压 mv ./mongodb-linux-x86_64-2.6.4 /usr/local/mongodb #移动解压文件夹到MongoDB安装目录
创建符号链接,以便能在shell中直接使用mongodb的相关命令,此处也可以通过添加环境变量实现
ln -s /usr/local/mongo/bin/* /usr/local/bin/
创建数据库和日志的存储目录:
mkdir -pv /data/mongodb/data/ mkdir -pv /data/mongodb/log/
创建mongodb用户和mongodb用户组
groupadd mongodb useradd -g mongodb -s /usr/sbin/nologin mongodb
设置权限
chown -R mongodb:mongodb /usr/local/mongodb
启动服务器端
修改mongodb的数据库和日志存储位置,并设置mongodb为后台启动
/usr/local/mongodb/bin/mongod --port 27017 --fork --dbpath=/data/mongodb/data/ --logpath=/data/mongodb/log/mongodb.log --logappend -f /etc/mongod.conf
第一次启动的时候,需要指定--dbpath,以后再次启动的时候,不需要指定了,可直接这样启动
/usr/local/mongodb/bin/mongod --logpath=/data/mongodb/log/mongdb.log --fork
如果一定要指定db的路径的话,需要确保该路径是存在的,db的目录,在启动的时候,只需要指定一次就行,如果已经指定过一次,再次启动的时候,还指定dbpath的话,mongodb是启动不起来的,所以再次启动,一定要用上面的那条命令,只需指定logpath 就行,然后“--fork” ,后台启动
参数解释: 更详细的参数解释,请运行命令“mongod -h”查看帮助文档
--dbpath 数据库路径(数据文件) --logpath 日志文件路径 --master 指定为主机器 --slave 指定为从机器 --source 指定主机器的IP地址 --pologSize 指定日志文件大小不超过64M.因为resync是非常操作量大且耗时,最好通过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。 --logappend 日志文件末尾添加 --port 启用端口号 --fork 在后台运行 --only 指定只复制哪一个数据库 --slavedelay 指从复制检测的时间间隔 --auth 是否需要验证权限登录(用户名和密码)
查看是否启动成功
netstat -ntpl #查看MongoDB是否启动 或 ps aux |grep mongod # 查看mongodb进程 pstree -p | grep mongod
查看MongoDB日志
tail -f /data/mongodb/log/mongodb.log
即可对MongoDB的运行情况进行查看或排错了
杀掉mongod进程
pkill mongod 杀掉mongod进程,不能用kill -9杀掉mongod进程,否则就不能再启动 或者killall mongod
设置开机启动
设置开机启动也可通过下文的init.d脚本实现
echo "/usr/local/mongodb/bin/mongod --dbpath=/data/mongodb/data/ --logpath=/data/mongodb/log/mongdb.log --fork" >> /etc/rc.local
MongoDB测试
进入mongodb客户端: cd /usr/local/mongodb/bin/ #启动客户端,进入mongodb的shell模式 ./mongo #查看数据库列表 show dbs #切换/创建数据库(当创建一个集合(table)的时候会自动创建当前数据库) use admin; #增加用户 db.addUser("zhoulf ","123456",true) #更改密码(为已经存在的用户更改密码) db.addUser("zhoulf "," zhoulf "); #显示当前db状态 db.stats(); #当前db版本 db.version(); #删除当前使用数据库 db.dropDatabase(); #查看当前db的链接机器地址 db.getMongo(); #简单插入数据 db.user.insert({"fname":"zhoulf", "company":"navinfo"}) #循环插入数据 for (var i = 1; i < = 10; i++) db.user.save({ "fname" : "zhoulf"+i, "company" : "navinfo"+i }); #查询数据 db.user.find() #终止服务器进程 db.user.shutdownServer() exit #退出
到此安装已完成
设置MongoDB数据库
创建和配置mongodb.conf文件
在/usr/local/mongodb下新建mongodb.conf文件,mongodb支持把参数写进配置文件,然后以配置文件的配置来启动,我们此处也使用此方式。
cd /usr/local/mongodb/ #进入MongoDB安装目录 vi /usr/local/mongodb/mongodb.conf #编辑 port=27017 #端口号 dbpath=/data/mongodb/data/ #数据库路径 logpath=/data/mongodb/log/mongodb.log #日志输出文件路径 pidfilepath=/usr/local/mongodb/mongo.pid fork=true #以守护程序的方式启用,即在后台运行 logappend=true #日志输出方式,日志文件自动累加,而不是覆盖 shardsvr=true directoryperdb=true #auth=true #开启认证 :wq! #保存退出
通过init.d设置开机启动
vi /etc/rc.d/init.d/mongod #设置开机启动MongoDB #!/bin/sh # chkconfig: - 64 36 # description:mongod case $1 in start) /usr/local/mongodb/bin/mongod --config /etc/mongod.conf ;; stop) /usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.shutdownServer()" ;; status) /usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.stats()" ;; esac :wq! #保存退出 chmod +x /etc/rc.d/init.d/mongod #添加脚本执行权限 chkconfig mongod on #设置开机启动 service mongod start #启动MongoDB
添加环境变量
vi /etc/profile #添加环境变量,编辑,在最后一行添加下面的代码 export PATH=$PATH:/usr/local/mongodb/bin :wq! #保存退出 source /etc/profile #使配置立即生效 验证环境变量是否生效: $ mongod -version mongo #进入MongoDB控制台 show dbs #查看默认数据库 use admin #切换到admin数据库 exit #退出MongoDB控制台
常用命令行
mongod: MonoDB 服务端 mongo: MongoDB 客户端 mongoimport: 数据库导入工具 mongoexport: 数据导出工具 mongodump: 数据库备份工具 mongorestore: 数据库恢复工具 mongofiles: GridFS管理工具,可实现对二进制文件的存取 mongostat: 性能分析工具,类似与vmstat mongotop: 性能分析工具,查看mongodb实例读写时间花费 mongoperf: 性能分析工具 ,磁盘性能检查工具 mongos: MongoDB集群工具
管理工具
(类似phpmyadmin)
http://rockmongo.com/wiki/introduction?lang=zh_cn
下载解压修改config.php为对应的地址及端口,使用admin:admin访问即可。
PHP mongo扩展安装
安装扩展
服务器环境Cent OS 6.5 64位, php版本 5.3.3编译安装,安装路径/usr/local/php
首先下载最新的php mongodb扩展源码,源码可以在http://pecl.php.net/package/mongo下载到
cd /usr/local/src wget -c http://pecl.php.net/get/mongo-1.5.7.tgz tar -zxvf ./mongo-1.5.7.tgz cd ./mongo-1.5.7
进入文件夹后,首先运行phpize来准备编译扩展的环境,phpize这个程序的介绍在这里(phpize是什么及在Linux下用phpize给PHP动态添加扩展)
/usr/local/php/bin/phpize 运行后执行结果如下: Configuring for: PHP Api Version: 20041225 Zend Module Api No: 20060613 Zend Extension Api No: 220060519
运行后,./configure 脚本就会生成了,这个时候我们运行./configure脚本来进行配置
./configure -with-php-config=/usr/local/php/bin/php-config –with-php-config这个参数是告诉配置脚本php-config这个程序的路径,php-config的介绍在这里(php-config)
上面命令在正确配置的环境下运行结果如下
creating libtool appending configuration tag “CXX” to libtool configure: creating ./config.status config.status: creating config.h 这时用make来编译扩展 make && make install 正确编译执行结果如下: Build complete. Don’t forget to run ‘make test’. Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/ 完成后,请编辑你php.ini文件增加一行 extension=mongo.so 一般默认的编译php的ini文件在 /usr/local/php/etc/php.ini
重启你的web服务器或者php-fpm,打印phpinfo,如果看到mongo项表,那么mongodb的扩展安装成功了
官方安装文档:http://us2.php.net/manual/zh/mongo.installation.php#mongo.installation.nix
运行测试
建立一个php文档,输入
vi /var/www/html/mondb.php < ?php $m = new Mongo(); //connect $db = $m->test; //选择一个数据库(test) $collection = $db->foo; //选择一个collection(默认foo) $result = $collection->find(); foreach($result as $val){ print_r($val); } // disconnect $m->close(); ?>
浏览测试
http://192.168.11.39/mondb.php
PHP Mongo class的使用,参考官方手册:http://www.php.net/manual/en/class.mongo.php
参考资料:
安装相关
CentOS6.5_X64下安装配置MongoDB数据库:http://mnt.conf.blog.163.com/blog/static/11566825820144150842732/
设置相关
Centos安装MongoDB:http://blog.slogra.com/post-443.html
MongoDB的安装配置、基本操作及Perl操作MongoDB:http://www.myhack58.com/Article/60/63/2014/42353.htm
MongoDB介绍
MongoDB(维基百科):http://zh.wikipedia.org/wiki/MongoDB#cite_note-filelimit32bit-6
在CentOS下安装及测试MongoDB:http://blog.csdn.net/zyj8170/article/details/5956600
0 条评论。