Установка 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: CentOS 7, MongoDB, NoSQL
1 комментарий
Spasibo. Rekomenduyu ( tolko versia mongo 3.4 ) Segognya 12 january sanday 2018 year. Sergey