MongoDB – это бесплатная документо-ориентированная база данных с открытым исходным кодом, написанная на C++. Классифицируется как NoSQL база данных, так как в ее основе не лежит традиционная реляционная структура БД. Вместо этого в MongoDB используются JSON -подобные документы с динамическими схемами. DСхемы можно менять в любое удобное время без необходимости установки новой базы данных с обновленной схемой.
Преимущество NoSQL БД перед привычными реляционными БД в том, что можно без проблем настроить горизонтальное масштабирование, репликацию и шардинг. MongoDB базы часто используется для хранения документов, тестовых файлов, почтовых сообщений и т.д.
В данной статье, мы рассмотрим установку MongoDB на сервер с CentOS 7 или 8, выполним базовую настройку, а также рассмотрим варианты оптимизации.
MongoDB имеет свой собственный репозиторий, откуда и выполняется установка. В стандартных репозиториях пакета для установки данного сервера БД, нет. Создадим файл для репозитория и добавим в него данные для подключения:
# nano /etc/yum.repos.d/mongodb-org.repo
Содержимое файла будет следующее:
[mongodb-org-4.2]_x000D_name=MongoDB Repository_x000D_baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/_x000D_gpgcheck=1_x000D_enabled=1_x000D_gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc_x000D_
На момент написания статьи последняя версия MongoDB в репозитории была именно 4.2. Перед установкой на ваш сервер, перейдите на сайт разработчика и проверьте актуальную версию.
После создания repo файла с параметрами репозитория, можно приступать к установке пакетов.
Чтобы установить нужные пакеты для работы MongoDB , запустите команду yum или dnf (в CentOS 8 ):
# yum install mongodb-org -y
Как и любой другой сервис, MongoDB нужно запустить и добавить в автозагрузку :
# systemctl start mongod
# systemctl enable mongod
Чтобы проверить, что сервис mongod «слушает» нужный порт (по умолчанию TCP 27017), выполните:
# lsof -i:27017
Можно открыть доступ к службе MongoDB в файлеволе (ниже пример для firewalld ):
# firewall-cmd --add-port=27017/tcp --permanent
# firewall-cmd --reload
Логи сервиса доступны в файле:
# tail -f /var/log/mongodb/mongod.log
При запуске MongoDB может выйти предупреждение:
** 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.
P.S. У меня подобной ошибки не было, но в сети часто встречается подобный вопрос и я решил описать его решение.
Для решения проблемы, нужно открыть файл /etc/security/limits.d/20-nproc.conf и повысить лимиты:
# nano /etc/security/limits.d/20-nproc.conf
В конец файла добавьте:
mongod soft nproc 32000
Сохраните файл и перезапустите сервис mongod:
# systemctl restart mongod
Чтобы войти в консоль MongoDB , введите mongo:
[root@server mongodb]# mongo
MongoDB shell version v4.2.2_x000D_connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb_x000D_Implicit session: session { "id" : UUID("f75bee8f-d71d-47fb-8728-6f67fb7a6982") }_x000D_MongoDB server version: 4.2.2_x000D_
Рассмотрим несколько команд MongoDB, которые можно использовать в шеле mongo. В частности, создадим базу данных, пользователя и покажем парочку других полезных команд.
Чтобы создать базу данных в MongoDB , нужно выполнить команду в консоли СУБД:
> use buildcentos
Заметили, что она похожа на ту, что используется в mysql/ mariadb для входа в существующую БД? В MongoDB как оказалось все проще.
Чтобы проверить, что мы действительно находимся в этой БД, выполним:
> db
Но есть один ньюанс, на самом деле новая база данных не будет создана, пока вы в ней не сохраните хотя бы один документ. Если выполнить проверку на существующие БД глобально, мы увидим, что нашей БД в списке нет:
> show dbs
Выполним простой запрос, который сохранит документ в нашей БД:
> db.new_collection.insert({ some_key: "some_value" })
Чтобы удалить БД, нужно находится в той самой БД, которую будете удалять и выполнить запрос:
> db.dropDatabase()
Например:
> use buildcentos
switched to db buildcentos
> db.dropDatabase()
{ "dropped" : "buildcentos", "ok" : 1 }_x000D__x000D_>
После чего, БД будет удалена:
> show dbs
admin 0.000GB_x000D_config 0.000GB_x000D_local 0.000GB_x000D_>
Чтобы создать нового пользователя с правами чтения и записи для вашей БД, выполните следующий запрос:
> db.createUser(
{_x000D_user: "centos",_x000D_pwd: "rewqrwe213213",_x000D_roles: [ { role: "readWrite", db: "buildcentos" } ]_x000D_}_x000D_)_x000D_
Чтобы вывести список пользователей, выполните запрос:
> db.getUsers()
Или
> show users
Обе команды, выводят идентичный результат:
Чтобы удалить пользователя:
> db.dropUser('centos')
После выполнения команды, при выводе списка пользователей, у вас его не будет:
> db.dropUser('centos')
true
> db.getUsers()
Как у любой СУБД, у MongoDB есть конфигурационный файл, расположенный по пути /etc/mongod.conf . Рассмотрим его основные параметры:
systemLog:_x000D_destination: file_x000D_logAppend: true_x000D_path: /var/log/mongodb/mongod.log
processManagement:_x000D_fork: true # fork and run in background_x000D_pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile_x000D_timeZoneInfo: /usr/share/zoneinfo
net:_x000D_port: 27017_x000D_bindIp: 127.0.0.1
storage:_x000D_dbPath: /var/lib/mongo_x000D_journal:_x000D_enabled: true
Более расширенные настройки, можно найти в документации к MongoDB на официальном сайте.
Чтобы MongoDB работало достаточно быстро и не возникало проблем, нужно чтобы были соблюдены некоторые условия:
# echo 'never' >> /sys/kernel/mm/transparent_hugepage/enabled
# echo 'never' >> /sys/kernel/mm/transparent_hugepage/defrag
-f (file size): unlimited_x000D_-t (cpu time): unlimited_x000D_-v (virtual memory): unlimited_x000D_-n (open files): 32000 и более_x000D_-m (memory size): unlimited_x000D_-u (processes/threads): 32000 и более
Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…
В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…
Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…
Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…
Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…
В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…