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 изразходва много памет, оптимизирайте самите бази данни. Ако проектът е много голям, има смисъл да се разпространяват базите данни на различни сървъри за по-голяма производителност.