Как установить MongoDB на Red Hat Enterprise, CentOS, Fedora или Amazon Linux

MongoDB – Документо-ориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц. Написана на языке C++. MongoDB — это горизонтально масштабируемая база данных, она не использует SQL или JOINы, поэтому обладает высокой производительностью. Все запросы сделаны в стиле JSON. Автовосстановление, шардинг и репликация в коробке.

MongoDB нужна в тех случаях, когда вы заранее знаете что будете хранить огромные массивы данных и в ближайшем будущем вам понадобится горизонтальное масштабирование данных, или иными словами шардинг. В этой статье мы рассмотрим только основы, а именно установку MongoDB на Red Hat Enterprise, CentOS, Fedora или Amazon Linux.

Пакеты из которых состоит MongoDB

  • mongodb-org – Этот пакет является мета-пакетом и поможет в установке других компонетнов.
  • mongodb-org-server – Этот пакет содержит непосредсвенно mongod демон, конфигурационные файлы и необходимые скрипты.
  • mongodb-org-mongos – Этот пакет содержит непосредсвенно mongod демон
  • mongodb-org-shell – Этот пакет содержит mongo shell.
  • mongodb-org-tools – Этот пакет содержит MongoDB утилиты: mongoimport bsondump, mongodump, mongoexport, mongofiles, mongoimport, mongooplog, mongoperf, mongorestore, mongostat, and mongotop.

Установка MongoDB

Для установки из репозитория, его необходимо добавить:

touch /etc/yum.repos.d/mongodb.repo
vim /etc/yum.repos.d/mongodb.repo
touch /etc/yum.repos.d/mongodb.repo
vim /etc/yum.repos.d/mongodb.repo

Туда записываем для 64-бит:

[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1

Для 32-бит:

[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686/
gpgcheck=0
enabled=1
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686/
gpgcheck=0
enabled=1

Проверяем что база данных на месте:

yum search mongodb-org
============================================ N/S Matched: mongodb-org =============================================
mongodb-org.i686 : MongoDB cross-platform document-oriented database system (metapackage)
mongodb-org-mongos.i686 : MongoDB sharding router
mongodb-org-server.i686 : MongoDB database server
mongodb-org-shell.i686 : MongoDB shell client
mongodb-org-tools.i686 : MongoDB tools
mongodb-org-unstable.i686 : MongoDB server, shell, sharding server and tools
mongodb-org-unstable-mongos.i686 : MongoDB sharding server
mongodb-org-unstable-server.i686 : MongoDB server and support scripts
mongodb-org-unstable-shell.i686 : MongoDB shell
mongodb-org-unstable-tools.i686 : MongoDB utilities
yum search mongodb-org
============================================ N/S Matched: mongodb-org =============================================
mongodb-org.i686 : MongoDB cross-platform document-oriented database system (metapackage)
mongodb-org-mongos.i686 : MongoDB sharding router
mongodb-org-server.i686 : MongoDB database server
mongodb-org-shell.i686 : MongoDB shell client
mongodb-org-tools.i686 : MongoDB tools
mongodb-org-unstable.i686 : MongoDB server, shell, sharding server and tools
mongodb-org-unstable-mongos.i686 : MongoDB sharding server
mongodb-org-unstable-server.i686 : MongoDB server and support scripts
mongodb-org-unstable-shell.i686 : MongoDB shell
mongodb-org-unstable-tools.i686 : MongoDB utilities

Устанавливаем мета-пакет:

sudo yum install mongodb-org -y
sudo yum install mongodb-org -y

Он в свою очередь подтянет остальные необходимые компоненты:

===================================================================================================================
 Package                             Arch                  Version                  Repository                Size
===================================================================================================================
Installing:
 mongodb-org                         i686                  2.6.1-2                  mongodb                  4.6 k
Installing for dependencies:
 mongodb-org-mongos                  i686                  2.6.1-2                  mongodb                  6.7 M
 mongodb-org-server                  i686                  2.6.1-2                  mongodb                  8.9 M
 mongodb-org-shell                   i686                  2.6.1-2                  mongodb                  4.2 M
 mongodb-org-tools                   i686                  2.6.1-2                  mongodb                   88 M
===================================================================================================================
 Package                             Arch                  Version                  Repository                Size
===================================================================================================================
Installing:
 mongodb-org                         i686                  2.6.1-2                  mongodb                  4.6 k
Installing for dependencies:
 mongodb-org-mongos                  i686                  2.6.1-2                  mongodb                  6.7 M
 mongodb-org-server                  i686                  2.6.1-2                  mongodb                  8.9 M
 mongodb-org-shell                   i686                  2.6.1-2                  mongodb                  4.2 M
 mongodb-org-tools                   i686                  2.6.1-2                  mongodb                   88 M

Если вы хотите установить какой-нибудь другой релиз, то ставим пакеты отдельно:

sudo yum install mongodb-org-2.6.1 mongodb-org-server-2.6.1 mongodb-org-shell-2.6.1 mongodb-org-mongos-2.6.1 mongodb-org-tools-2.6.1
sudo yum install mongodb-org-2.6.1 mongodb-org-server-2.6.1 mongodb-org-shell-2.6.1 mongodb-org-mongos-2.6.1 mongodb-org-tools-2.6.1

В этом нет необходимости, если вы хотите получить последнюю стабильную сборку.
Желательно отключить SELinux:

vim /etc/sysconfig/selinux
SELINUX=disabled
vim /etc/sysconfig/selinux
SELINUX=disabled

И выполнить перезагрузгу:

init 6
init 6

Добавить демон в автозагрузку:

chkconfig --level 235 mongod on
chkconfig --level 235 mongod on

Запустить демон:

/etc/init.d/mongod restart
/etc/init.d/mongod restart

Лог MongoDB базы данных:

cat /var/log/mongodb/mongod.log
cat /var/log/mongodb/mongod.log

Файл конфигурации MongoDB:

cat /etc/mongod.conf
cat /etc/mongod.conf

Если вы читали внимательно, то заметили, что в поставку MongoDB входит набор интересных утилит для мониторинга состояния базы данных:

Пример mongotop:

[root@centos ~]# mongotop
connected to: 127.0.0.1
 
                            ns       total        read       write              2014-05-18T01:15:06
          local.system.replset         0ms         0ms         0ms
          local.system.indexes         0ms         0ms         0ms
             local.startup_log         0ms         0ms         0ms
          admin.system.version         0ms         0ms         0ms
            admin.system.users         0ms         0ms         0ms
            admin.system.roles         0ms         0ms         0ms
          admin.system.indexes         0ms         0ms         0ms
[[email protected] ~]# mongotop
connected to: 127.0.0.1

                            ns       total        read       write              2014-05-18T01:15:06
          local.system.replset         0ms         0ms         0ms
          local.system.indexes         0ms         0ms         0ms
             local.startup_log         0ms         0ms         0ms
          admin.system.version         0ms         0ms         0ms
            admin.system.users         0ms         0ms         0ms
            admin.system.roles         0ms         0ms         0ms
          admin.system.indexes         0ms         0ms         0ms

Пример mongostat:

[root@centos ~]# mongostat
connected to: 127.0.0.1
insert  query update delete getmore command flushes mapped  vsize    res faults  locked db idx miss %     qr|qw   ar|aw  netIn netOut  conn       time
    *0     *0     *0     *0       0     1|0       0    80m   237m    26m      0 local:0.0%          0       0|0     0|0    62b     2k     1   04:14:58
    *0     *0     *0     *0       0     1|0       0    80m   237m    26m      0 local:0.0%          0       0|0     0|0    62b     2k     1   04:14:59
    *0     *0     *0     *0       0     1|0       0    80m   237m    26m      0 local:0.0%          0       0|0     0|0    62b     2k     1   04:15:00
[[email protected] ~]# mongostat
connected to: 127.0.0.1
insert  query update delete getmore command flushes mapped  vsize    res faults  locked db idx miss %     qr|qw   ar|aw  netIn netOut  conn       time
    *0     *0     *0     *0       0     1|0       0    80m   237m    26m      0 local:0.0%          0       0|0     0|0    62b     2k     1   04:14:58
    *0     *0     *0     *0       0     1|0       0    80m   237m    26m      0 local:0.0%          0       0|0     0|0    62b     2k     1   04:14:59
    *0     *0     *0     *0       0     1|0       0    80m   237m    26m      0 local:0.0%          0       0|0     0|0    62b     2k     1   04:15:00

Управляется MongoDB через mongodb-shell, что-бы попасть в него, наберите:

[root@centos ~]# mongo
MongoDB shell version: 2.6.1
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
Server has startup warnings:
2014-05-18T04:12:36.361+0300 [initandlisten]
2014-05-18T04:12:36.361+0300 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary.
2014-05-18T04:12:36.361+0300 [initandlisten] **       32 bit builds are limited to less than 2GB of data (or less with --journal).
2014-05-18T04:12:36.361+0300 [initandlisten] **       Note that journaling defaults to off for 32 bit and is currently off.
2014-05-18T04:12:36.361+0300 [initandlisten] **       See http://dochub.mongodb.org/core/32bit
2014-05-18T04:12:36.361+0300 [initandlisten]
[[email protected] ~]# mongo
MongoDB shell version: 2.6.1
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
Server has startup warnings:
2014-05-18T04:12:36.361+0300 [initandlisten]
2014-05-18T04:12:36.361+0300 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary.
2014-05-18T04:12:36.361+0300 [initandlisten] **       32 bit builds are limited to less than 2GB of data (or less with --journal).
2014-05-18T04:12:36.361+0300 [initandlisten] **       Note that journaling defaults to off for 32 bit and is currently off.
2014-05-18T04:12:36.361+0300 [initandlisten] **       See http://dochub.mongodb.org/core/32bit
2014-05-18T04:12:36.361+0300 [initandlisten]

Далее в mongodb-shell посмотреть список баз данных:

> show dbs
admin  (empty)
local  0.078GB
> show dbs
admin  (empty)
local  0.078GB

Больше информации обеспечит вызов в mongodb-shell:

help
help