Inicio » MongoDB » Instalar MongoDB en RedHat

Instalar MongoDB en RedHat

Instalar ModngoDB de forma manual, casi todos los documentos de MongoDB explican como instalarlo utilizando YUM (un instalado remoto), pero nosotros lo vamos a hacer de forma manual.

Lo primero que vamos a hacer es crear un nuevo usuario

Creación del Home del usuario

mkdir /users/mongod

Creación usuario y grupo:

groupadd mongod
useradd -u 503 -d /users/mongod -G mongod –c “User for MongoDB” mongod
passwd mongod
chage –M -1 mongod
chown mongod:mongod /users/mongod

Crear el .profile del usuario:

.bash_profile 
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
# User specific environment and startup programs
PATH= $HOME/bin:/opt/mongodata/bin
export PATH
# User specific environment and startup programs
export PATH

 

Directorios de instalación:

El software de MongoDB:    /opt/mongodata

Logs:  /var/opt/mongodata/log/mongo

Datos: /mongodata/db

Fichero de configuración: /etc/mongod.conf

Cambios en los parámetros del sistema operativo

ulimit  -u 32000
-u: processes
ulimit  -n  64000
-n: file descriptors

Desactivar el atime del volumen de almacenamiento donde se sitúen los ficheros de datos, la forma de hacer esto es editando el fichero /etc/fstab. Cuidado con el archivo /etc/fstab que puede fastidiar toda la máquina, es recomendable hacer una copia antes de tocarlo. Pongo abajo un ejemplo:

 Echo “/dev/md0/dataext4 defaults,auto,noatime,noexec 0 0” | sudo tee --‐a /etc/fstab 
vi /etc/fstab
/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
/dev/VolGroup00/LogVol03 /opt                    ext3    defaults        1 2
/dev/VolGroup00/LogVol02 /var                    ext3    defaults, noatime        1 2
/dev/VolGroup00/LogVol04 /usr                    ext3    defaults        1 2
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0

 

Vamos a instalar los siguientes paquetes

mongo-10gen (mongo-10gen-2.2.2-mongodb_1.x86_64)

Pasos para instalarlo

su – root
cd /opt
cp mongo-10gen-2.2.2-mongodb_1.x86_64.rpm  /opt/.
cd /opt
rpm –ihv mongo-10gen-2.2.2-mongodb_1.x86_64.rpm

Este paquete contiene las herramientas  MongoDB de la última versión estable. Se debe instalar en todas las máquinas de producción y opcionalmente en los sistemas donde se necesite administrar los sistemas MongoDB.

Este paquete contiene los siguientes ficheros y los instala en el siguiente path:

rpm -ql mongo-10gen-2.2.2-mongodb_1
/usr/bin/bsondump
/usr/bin/mongo
/usr/bin/mongodump
/usr/bin/mongoexport
/usr/bin/mongofiles
/usr/bin/mongoimport
/usr/bin/mongooplog
/usr/bin/mongoperf
/usr/bin/mongorestore
/usr/bin/mongostat
/usr/bin/mongotop
/usr/share/man/man1/bsondump.1
/usr/share/man/man1/mongo.1
/usr/share/man/man1/mongodump.1
/usr/share/man/man1/mongoexport.1
/usr/share/man/man1/mongofiles.1
/usr/share/man/man1/mongoimport.1
/usr/share/man/man1/mongorestore.1
/usr/share/man/man1/mongostat.1

 

mongo-10gen-server  (mongo-10gen-server-2.2.2-mongodb_1.x86_64)

cp mongo-10gen-server-2.2.2-mongodb_1.x86_64.rpm /opt
cd /opt
rpm -ihv mongo-10gen-server-2.2.2-mongodb_1.x86_64.rpm

Este paquete contiene los demonios mongod  y mongos  de las últimas versiones y sus scripts de configuración asociados. Este paquete crea los siguientes ficheros en los siguientes directorios:

/etc/mongod.conf
/etc/rc.d/init.d/mongod
/etc/sysconfig/mongod
/usr/bin/mongod
/usr/bin/mongos
/usr/share/man/man1/mongod.1
/usr/share/man/man1/mongos.1
/var/lib/mongo
/var/log/mongo
/var/log/mongo/mongod.log

 

Una vez instalado,  encontraremos las siguientes aplicaciones:

|–bin

| |–mongo                 El Shell de la base de datos

| |–mongos                Proceso de auto-sharding

|.|–mongod                El core del servidor de base de datos

| |–mongodump                    dump/export utilidad

| |–mongorestore          restore/import utilidad

|.|–bsondump              Convierte los fichero BSON en un formato legible.

| |–mongoexport           Obtiene un export en JSON o CSV de los datos almacenados en la instancia de MongoDB

| |–mongofiles

| |–mongoimport           Es una manera de cargar los ficheros creados son  mongoexport

| |–mongooplog            Es la herramienta que se encarga de la  replicación desde un servidor remoto, y la                                aplicación de los oplog en el servidor local.

| |–mongoperf                    Es un utilidad para comprobar el rendimiento del disco

| |–mongostat                    Da un rápido verificación del funcionamiento de mongod y mongos

| |–mongotop              Permite comprobar el tiempo que emplea la instancia en leer y escribir datos.

Cambiar los permisos del fichero de configuración:

su – root
chown -R mongod:mongoda /etc/mongod.conf

 

Modificar el fichero de configuración:

Ejemplo de fichero de configuración

# #where to log
logpath=/var/opt/mongodata/log/mongo/mongod.log
logappend=true
smallfiles=true
# fork and run in background
fork = true
#port = 27017
dbpath=/mongodata/db
# location of pidfile
pidfilepath = /var/opt/mongodata/run/mongodb/mongod.pid

# Disables write-ahead journaling
# nojournal = true

# Enables periodic logging of CPU utilization and I/O wait
#cpu = true

# Turn on/off security.  Off is currently the default
#noauth = true
#auth = true

# Verbose logging output.
#verbose = true

# Inspect all client data for validity on receipt (useful for
# developing drivers)
#objcheck = true

# Enable db quota management
#quota = true

# Set oplogging level where n is
#   0=off (default)
#   1=W
#   2=R
#   3=both
#   7=W+some reads
#diaglog = 0

# Ignore query hints
#nohints = true

# Disable the HTTP interface (Defaults to localhost:27018).
nohttpinterface = true

# Turns off server-side scripting.  This will result in greatly limited
# functionality
#noscripting = true

# Turns off table scans.  Any query that would do a table scan fails.
#notablescan = true

# Disable data file preallocation.
#noprealloc = true

# Specify .ns file size for new databases.
# nssize = <size>

# Accout token for Mongo monitoring server.
#mms-token = <token>

# Server name for Mongo monitoring server.
#mms-name = <server-name>

# Ping interval for Mongo monitoring server.
#mms-interval = <seconds>

# Replication Options

# in replicated mongo databases, specify here whether this is a slave or master
#slave = true
#source = master.example.com
# Slave only: specify a single database to replicate
#only = master.example.com
# or
#master = true
#source = slave.example.com
[root@RH-FE-8 ~]#

.

Opciones con las que vamos a arrancar el servicio:

config: “/etc/mongod.conf”,

dbpath: “/mongodata/db”,

Es el directorio donde se van a almacenar los datos

fork: “true”,

Default: false

Permite ejecutar el mongod en background.

logappend: “true”,

Default: false

Va escribiendo siempre por el mismo archive de log.

logpath: “/var/opt/mongodata/log/mongo/mongod.log”

Path donde se situa los logs.

pidfilepath: “/var/opt/mongodata/run/mongodb/mongod.pid”,

Default: None.

Especifica el ligar donde se va almacenar el PID o el  process ID  del mongod. Util para rastrear el proceso mongod en la opción de fork=true

smallfiles: “true

Default: false

Reduce el tamaño inicial de los ficheros de datos, los limita a 512 megabytes. Tambien reduce el tamaño de cada journal file de 1 gigabyte a 128 megasbyte.

Si hay gran cantidad de datos se puede afectar el rendimiento de la base de datos.

keyFile:/srv/mongodb/keyfile

Para activar la autentificación entre los componentes del set de réplica.

nohttpinterface : true

Disable the HTTP interface

Crear el servicio linux para el MongoDB:

1. Añadir el fichero de parada y arranque automático, tiene que ir en esta ruta /etc/rc.d/init.d/mongod:

En /etc/rc.d/init.d/mongod

#!/bin/bash

 # mongod - Startup script for mongod

# chkconfig: 35 85 15

# description: Mongo is a scalable, document-oriented database.

# processname: mongod

# config: /etc/mongod.conf

# pidfile:/var/opt/mongodata/run/mongodb/mongod.pid

 

. /etc/rc.d/init.d/functions

 

# things from mongod.conf get there by mongod reading it

 

 

# NOTE: if you change any OPTIONS here, you get what you pay for:

# this script assumes all options are in the config file.

CONFIGFILE="/etc/mongod.conf"

OPTIONS=" -f $CONFIGFILE"

SYSCONFIG="/etc/sysconfig/mongod"

 

# FIXME: 1.9.x has a --shutdown flag that parses the config file and

# shuts down the correct running pid, but that's unavailable in 1.8

# for now.  This can go away when this script stops supporting 1.8.

DBPATH=`awk -F= '/^dbpath=/{print $2}' "$CONFIGFILE"`

PIDFILE=`awk -F= '/^dbpath\s=\s/{print $2}' "$CONFIGFILE"`

mongod=${MONGOD-/opt/mongodata/bin/mongod}

 

MONGO_USER=mongod

MONGO_GROUP=mongod

 

if [ -f "$SYSCONFIG" ]; then

    . "$SYSCONFIG"

fi

 

# Handle NUMA access to CPUs (SERVER-3574)

# This verifies the existence of numactl as well as testing that the command works

NUMACTL_ARGS="--interleave=all"

if which numactl >/dev/null 2>/dev/null && numactl $NUMACTL_ARGS ls / >/dev/null 2>/dev/null

then

    NUMACTL="numactl $NUMACTL_ARGS"

else

    NUMACTL=""

fi

 

start()

{

  echo -n $"Starting mongod: "

  daemon --user "$MONGO_USER" $NUMACTL $mongod $OPTIONS

  RETVAL=$?

  echo

  [ $RETVAL -eq 0 ] && touch /var/lock/subsys/mongod

}

 

stop()

{

  echo -n $"Stopping mongod: "

  killproc -p "$PIDFILE" -d 300 /opt/mongodata/bin/mongod

  RETVAL=$?

  echo

  [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/mongod

}

 

restart () {

        stop

        start

}

 

ulimit -n 12000

RETVAL=0

 

case "$1" in

  start)

    start

    ;;

  stop)

    stop

    ;;

  restart|reload|force-reload)

    restart

    ;;

  condrestart)

    [ -f /var/lock/subsys/mongod ] && restart || :

    ;;

  status)

    status $mongod

    RETVAL=$?

    ;;

  *)

    echo "Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"

    RETVAL=1

esac

 

exit $RETVAL

 

2. Añadir los servicios:

                  chkconfig --add mongod
                  chkconfig --level 345 mongod on

 

 

 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s