Установка MongoDB в CentOS 7

MongoDB – это свободная и открытая документо-ориентированная база данных. Она относится к базам NoSQL, потому что в её основе не лежит традиционная реляционная структура базы данных. Вместо этого MongoDB использует JSON-подобные документы с динамическими схемами, которые можно редактировать в любой момент.

Данное руководство поможет установить MongoDB Community Edition на сервер CentOS 7.

Требования

  • Сервер CentOS 7.
  • Пользователь с доступом к команде sudo (создать такого пользователя можно с помощью этого руководства).

1: Добавление репозитория MongoDB

Пакета mongodb-org нет в официальном репозитории CentOS. Однако MongoDB поддерживает специальный отдельный репозиторий, который можно добавить.

С помощью текстового редактора создайте файл .repo для yum, пакетного менеджера CentOS.

sudo vi /etc/yum.repos.d/mongodb-org.repo

Откройте официальную документацию MongoDB (раздел Install on Red Hat) и добавьте в файл информацию о последнем стабильном релизе:

[mongodb-org-3.2] name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc

Сохраните и закройте файл.

Теперь нужно убедиться, что yum видит репозиторий MongoDB. Для этого используйте команду repolist.

yum repolist
...
repo id                          repo name
base/7/x86_64                    CentOS-7 - Base
extras/7/x86_64                  CentOS-7 - Extras
mongodb-org-3.2/7/x86_64         MongoDB Repository
updates/7/x86_64                 CentOS-7 - Updates
...

Репозиторий MongoDB Repository указан в этом списке.

2: Установка MongoDB

Установите пакет mongodb-org:

sudo yum install mongodb-org

После запуска команды появится два запроса:

Is this ok [y/N]:

Первый – это запрос на разрешение установки пакета MongoDB, а второй – на импортирование GPG-ключа для подтверждения целостности загруженных пакетов. Введите Y и нажмите Enter.

Запустите сервис MongoDB:

sudo systemctl start mongod

Примечание: Управлять сервисом можно с помощью команд reload (перезагрузка, при этом процесс mongod перечитывает конфигурационный файл /etc/mongod.conf) и stop (остановка сервиса).

sudo systemctl reload mongod
sudo systemctl stop mongod

Утилита systemctl не выводит на экран результатов команды start. Чтобы проверить состояние сервиса, просмотрите лог mongod.log с помощью команды tail.

sudo tail /var/log/mongodb/mongod.log
[initandlisten] waiting for connections on port 27017

Такой вывод значит, что база данных MongoDB была успешно запущена, теперь вы можете получить доступ к оболочке MongoDB.

mongo

Примечание: Во время запуска оболочки может появиться предупреждение:

** WARNING: soft rlimits too low. rlimits set to 4096 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files.

MongoDB является многопоточным приложением. Такое приложение может запускать дополнительные процессы для обработки рабочей нагрузки. Это предупреждение сообщает, что производительность MongoDB увеличится, если количество одновременно поддерживаемых процессов будет вдвое меньше, чем количество одновременно открытых файлов. Чтобы устранить ошибку, отредактируйте параметр processes в файле 20-nproc.conf.

sudo vi /etc/security/limits.d/20-nproc.conf

Добавьте в конец файла такую строку:


mongod soft nproc 32000

Перезапустите MongoDB:

sudo systemctl restart mongod

Попробуйте снова подключиться к оболочке. Предупреждение больше не появится.

Чтобы понять, как взаимодействовать с оболочкой, просмотрите вывод метода db.help(), который предоставляет вывод метода объектов db.

db.help()
DB methods:
db.adminCommand(nameOrDocument) - switches to 'admin' db, and runs command [ just calls db.runCommand(...) ] db.auth(username, password)
db.cloneDatabase(fromhost)
db.commandHelp(name) returns the help for the command
db.copyDatabase(fromdb, todb, fromhost)
db.createCollection(name, { size : ..., capped : ..., max : ... } )
db.createUser(userDocument)
db.currentOp() displays currently executing operations in the db
db.dropDatabase()

Процесс mongod можно оставить в фоновом режиме, а оболочку нужно закрыть:

exit
Bye

3: Настройка автозапуска MongoDB

Приложения на основе баз данных не могут работать без БД, потому очень важно настроить автоматический запуск демона mongod во время загрузки сервера.

Чтобы убедиться, что автозапуск не настроен, запросите состояние демона:

systemctl is-enabled mongod; echo $?
enabled
0

Ноль в выводе сообщает, что демон включен. Если в выводе 1, значит, демон отключен. Чтобы запустить его, используйте команду:

sudo systemctl enable mongod

Теперь MongoDB будет автоматически запускаться после перезагрузки системы.

4: Импорт тестовых данных (опционально)

В отличие от других серверов баз данных, MongoDB не предоставляет базы данных test. Чтобы не экспериментировать с данными, которые находятся в производстве, загрузите образец данных из документации MongoDB. Полученный документ JSON содержит список ресторанов, на котором вы можете поупражняться в работе с MongoDB.

Перейдите в каталог с возможностью записи:

cd /tmp

С помощью команды curl загрузите файл JSON из документации MongoDB:

curl -LO https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json

Команда mongoimport вставит данные в БД test. Флаг –db определяет БД, которую нужно использовать, –collection указывает, где именно в БД нужно хранить данные, –file указывает файл, в который нужно добавить данные.

mongoimport --db test --collection restaurants --file /tmp/primer-dataset.json

Вывод подтвердит перемещение данных из файла primer-dataset.json.

connected to: localhost
imported 25359 documents

Теперь попробуйте создать запрос. Запустите оболочку:

mongo

Оболочка выберет базу test по умолчанию.

Запросите коллекцию restaurants с помощью метода find(), чтобы просмотреть список ресторанов. Данная коллекция содержит более 2500 записей; чтобы ограничить вывод, используйте метод limit(). Метод pretty() выведет данные в более удобном для чтения формате.

db.restaurants.find().limit( 1 ).pretty()
{
"_id" : ObjectId("57e0443b46af7966d1c8fa68"),
"address" : {
"building" : "1007",
"coord" : [
-73.856077,
40.848447
],
"street" : "Morris Park Ave",
"zipcode" : "10462"
},
"borough" : "Bronx",
"cuisine" : "Bakery",
"grades" : [
{
"date" : ISODate("2014-03-03T00:00:00Z"),
"grade" : "A",
"score" : 2
},
{
"date" : ISODate("2013-09-11T00:00:00Z"),
"grade" : "A",
"score" : 6
},
{
"date" : ISODate("2013-01-24T00:00:00Z"),
"grade" : "A",
"score" : 10
},
{
"date" : ISODate("2011-11-23T00:00:00Z"),
"grade" : "A",
"score" : 9
},
{
"date" : ISODate("2011-03-10T00:00:00Z"),
"grade" : "B",
"score" : 14
}
],
"name" : "Morris Park Bake Shop",
"restaurant_id" : "30075445"
}

Попробуйте использовать другие методы MongoDB. Чтобы удалить тестовые данные, используйте метод db.restaurants.drop().

db.restaurants.drop()

Чтобы закрыть оболочку, введите:

exit
Bye

Заключение

Теперь документо-ориентированная база данных MongoDB установлена и полностью готова к работе. К сожалению, данное руководство только вкратце знакомит вас с основными функциями этой БД. Попробуйте самостоятельно создать БД с несколькими коллекциями и заполнить их документами.

Tags: , ,

1 комментарий

Добавить комментарий