服务器上MongoDB安装
1 下载MongoDB数据库,官网地址:http://www.mongodb.org/downloads
2 将下载好的安装包mongodb-linux-x86_64-2.4.9.tgz通过Xftp工具传到服务器上的特定目录下(如:/home/xp/usr/local)
3 将压缩包解压,tar xzvf mongodb-linux-x86_64-2.4.9.tgz
4 新建目录 mongodb 目录, 用来存放mongodb 数据库 和 日志文件
命令:
mkdir mongodb;
cdmongodb;
mkdir db; // 存放数据库的文件夹
mkdir log ; //存放数据库日志文件的文件夹
5 切换到解压好的 mongodb-linux-x86_64-2.4.9 目录下,进入 bin 目录
6 执行 mongod 程序,该程序用来启动MongoDB的数据库服务器
一般格式如下:
./mongod--dbpath=/home/xp/usr/local/mongodb/db
--logpath=/home/xp/usr/local/mongodb/log/MongoDB.log
--logappend
--port=27017
--fork
参数解释:
--dbpath:
数据库的数据目录,即新建的mongodb/db文件夹。
--port
端口号,默认端口号是27017。
--fork
以守护进程的方式运行MongoDB。
--logpath
指定日志输出路径,而不是输出到命令行。如果对文件夹有写权限的话,系统会在文件不存在时创建它。它会将已有文件覆盖掉,清除所有原来的日志记录。如果想保留原来的日志,还需要使用--logappend选项。
--logappend
以append方式添加日志到日志文件。
7 还可以设置开机自动启动。把启动mongodb的启动命令添加到/etc/rc.local即可,最好使用绝对路径。
8 Mongod 程序正常启动会出现:
about to fork child process, waiting untilserver is ready for connections.
forked process: 29517
all output going to: /home/xp/usr/local/mongodb-linux-x86_64-2.4.9/log
child process started successfully, parent exiting
9 测试mongod 是否成功启动。
检查端口是启动,端口为:27017
命令:netstat –lanp | grep 27017
在bin文件夹下,执行mongo查看安装是否成功。命令:./mongo
10 启动mongod过程中遇到的错误。Erro number 如果显示为 1 ,则说明 权限不够,需要切换到root,再启动mongod 程序。
11 常见mongodb数据库基本操作命令。
了解mongodb数据库基本操作命令最简单的办法是进入mongo shell 后打开帮助系统。
命令:
>help
>db.help()
常见的命令有:
1、show dbs
显示当前数据库服务器上的数据库
2、use my_mongodb
切换到指定数据库my_mongodb的上下文,可以在此上下文中管理my_mongodb数据库以及其中的集合等
3、show collections
显示数据库中所有的集合(collection)
4、db.serverStatus()
查看数据库服务器的状态
5、db.user.insert()
插入操作,对应关系数据库的insert操作。
数据批量导入MongoDB
虽然mongodb数据库提供了导入数据的工具mongoimport,但由于mongodb只支持JSON和BSON格式的数据,所以要将只是以空格符为分隔符的数据通过mongoimport 导入数据库是不可行的。解决办法是用脚本批量插入,缺点是时间长。
程序基本思路:1、连接数据库 2、对日志文件分析处理后逐条插入
脚本使用python编写,需要预先安装pymongo包。
其中很多输出显示不是必要的,可以删除。
源码:
#!/usr/bin/env python
#encoding:utf-8
###################################
# function: analysis the log in the '.' dir to JSON , and
#output the data to the MongoDB.
# data: 2014/3/31
#History: 1.0
###################################
import os
import pymongo
def connect_mongodb():
servers="mongodb://localhost:27017"
conn = pymongo.Connection(servers)
print conn.database_names()
db = conn.my_mongodb #连接库
return db
def str_process(string,db):
d={}
if string == '\n':
return
string2=str(string)
print '-----'+string
string2=string2.split(' ')
print '---------------'
print string2
for i in string2:
print i
print '------------'
string2[3].split('\n')
d['projectcode']=string2[0]
d['pagename']=string2[1]
d['pageview']=string2[2]
d['bytes']=string2[3][:-1]
db.user.insert(d)
def file_process(source_file,db):
string2=''
f=open(source_file,'r')
print 'file name :'+source_file
while True:
string2=f.readline()
if string2 == '':
break
string2=str_process(string2,db)
print string2
def get_dir_list(dir): #input the dir ,will output the all filename
dat0=[]
for i in os.listdir(dir):
dat0.append(i)
return dat0
def all_file_process():
dir_file_name=''
dir_list=[]
dir_file_name=raw_input('please input the dir name:')
dir_list=get_dir_list(dir_file_name)
print dir_list
db=connect_mongodb()
for i in dir_list:
if str(i) != 'log_file_process.py':
file_process(str(i),db)
all_file_process()
注意的地方:
用的环境是用Xshell 连接到服务器,而且脚本执行周期长,最好使程序在后台跑。
主要是可以防止网络掉线或关机,中断了数据的导入,导致需要重新执行程序。
命令:
nohup ./log_file_process.py &>/dev/null 2> &