Mongodb 安装方法

The name MongoDB was derived from Humongous DB.

It is an open source NoSQL database. MongoDB is developed and commercially supported by the company 10gen.

The focus of the MongoDB is on scalability and performance. MongoDB is a schema-free document-oriented database. This stores data as JSON objects. Unlike traditional SQL database, you don’t need to define a schema. The schema is embedded in the data document itself, making it easy for you to change the schema at anytime without worrying about changing any of the previous documents that are loaded. High performance and scalability are possible because there are no joins, and no multi-document transactions performed on MongoDB. This also provides replication across servers with the ability to fail-over automatically. You can also scale across servers for high availability.

This article is the 1st part in a series of articles on MongoDB.

Install MongoDB using YUM

Installing MongoDB using yum is fairly straight forward.

Setup 10gen Yum Repository

First, add 10gen Repository to your yum as shown below.

# vi /etc/yum.repos.d/10gen.repo

[10gen]

name=10gen Repository

baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64

gpgcheck=0

enabled=1

Note: The above is for a 64-bit system. If you are using 32-bit system, point the baseurl in the above file to http://downloads-distro.mongodb.org/repo/redhat/os/i686

Now, execute “yum info” to view the mongo-10gen and mongo-10gen-server packages.

# yum info mongo-10gen

Name        : mongo-10gen

Arch        : x86_64

Version     : 2.2.2

Release     : mongodb_1

Size        : 43 M

Repo        : 10gen

Summary     : mongo client shell and tools

URL         : http://www.mongodb.org

License     : AGPL 3.0

 

# yum info mongo-10gen-server

Name        : mongo-10gen-server

Arch        : x86_64

Version     : 2.2.2

Release     : mongodb_1

Size        : 6.7 M

Repo        : 10gen

Summary     : mongo server, sharding server, and support scripts

URL         : http://www.mongodb.org

License     : AGPL 3.0

Install Mongo Client and Server Packages

Install these two mongo-* packages as shown below.

# yum install mongo-10gen mongo-10gen-server

  Installing : mongo-10gen-2.2.2-mongodb_1.x86_64

  Installing : mongo-10gen-server-2.2.2-mongodb_1.x86_64

Verify mongod.conf file

This also installs the default /etc/mongod.conf file, and the startup script /etc/rc.d/init.d/mongod

The /etc/mongod.conf file contains the following default values. As you see here, the mongo database files will be created under /var/lib/mongo directory. If you want the DB files to be created under different directory, change the dbpath directory in mongod.conf file.

# cat /etc/mongod.conf

logpath=/var/log/mongo/mongod.log

logappend=true

fork = true

dbpath=/var/lib/mongo

pidfilepath = /var/run/mongodb/mongod.pid

Start MongoDB server

Start the mongod service as shown below.

# service mongod start

Starting mongod: forked process: 15968

all output going to: /var/log/mongo/mongod.log

child process started successfully, parent exiting

View the log files to make sure MongoDB started successfully. By default MongoDB server runs on port 27017.

# cat /var/log/mongo/mongod.log

Sat Jan 19 10:57:03 [initandlisten] MongoDB starting : pid=15968 port=27017 dbpath=/var/lib/mongo 64-bit host=centos

Sat Jan 19 10:57:03 [initandlisten] db version v2.2.2, pdfile version 4.5

Sat Jan 19 10:57:03 [initandlisten] git version: d1b43b61a5308c4ad0679d34b262c5af9d664267

Sat Jan 19 10:57:03 [initandlisten] build info: Linux ip-10-2-29-40 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_49

Sat Jan 19 10:57:03 [initandlisten] options: { config: "/etc/mongod.conf", dbpath: "/var/lib/mongo", fork: "true", logappend: "true", logpath: "/var/log/mongo/mongod.log", pidfilepath: "/var/run/mongodb/mongod.pid" }

Sat Jan 19 10:57:03 [initandlisten] journal dir=/var/lib/mongo/journal

Sat Jan 19 10:57:03 [initandlisten] recover : no journal files present, no recovery needed

Sat Jan 19 10:57:03 [websvr] admin web console waiting for connections on port 28017

Sat Jan 19 10:57:03 [initandlisten] waiting for connections on port 27017

Use Mongo Shell to connect to MongoDB

Type “mongo” to launch the mongo shell and connect to MongoDB to perform some database operation. This will display the “> ” prompt where you can type mongo client commands.

# mongo

MongoDB shell version: 2.2.2

connecting to: test

Welcome to the MongoDB shell.

>

The following command will insert a sample document into the MongoDB collection called “sites”. This is similar to “INSERT into” SQL command.

> doc1 = { name : "ramesh" };

> db.sites.insert( doc1 );

The following will display all the documents in the MongoDB “sites” collection. This is similar to the “SELECT * from” SQL command.

> db.sites.find()

{ "_id" : ObjectId("50f72809a8e3c7a3aba2bf15"), "name" : "ramesh" }

Install MongoDB from Source

If you like to install MongoDB from source, follow the steps mentioned below.

Install Pre-Reqs

Make sure gcc-c++, and glibc-devel package are already installed. MongoDB uses scons to build the source-code. So, make sure scons package is already installed.

# rpm -qa | egrep 'gcc-c++|glibc-devel|scons'

gcc-c++-4.4.6-4.el6.x86_64

glibc-devel-2.12-1.80.el6_3.6.x86_64

scons-2.0.1-1.el6.noarch

If you don’t have these pre-req, install it.

# yum install gcc-c++ glibc-devel scons

Download MongoDB

Go to MongoDB downloads page, and download the source code. The current stable version of MongoDB is 2.2.2.

Once you have the download link, you can also use wget to directly download the source code.

cd /usr/src

wget http://downloads.mongodb.org/src/mongodb-src-r2.2.2.tar.gz

tar xvfz mongodb-src-r2.2.2.tar.gz

cd mongodb-src-r2.2.2

Build MongoDB using Scons

Scons is similar to make. Type “scons all” to build the MongoDB from source.

Please note that when you execute “scons all”, it uses only one CPU and run only one job at a time to build the source code. So, it will be slow. If you want scons to use all the CPU and run multiple jobs while building, you should specify the number of jobs it should execute.

On my system, I have 8 cores. So, I executed “scons -j 8 all” as shown below to build.

# scons -j 8 all

scons: Reading SConscript files ...

scons version: 2.0.1

python version: 2 6 6 'final' 0

Checking whether the C++ compiler works(cached) yes

Checking for C header file unistd.h... (cached) yes

Checking whether clock_gettime is declared... (cached) yes

Checking for C library rt... (cached) yes

Checking for C++ header file execinfo.h... (cached) yes

Checking whether backtrace is declared... (cached) yes

Checking whether backtrace_symbols is declared... (cached) yes

Checking for C library pcap... (cached) no

Checking for C library wpcap... (cached) no

Checking if __malloc_hook is declared volatile... (cached) no

scons: done reading SConscript files.

..

Install file: "build/linux2/normal/mongo/test" as "test"

scons: done building targets.

Once you’ve build the source code, we should install it. Use “scons install” to install MongoDB. By default it will install it under /usr/local/bin. If you like to install MongoDB under a different directory, use “–prefix” option.

To install MongoDB under /opt/mongo directory, execute the following scons command.

# scons --prefix=/opt/mongo install

As you see below, it has installed MongoDB under /opt/mongo directory.

# ls -l /opt/mongo/

total 12

drwxr-xr-x. 2 root root 4096 Jan 19 13:33 bin

drwxr-xr-x. 3 root root 4096 Jan 19 13:33 include

drwxr-xr-x. 2 root root 4096 Jan 19 13:33 lib

Create /etc/mongod.conf file

Create the following configuration file which will be used by MongoDB server during startup.

# cat /etc/mongod.conf

logpath=/var/log/mongo/mongod.log

logappend=true

fork = true

dbpath=/var/lib/mongo

pidfilepath = /var/run/mongodb/mongod.pid

In the above file, the dbpath parameter indicates that when we start MongoDB database, it will create any required databases under /var/lib/mongo directory. You can change this path accordingly.

Create the directory refered by the dbpath.

# mkdir -p /var/lib/mongo

Start the MongoDB Daemon

Add /opt/mongo/bin/ to the PATH variable.

# export $PATH=$PATH:/opt/mongo/bin/

Start the mongodb as shown below by passing the config file location using -f option.

# mongod -f /etc/mongod.conf

forked process: 20127

all output going to: /var/log/mongo/mongod.log

child process started successfully, parent exiting

If you just use “mongod” without any argument, it will start the process in the foreground. When you close your terminal, your MongoDB server will also stop. So, make sure to execute mongod with -f option as shown above.

Verify the log files to make sure it started properly. By default MongoDB server runs on port 27017.

# cat /var/log/mongo/mongod.log

Sat Jan 19 13:48:44 [initandlisten] MongoDB starting : pid=20127 port=27017 dbpath=/var/lib/mongo 64-bit host=centos

Sat Jan 19 13:48:44 [initandlisten] db version v2.2.2, pdfile version 4.5

Sat Jan 19 13:48:44 [initandlisten] git version: nogitversion

Sat Jan 19 13:48:44 [initandlisten] build info: Linux centos 2.6.32-279.19.1.el6.x86_64 #1 SMP Wed Dec 19 07:05:20 UTC 2012 x86_64 BOOST_LIB_VERSION=1_49

Sat Jan 19 13:48:44 [initandlisten] options: { config: "/etc/mongod.conf", dbpath: "/var/lib/mongo", fork: "true", logappend: "true", logpath: "/var/log/mongo/mongod.log", pidfilepath: "/var/run/mongodb/mongod.pid" }

Sat Jan 19 13:48:44 [initandlisten] journal dir=/var/lib/mongo/journal

Sat Jan 19 13:48:44 [initandlisten] recover : no journal files present, no recovery needed

Sat Jan 19 13:48:44 [websvr] admin web console waiting for connections on port 28017

Sat Jan 19 13:48:44 [initandlisten] waiting for connections on port 27017

Use Mongo Shell to connect to MongoDB

Type “mongo” to launch the mongo shell and connect to MongoDB to perform some database operation. This will display the “> ” prompt where you can type mongo client commands.

# mongo

MongoDB shell version: 2.2.2

connecting to: test

Welcome to the MongoDB shell.

>

The following command will insert a sample document into the MongoDB collection called “sites”. This is similar to “INSERT into” SQL command.

> doc1 = { name : "ramesh" };

> db.sites.insert( doc1 );

The following will display all the documents in the MongoDB “sites” collection. This is similar to the “SELECT * from” SQL command.

> db.sites.find()

{ "_id" : ObjectId("50f72809a8e3c7a3aba2bf15"), "name" : "ramesh" }

In the next article of this series, we’ll explain several MongoDB commands with examples.

京ICP备11047313号-21