Nainštalujte a nakonfigurujte MongoDB na serveri CentOS

MongoDB - Toto je bezplatná, otvorená zdrojová, dokumentovo orientovaná databáza napísaná v jazyku C ++. Klasifikovaný ako NoSQL databázy, pretože nie je založená na tradičnej štruktúre relačných databáz. Namiesto toho v MongoDB sú použité JSON-podobné dokumenty s dynamickými schémami. Schémy sa dajú kedykoľvek zmeniť bez toho, aby bolo potrebné inštalovať novú databázu s aktualizovanou schémou.

výhoda NoSQL Databáza pred zvyčajnými relačnými databázami je taká, že môžete ľahko nakonfigurovať horizontálne škálovanie, replikáciu a sharding. Databázy MongoDB sa často používajú na ukladanie dokumentov, testovacích súborov, poštových správ atď..

V tomto článku zvážime inštaláciu MongoDB na server s CentOS 7 alebo 8, vykonajte základnú konfiguráciu a zvážte aj možnosti optimalizácie.

obsah:

  • Pripojiť úložisko MongoDB
  • Nainštalujte MongoDB na CentOS
  • Základné príkazy MongoDB
  • Konfiguračný súbor MongoDB
  • Optimalizujte MongoDB pre lepší výkon

Pripojiť úložisko MongoDB

MongoDB Má vlastné úložisko, odkiaľ sa inštalácia vykonáva. V štandardných archívoch balíkov na inštaláciu tohto databázového servera č. Vytvorte súbor pre úložisko a pridajte údaje, aby ste sa k nemu mohli pripojiť:

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

Obsah súboru bude nasledovný:

[mongodb-org-4.2] name = MongoDB Repository baseurl = https: //repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck = 1 enabled = 1 gpgkey = https: // www.mongodb.org/static/pgp/server-4.2.asc 

V čase písania najnovšej verzie MongoDB v úložisku bolo presne 4,2. Pred inštaláciou na server prejdite na web vývojára a skontrolujte aktuálnu verziu.

Po vytvorení repo súboru s voľbami úložiska môžete pokračovať v inštalácii balíkov.

Nainštalujte MongoDB na CentOS

Nainštalovať potrebné balíky pre prácu MongoDB, spustite príkaz yum alebo dnf (v systéme CentOS 8):

# yum nainštaluje mongodb-org -y

Ako každá iná služba, MongoDB je potrebné spustiť a pridať k spusteniu:

# systemctl start mongod
# systemctl povolí mongod

Ak chcete overiť, či služba mongod počúva na správnom porte (predvolene je to TCP 27017), postupujte takto:

# lsof -i: 27017

Prístup k službe MongoDB môžete otvoriť vo vlne súborov (nižšie je uvedený príklad pre firewalld):

# firewall-cmd --add-port = 27017 / tcp - permanentný
# firewall-cmd - obnoviť

Servisné denníky sú k dispozícii v súbore:

# tail -f /var/log/mongodb/mongod.log

Pri spustení MongoDB môže sa objaviť varovanie:

** VÝSTRAHA: príliš nízka hladkosť. limity nastavené na 4096 procesov, 64000 súborov. Počet procesov by mal byť najmenej 32000: 0,5-násobok počtu súborov.

PS: Nemal som podobnú chybu, ale sieť sa často stretáva s podobnou otázkou a rozhodol som sa opísať jej riešenie.

Ak chcete problém vyriešiť, musíte súbor otvoriť /etc/security/limits.d/20-nproc.conf a zvýšiť limity:

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

Na koniec súboru pridajte:

mongod soft nproc 32000

Uložte súbor a reštartujte službu mongod:

# systemctl reštart mongod

Prihlásenie do konzoly MongoDB, zadajte mongo:

[root @ server mongodb] # mongo

Verzia verzie MongoDB v4.2.2, ktorá sa pripája k: mongodb: //127.0.0.1: 27017 /? Kompresory = zakázané & gssapiServiceName = mongodb Implicitná relácia: session "id": UUID ("f75bee8f-d71d-47fb-8728-6f67fb7a6982") Mong) verzia servera: 4.2.2 

Základné príkazy MongoDB

Zvážte niekoľko príkazov MongoDB, ktoré je možné použiť v mongo shell. Najmä vytvoríme databázu, používateľa a ukážeme niekoľko ďalších užitočných príkazov.

Vytvorenie databázy v systéme Windows MongoDB, musíte spustiť príkaz v konzole DBMS:

> použite buildcentá

Všimli ste si, že je to podobné tomu, ktoré sa používa v mysql / mariadb na vstup do existujúcej databázy? MongoDB ako sa ukázalo, všetko je jednoduchšie.

Ak chcete overiť, či sa skutočne nachádzame v tejto databáze, postupujte takto:

> db

Existuje však jedna nuansa, v skutočnosti sa nová databáza nevytvorí, kým do nej neuložíte aspoň jeden dokument. Ak globálne vyhľadáme existujúce databázy, zistíme, že naša databáza nie je v zozname:

> show dbs

Spustíme jednoduchý dotaz, ktorý uloží dokument do našej databázy:

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

Ak chcete odstrániť databázu, musíte byť v rovnakej databáze, v ktorej vymažete a vykonáte požiadavku:

> db.dropDatabase ()

Napríklad:

> použite buildcentá

prepnuté na db buildcentos

> db.dropDatabase ()

"spadol": "buildcentos", "ok": 1>

Potom bude databáza vymazaná:

> show dbs

admin 0,000 GB konfigurácia 0,000 GB miestnej 0,000 GB>

Ak chcete vytvoriť nového používateľa s oprávneniami na čítanie a zápis do databázy, spustite nasledujúci dotaz:

> db.createUser (

user: "centos", pwd: "rewqrwe213213", roly: [role: "readWrite", db: "buildcentos"]) 

Ak chcete zoznam používateľov, spustite dopyt:

> db.getUsers ()

alebo

> zobraziť používateľov

Oba príkazy vydávajú rovnaký výsledok:

Ak chcete odstrániť používateľa:

> db.dropUser ('centos')

Po vykonaní príkazu ho pri zozname používateľov nebudete mať:

> db.dropUser ('centos')

pravdivý

> db.getUsers ()

Konfiguračný súbor MongoDB

Rovnako ako u iných databáz DBMS MongoDB pozdĺž cesty sa nachádza konfiguračný súbor /etc/mongod.conf. Zvážte jeho hlavné parametre:

  • Blok SystemLog - zodpovedný za protokolovanie. Minimálne parametre, ktoré musia byť uvedené v tomto bloku, aby protokolovanie fungovalo:
    systemLog: destination: file logAppend: true cesta: /var/log/mongodb/mongod.log
  • Blok processManagement - riadenie procesu, v ktorom je spustený MongoDB: fork - spustí démona na pozadí pre fungovanie databázy, predvolená hodnota je false pidFilePath - cesta k súboru PID timeZoneInfo - označuje cestu k súboru na načítanie časových zón. Príklad config:
    processManagement: fork: true # fork a beží na pozadí pidFilePath: /var/run/mongodb/mongod.pid # umiestnenie času pidfileZoneInfo: / usr / share / zoneinfo
  • blok netto - slúži na riadenie práce so sieťou:
    port - označuje číslo portu, na ktorom bude spustený démon mongod, štandardne port 27017
    bindIp - ip adresa, z ktorej máte prístup k databáze. Rovnako ako v prípade mysql / mariadb, aj toto nastavenie je z dôvodu bezpečnosti, aby sa zabránilo prístupu z externých serverov. Ak tu zadáte 127.0.0.1, pripojenie bude fungovať iba lokálne.
    maxIncomingConnections - počet súbežných pripojení, ktoré dokáže MongoDB zvládnuť. Tento parameter nemôže prekročiť systémový parameter, predvolená hodnota je 65536
    Príklad:

    net: port: 27017 bindIp: 127.0.0.1
  • blok zabezpečenia - tento blok je zodpovedný za bezpečnosť: autorizácia - ak je voľba povolená, potom je potrebné autorizáciu užívateľa, bez prihlasovacieho mena a hesla sa pripojenie k procesu, ktorý požaduje, nebude zriadené. Predvolene vypnuté JavascriptEnabled - povolí / zakáže vykonávanie javascriptov na strane servera.
  • blok skladovanie - blok zodpovedný za parametre ukladania databázy: dbPath - reťazec, ktorý určuje, na ktorom mieste bude databáza uložená. V predvolenom nastavení / data / dbjournal - ak je zapnuté, zapne protokol dlhovekosti, takže súbory v databáze zostanú platné a obnovené.
    úložisko: dbPath: / var / lib / mongo journal: enabled: true

Podrobnejšie nastavenia nájdete v dokumentácii MongoDB na oficiálnej webovej stránke..

Optimalizujte MongoDB pre lepší výkon

že MongoDB Fungovalo to dosť rýchlo a nevyskytli sa žiadne problémy, bolo nevyhnutné, aby boli splnené určité podmienky:

  • Použite systém súborov XFS, namiesto pomalšieho EXT4(XFS používa paralelný disk I / O, čo výrazne zlepšuje výkon v porovnaní s EXT4).
  • Namiesto pomalších pevných diskov používajte na svojich serveroch rýchle disky SSD / NVME.
  • odpojiť Transparentná obrovská stránka. Ak chcete THP vypnúť, pridajte príkazové volanie do súboru jednotiek MongoDB:
    # echo 'never' >> / sys / kernel / mm / transparent_hugepage / enabled
    # echo 'never' >> / sys / kernel / mm / transparent_hugepage / defrag
  • Ak je to potrebné, skontrolujte a nastavte maximálne limity:
    -f (veľkosť súboru): neobmedzené -t (čas procesora): neobmedzené -v (virtuálna pamäť): neobmedzené -n (otvorené súbory): 32000 alebo viac -m (veľkosť pamäte): neobmedzené -u (procesy / vlákna): 32000 a ďalšie
  • Tiež monitorujte spotrebu pamäte na serveri, ak MongoDB spotrebuje veľa pamäte, optimalizuje samotné databázy. Ak je projekt veľmi veľký, má zmysel šíriť databázy na rôzne servery, aby sa dosiahol vyšší výkon.