Как установить MongoDB на CentOS 7
Введение
MongoDB — это ориентированная на документы база данных, бесплатная и с открытым исходным кодом. Она классифицируется как база данных NoSQL, поскольку не опирается на традиционную табличную структуру реляционной базы данных. Вместо этого он использует JSON-подобные документы с динамическими схемами. В отличие от реляционных баз данных, MongoDB не требует предопределенной схемы перед добавлением данных в базу данных. Вы можете изменить схему в любое время и так часто, как это необходимо, без необходимости создавать новую базу данных с обновленной схемой.
В этом руководстве вы установите MongoDB Community Edition на сервер CentOS 7.
Предпосылки
Прежде чем следовать этому руководству, убедитесь, что у вас есть
- Сервер CentOS 7 с пользователем без полномочий root с поддержкой
sudo
. Инструкции см. в нашем руководстве «Начальная настройка сервера с CentOS 7».
Шаг 1 — Добавление репозитория MongoDB
Пакет mongodb-org
отсутствует в репозиториях по умолчанию для CentOS. Однако MongoDB поддерживает специальный репозиторий. Добавим его на наш сервер.
С помощью редактора vi
создайте файл .repo
для yum
, утилиты управления пакетами для CentOS:
- sudo vi /etc/yum.repos.d/mongodb-org.repo
Затем перейдите в раздел «Установка в Red Hat» документации MongoDB и добавьте в файл информацию о репозитории для последней стабильной версии:
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
Сохраните изменения в файле, нажав клавишу ESC
, затем введите :wq
и нажмите ENTER
.
Прежде чем продолжить, убедитесь, что репозиторий MongoDB существует в утилите yum
. Команда repolist
отображает список включенных репозиториев:
- yum repolist
Output. . .
repo id repo name
base/7/x86_64 CentOS-7 - Base
extras/7/x86_64 CentOS-7 - Extras
mongodb-org-6.0/7/x86_64 MongoDB Repository
updates/7/x86_64 CentOS-7 - Updates
. . .
Установив репозиторий MongoDB
, вы можете продолжить установку.
Шаг 2 — Установка MongoDB
Вы можете установить пакет mongodb-org
из стороннего репозитория с помощью утилиты yum
.
- sudo yum install mongodb-org
Есть два запроса Is this ok [y/N]:
. Первый разрешает установку пакетов MongoDB, а второй импортирует ключ GPG. Издатель MongoDB подписывает свое программное обеспечение, а yum
использует ключ для подтверждения целостности загруженных пакетов. В каждом запросе введите Y
, а затем нажмите клавишу ENTER
.
Затем запустите службу MongoDB с помощью утилиты systemctl
:
- sudo systemctl start mongod
Хотя мы не будем использовать их в этом руководстве, вы также можете изменить состояние службы MongoDB с помощью команд reload
и stop
.
Команда reload
запрашивает, чтобы процесс mongod
прочитал файл конфигурации /etc/mongod.conf
и применил любые изменения без перезапуска.
- sudo systemctl reload mongod
Команда stop
останавливает все запущенные процессы mongod
.
- sudo systemctl stop mongod
Утилита systemctl
не дала результата после выполнения команды start
, но вы можете убедиться, что служба запущена, просмотрев конец mongod.log
с помощью команды tail
:
- sudo tail /var/log/mongodb/mongod.log
Output. . .
[initandlisten] waiting for connections on port 27017
Результат ожидания соединения подтверждает, что MongoDB успешно запущен, и вы можете получить доступ к серверу базы данных с помощью оболочки MongoDB:
- mongo
Примечание. При запуске оболочки MongoDB вы могли увидеть следующее предупреждение:
** ПРЕДУПРЕЖДЕНИЕ:** мягкие ограничения r слишком малы. rlimits установлен на 4096 процессов, 64000 файлов. Количество процессов должно быть не менее 32000 : 0,5 умноженное на количество файлов.
MongoDB — это многопоточное приложение. Он может запускать дополнительные процессы для обработки своей рабочей нагрузки. В предупреждении говорится, что для максимальной эффективности MongoDB количество процессов, которые ему разрешено запускать, должно быть вдвое меньше количества файлов, которые он может открыть в любой момент времени. Чтобы устранить предупреждение, измените значение soft rlimit processes
для mongod
, отредактировав файл 20-nproc.conf
:
- sudo vi /etc/security/limits.d/20-nproc.conf
Добавьте следующую строку в конец файла:
. . .
mongod soft nproc 32000
Обязательно сохраните изменения, нажав клавишу ESC
, затем введите :wq
и нажмите ENTER
.
Чтобы новое ограничение было доступно для MongoDB, перезапустите его с помощью утилиты systemctl
:
- sudo systemctl restart mongod
После этого при подключении к оболочке MongoDB предупреждение должно перестать существовать.
Чтобы узнать, как взаимодействовать с MongoDB из оболочки, вы можете просмотреть вывод метода db.help()
, который предоставляет список методов для объекта db
.
- db.help()
OutputDB 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
:
- exit
OutputBye
Шаг 3 — Проверка запуска
Поскольку приложение, управляемое базой данных, не может работать без базы данных, мы позаботимся о том, чтобы демон MongoDB, mongod
, запускался вместе с системой.
Используйте утилиту systemctl
, чтобы проверить его статус запуска:
- systemctl is-enabled mongod; echo $?
Вывод нуля подтверждает, что демон включен, что нам и нужно. Однако единица подтверждает отключенный демон, который не запускается.
Output. . .
enabled
0
Если демон отключен, используйте утилиту systemctl
, чтобы включить его:
- sudo systemctl enable mongod
Теперь у вас есть запущенный экземпляр MongoDB, который автоматически запустится после перезагрузки системы.
Шаг 4 — Импорт примера набора данных (необязательно)
В отличие от других серверов баз данных, MongoDB не содержит данных в своей базе данных test
. Поскольку мы не хотим экспериментировать с новым программным обеспечением, используя производственные данные, мы загрузим образец набора данных из примера MongoDB. Этот документ JSON содержит набор ресторанов, которые мы будем использовать для практики взаимодействия с MongoDB и предотвращения причинения вреда конфиденциальным данным.
Начните с перехода в доступный для записи каталог:
- cd /tmp
Используйте команду curl
и ссылку из MongoDB, чтобы загрузить файл JSON:
- curl -LO https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json
Команда mongoimport
вставит данные в тестовую базу данных. Флаг --db
определяет, какую базу данных использовать, тогда как флаг --collection
указывает, где в базе данных будет храниться информация, а --file
Флаг сообщает команде, над каким файлом следует выполнить действие импорта:
- mongoimport --db test --collection restaurants --file /tmp/primer-dataset.json
Вывод подтверждает импорт данных из файла primer-dataset.json
:
Outputconnected to: localhost
imported 25359 documents
Имея образец набора данных, вы можете выполнить к нему запрос.
Перезапустите оболочку MongoDB:
- mongo
По умолчанию оболочка выбирает базу данных test
, куда вы импортировали данные.
Запросите коллекцию ресторанов с помощью метода find()
, чтобы отобразить список всех ресторанов в наборе данных. Поскольку коллекция содержит более 25 000 записей, используйте необязательный метод limit()
, чтобы сократить вывод запроса до указанного числа. Кроме того, метод pretty()
делает информацию более удобочитаемой благодаря новым строкам и отступам.
- db.restaurants.find().limit(1).pretty()
Output{
"_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
:
- exit
OutputBye
Заключение
В этом руководстве вы добавили сторонний репозиторий в yum
, установили сервер базы данных MongoDB, импортировали образец набора данных и выполнили простой запрос. С MongoDB вы можете делать гораздо больше, например создавать базы данных с коллекциями
, заполнять базы данных множеством документов
и создавать надежные приложения. Чтобы узнать больше о MongoDB, ознакомьтесь с нашей серией руководств по MongoDB.