Инсталирайте и конфигурирайте MongoDB на CentOS

MongoDB - Това е безплатна, отворен код, ориентирана към документи база данни, написана на C ++. Класифициран като NoSQL база данни, тъй като не се основава на традиционната структура на релационна база данни. Вместо това в MongoDB се използват JSON-подобни документи с динамични схеми. Схемите могат да се променят по всяко удобно време, без да е необходимо да инсталирате нова база данни с актуализирана схема.

облага NoSQL Базата данни пред обичайните релационни бази данни е, че можете лесно да конфигурирате хоризонтално мащабиране, репликация и заточване. Базите данни на MongoDB често се използват за съхранение на документи, тестови файлове, пощенски съобщения и т.н..

В тази статия ще разгледаме инсталацията MongoDB към сървър с CentOS 7 или 8, извършете основна конфигурация, а също така помислете за опции за оптимизация.

Съдържание:

  • Свържете хранилището на MongoDB
  • Инсталирайте MongoDB на CentOS
  • Основни MongoDB команди
  • Конфигурационен файл на MongoDB
  • Оптимизирайте MongoDB за по-добра производителност

Свържете хранилището на MongoDB

MongoDB Той има собствено хранилище, откъдето се извършва инсталацията. В стандартните хранилища за пакети за инсталиране на този сървър на база данни, не. Създайте файл за хранилището и добавете данните, за да се свържете с него:

# nano /etc/yum.repos.d/mongodb-org.repo

Съдържанието на файла ще бъде следното:

[mongodb-org-4.2] име = MongoDB хранилище baseurl = https: //repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck = 1 активиран = 1 gpgkey = https: // www.mongodb.org/static/pgp/server-4.2.asc 

В момента на писането, най-новата версия MongoDB в хранилището беше точно 4.2. Преди да инсталирате на вашия сървър, отидете на сайта на програмиста и проверете текущата версия.

След като създадете репо файла с опциите на хранилището, можете да продължите с инсталирането на пакети.

Инсталирайте MongoDB на CentOS

За да инсталирате необходимите пакети за работа MongoDB, стартирайте командата yum или dnf (в CentOS 8):

# yum инсталирате mongodb-org -y

Както всяка друга услуга, MongoDB трябва да стартирате и да добавите към стартиране:

# systemctl start mongod
# systemctl активира mongod

За да проверите дали услугата mongod слуша на правилния порт (по подразбиране TCP 27017), направете:

# lsof -i: 27017

Можете да отворите достъп до услугата MongoDB във вълна от файлове (по-долу е пример за firewalld):

# firewall-cmd --add-port = 27017 / tcp - постоянен
# firewall-cmd - зареждане

Файловете за услуги са достъпни във файла:

# опашка -f /var/log/mongodb/mongod.log

При стартиране MongoDB може да излезе предупреждение:

** ВНИМАНИЕ: меките рамки са твърде ниски. ограничава 4096 процеси, 64000 файла. Броят на процесите трябва да е поне 32000: 0,5 пъти повече от файловете.

Послепис Нямах подобна грешка, но често мрежата среща подобен въпрос и реших да опиша нейното решение.

За да разрешите проблема, трябва да отворите файла /etc/security/limits.d/20-nproc.conf и увеличаване на лимитите:

# nano /etc/security/limits.d/20-nproc.conf

В края на файла добавете:

mongod soft nproc 32000

Запишете файла и рестартирайте услугата mongod:

# systemctl рестартира mongod

За да влезете в конзолата MongoDB, въведете монго:

[root @ server mongodb] # монго

Версия на черупка на MongoDB v4.2.2, свързваща се с: mongodb: //127.0.0.1: 27017 /? Компресори = деактивирани & gssapiServiceName = mongodb Неизразен сеанс: сесия "id": UUID ("f75bee8f-d71d-47fb-8728-6f67fb7a6982") MongoDB версия на сървъра: 4.2.2 

Основни MongoDB команди

Помислете за няколко команди MongoDB, които могат да се използват в обвивката на mongo. По-специално, ние ще създадем база данни, потребител и ще покажем няколко други полезни команди.

За да създадете база данни в MongoDB, трябва да стартирате командата в DBMS конзолата:

> използвайте buildcentos

Забелязахте, че е подобно на използваното в mysql / mariadb за въвеждане на съществуваща база данни? Най- MongoDB както се оказа, че всичко е по-лесно.

За да проверите дали наистина сме в тази база данни, направете:

> db

Но има един нюанс, всъщност нова база данни няма да бъде създадена, докато не запазите поне един документ в нея. Ако проверим за съществуващи бази данни в световен мащаб, ще видим, че нашата база данни не е в списъка:

> покажете dbs

Нека изпълним обикновена заявка, която ще запише документа в нашата база данни:

> db.new_collection.insert (some_key: "some_value")

За да изтриете база данни, трябва да сте в същата база данни, в която ще изтриете и изпълните заявката:

> db.dropDatabase ()

Например:

> използвайте buildcentos

премина към db buildcentos

> db.dropDatabase ()

"отпуснат": "buildcentos", "ok": 1>

След това базата данни ще бъде изтрита:

> покажете dbs

admin 0.000GB config 0.000GB local 0.000GB>

За да създадете нов потребител с разрешения за четене и запис за вашата база данни, изпълнете следната заявка:

> db.createUser (

потребител: "centos", pwd: "rewqrwe213213", роли: [роля: "readWrite", db: "buildcentos"]) 

За да изброите потребителите, изпълнете заявката:

> db.getUsers ()

или

> покажете на потребителите

И двете команди извеждат един и същ резултат:

За да изтриете потребител:

> db.dropUser ('centos')

След като изпълните командата, при изброяване на потребителите няма да я имате:

> db.dropUser ('centos')

вярно

> db.getUsers ()

Конфигурационен файл на MongoDB

Както при всяка СУБД, MongoDB има конфигурационен файл, разположен по пътя /etc/mongod.conf. Обмислете основните му параметри:

  • Блок SystemLog - отговорен за регистрацията. Минималните параметри, които трябва да бъдат посочени в този блок за регистриране на работа:
    systemLog: местоназначение: file logAppend: true path: /var/log/mongodb/mongod.log
  • Блокът processManagement - контролира процеса, в който работи MongoDB: fork - стартира демонът на фона, за да работи базата данни, стойността по подразбиране е невярна pidFilePath - път към PID файла timeZoneInfo - показва пътя към файла за зареждане на часови зони Пример конфигурация:
    processManagement: fork: true # fork и работи във фонов pidFilePath: /var/run/mongodb/mongod.pid # местоположение на pidfile timeZoneInfo: / usr / share / zoneinfo
  • блок нето - служи за контрол на работата с мрежата:
    port - посочва номера на порта, на който ще бъде стартиран демонът mongod, по подразбиране порт 27017
    bindIp - ip адрес, от който можете да получите достъп до базата данни. Както при mysql / mariadb, тази настройка е за сигурност, за да се избегне достъп от външни сървъри. Ако посочите 127.0.0.1 тук, връзката ще работи само локално.
    maxIncomingConnections - броят на едновременните връзки, с които MongoDB може да се справи. Този параметър не може да надвишава системния параметър; стойността по подразбиране е 65536
    Пример:

    нето: порт: 27017 bindIp: 127.0.0.1
  • блок сигурност - този блок е отговорен за сигурността: разрешение - ако опцията е активирана, тогава се изисква разрешение на потребителя, без влизане и парола връзка към процеса, който изисква той няма да бъде установен. Деактивиран по подразбиране. JavascriptEnabled - разрешаване / деактивиране на изпълнение на JavaScript от страна на сървъра.
  • блок съхранение - блок, отговорен за параметрите за съхранение на базата данни: dbPath - низ, който показва на кое място ще се съхранява базата данни. По подразбиране / data / dbjournal - ако е активиран, включва журнала за дълголетие, така че файловете в базата данни да останат валидни и възстановени. Примерни настройки:
    съхранение: dbPath: / var / lib / mongo journal: активиран: true

По-разширени настройки можете да намерите в документацията на MongoDB на официалния уебсайт..

Оптимизирайте MongoDB за по-добра производителност

че MongoDB Работи достатъчно бързо и нямаше проблеми, беше необходимо да бъдат изпълнени определени условия:

  • Използвайте файлова система XFS, вместо по-бавен EXT4(XFS използва паралелен входно-изходен диск, което значително подобрява производителността в сравнение с EXT4).
  • Използвайте бързи SSD / NVME дискове на вашите сървъри, вместо по-бавни твърди дискове.
  • Прекъсване на връзката Прозрачна огромна страница. За да деактивирате THP, добавете командното обаждане към файла на MongoDB:
    # echo 'никога' >> / sys / ядро ​​/ mm / transparent_hugepage / активирано
    # echo 'никога' >> / sys / kernel / mm / transparent_hugepage / defrag
  • Проверете и задайте неограничени граници, ако е необходимо:
    -f (размер на файла): неограничен -t (cpu време): неограничен -v (виртуална памет): неограничен -n (отворени файлове): 32000 или повече -m (размер на паметта): неограничен -u (процеси / нишки): 32000 и още
  • Също така наблюдавайте консумацията на памет на сървъра, ако MongoDB изразходва много памет, оптимизирайте самите бази данни. Ако проектът е много голям, има смисъл да се разпространяват базите данни на различни сървъри за по-голяма производителност.