Telepítse és konfigurálja a MongoDB-t a CentOS-on

MongoDB - Ez egy ingyenes, nyílt forráskódú, dokumentum-orientált adatbázis, C ++ nyelven írva. Osztályba sorolva NoSQL adatbázis, mivel nem a hagyományos relációs adatbázis felépítésén alapszik. Ehelyett MongoDB használják JSON-hasonló dokumentumok dinamikus sémákkal. A sémák bármikor megváltoztathatók, anélkül, hogy új adatbázist kellene telepíteni egy frissített sémával.

haszon NoSQL Az adatbázis a szokásos relációs adatbázisok előtt könnyen konfigurálhatja a vízszintes méretezést, replikációt és shardingot. A MongoDB adatbázisokat gyakran használják dokumentumok, tesztfájlok, e-mail üzenetek stb. Tárolására..

Ebben a cikkben megvizsgáljuk a telepítést MongoDB a CentOS 7 vagy 8 szerverrel, végezzen alapvető konfigurációt, és fontolja meg az optimalizálási lehetőségeket is.

Tartalom:

  • Csatlakoztassa a MongoDB tárolót
  • Telepítse a MongoDB szoftvert a CentOS-ra
  • Alapvető MongoDB parancsok
  • MongoDB konfigurációs fájl
  • Optimalizálja a MongoDB-t a jobb teljesítmény érdekében

Csatlakoztassa a MongoDB tárolót

MongoDB Saját tárolóval rendelkezik, ahonnan a telepítés végrehajtásra kerül. Az adatbázis-kiszolgáló telepítésére szolgáló szokásos csomagtárban nem. Hozzon létre egy fájlt a lerakathoz, és adja hozzá az ahhoz szükséges adatokat:

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

A fájl tartalma a következő:

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

Az írás idején a legújabb verzió MongoDB pontosan 4,2 volt. A szerverre történő telepítés előtt keresse fel a fejlesztő webhelyét, és ellenőrizze az aktuális verziót.

Miután létrehozta a repo fájlt a lerakat opciókkal, folytathatja a csomagok telepítését.

Telepítse a MongoDB szoftvert a CentOS-ra

A munkához szükséges csomagok telepítése MongoDB, futtassa a yum vagy a dnf parancsot (a CentOS 8-on):

# yum install mongodb-org -y

Mint minden más szolgáltatás, MongoDB futtatnunk kell, és hozzá kell adnunk az indításhoz:

# systemctl indítsa el a mongod
# systemctl engedélyezze a mongodot

Annak ellenőrzéséhez, hogy a mongod szolgáltatás a megfelelő porton hallgat-e (alapértelmezés szerint TCP 27017):

# lsof -i: 27017

A MongoDB szolgáltatáshoz hozzáférést fájlhullámban nyithat meg (az alábbiakban egy példa a tűzfalra):

# tűzfal-cmd - add-port = 27017 / tcp - tartós
# tűzfal-cmd - újratöltés

A szolgáltatásnaplók a fájlban érhetők el:

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

Indításkor MongoDB figyelmeztetés jelenhet meg:

** FIGYELMEZTETÉS: a lágy korlát túl alacsony. a korlátozások 4096 folyamatra vannak állítva, 64000 fájl. A folyamatok számának legalább 32000-nek kell lennie: a fájlok 0,5-szerese.

Ui Nem volt hasonló hiba, de a hálózat gyakran hasonló kérdéssel szembesül, és úgy döntöttem, hogy leírom a megoldását.

A probléma megoldásához meg kell nyitnia a fájlt /etc/security/limits.d/20-nproc.conf és növelje a limiteket:

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

A fájl végén adja hozzá:

mongod soft nproc 32000

Mentse el a fájlt és indítsa újra a mongod szolgáltatást:

# systemctl indítsa újra a mongodot

Bejelentkezés a konzolba MongoDB, írja be mongo:

[gyökér @ szerver mongodb] # mongo

A MongoDB shell v4.2.2 verziója: mongodb: //127.0.0.1: 27017 /? Kompresszorok = letiltva & gssapiServiceName = mongodb implicit munkamenet: session "id": UUID ("f75bee8f-d71d-47fb-8728-6f67fb7a6982" Mongodb) szerver verzió: 4.2.2 

Alapvető MongoDB parancsok

Vegyünk néhány MongoDB parancsot, amelyek felhasználhatók a mongo héjában. Konkrétan létrehozunk egy adatbázist, egy felhasználót, és megmutatunk néhány további hasznos parancsot.

Adatbázis létrehozása a MongoDB, futtatnia kell a parancsot a DBMS konzolon:

> használja a buildcentos-t

Megfigyelted, hogy hasonló ahhoz, mint amelyet a mysql / mariadb-ban használtak egy létező adatbázis beviteléhez? az MongoDB mint kiderült, minden könnyebb.

Annak ellenőrzése érdekében, hogy valóban vagyunk-e ebben az adatbázisban, tegye

> db

De van egy árnyalata, sőt, új adatbázist csak akkor hozunk létre, amíg legalább egy dokumentumot el nem mentünk benne. Ha globálisan megvizsgáljuk a létező adatbázisokat, akkor látni fogjuk, hogy adatbázisunk nincs a listában:

> dbs mutatása

Végezzünk el egy egyszerű lekérdezést, amely elmenti a dokumentumot az adatbázisunkban:

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

Az adatbázis törléséhez ugyanabban az adatbázisban kell lennie, amellyel törli és végrehajtja a kérést:

> db.dropDatabase ()

Például:

> használja a buildcentos-t

átváltott a db buildcentos-ra

> db.dropDatabase ()

"drop": "buildcentos", "ok": 1>

Ezután az adatbázis törlődik:

> dbs mutatása

admin 0.000GB config 0.000GB local 0.000GB>

Ha új felhasználót szeretne létrehozni az adatbázis olvasási és írási engedélyeivel, futtassa a következő lekérdezést:

> db.createUser (

felhasználó: "centos", pwd: "rewqrwe213213", szerepek: [szerep: "readWrite", db: "buildcentos"]) 

A felhasználók listázásához futtassa a lekérdezést:

> db.getUsers ()

vagy

> a felhasználók megjelenítése

Mindkét parancs ugyanazt az eredményt adja ki:

Felhasználó törlése:

> db.dropUser ('centos')

A parancs végrehajtása után, amikor felsorolja a felhasználókat, nem lesz rá:

> db.dropUser ('centos')

igaz

> db.getUsers ()

MongoDB konfigurációs fájl

Mint minden DBMS esetében, MongoDB van egy konfigurációs fájl, amely az út mentén található /etc/mongod.conf. Fontolja meg annak fő paramétereit:

  • SystemLog blokk - a naplózásért felelős. A minimális paraméterek, amelyeket ebben a blokkban meg kell adni a naplózás működéséhez:
    systemLog: rendeltetési hely: fájl logAppend: valódi út: /var/log/mongodb/mongod.log
  • A processManagement blokk - annak a folyamatnak a vezérlése, amelyben a MongoDB fut: fork - elindítja a démont a háttérben az adatbázis működéséhez, az alapértelmezett érték hamis pidFilePath - a PID fájl elérési útja, timeZoneInfo - jelzi a fájl elérési útját az időzónák betöltésekor. Példa konfiguráció:
    processManagement: villát: true # villát és háttérben futtatva pidFilePath: /var/run/mongodb/mongod.pid # a pidfile helye a timeZoneInfo: / usr / share / zoneinfo
  • tömb nettó - a hálózattal való munka irányítását szolgálja:
    port - azt a portszámot jelzi, amelyen a mongod démon elindul, alapértelmezés szerint a 27017 port
    bindIp - ip cím, ahonnan hozzáférhet az adatbázishoz. Mint a mysql / mariadb esetében, ez a beállítás a biztonság érdekében történik, hogy elkerüljék a hozzáférést a külső szerverekből. Ha itt megadja a 127.0.0.1, akkor a kapcsolat csak helyben fog működni.
    maxIncomingConnections - az egyidejű kapcsolatok száma, amelyeket a MongoDB képes kezelni. Ez a paraméter nem haladhatja meg a rendszerparamétert, az alapértelmezett érték 65536
    Példa:

    net: port: 27017 bindIp: 127.0.0.1
  • tömb biztonság - ez a blokk felel a biztonságért: autorizáció - ha az opció engedélyezve van, akkor felhasználói engedélyre van szükség, bejelentkezés és jelszó nélkül nem létesül kapcsolat a folyamatot igénylő folyamattal. Alapértelmezés szerint le van tiltva. JavascriptEnabled - javascript futtatás engedélyezése / letiltása a szerver oldalon.
  • tömb tárolás - az adatbázis-tárolási paraméterekért felelős blokk: dbPath - egy karakterlánc, amely jelzi, hogy az adatbázis melyik helyen kerül tárolásra. Alapértelmezés szerint / data / dbjournal - ha engedélyezve van, bekapcsolja a hosszú élettartam-naplót, hogy az adatbázisban lévő fájlok érvényben maradjanak és helyreálljanak.
    tárolás: dbPath: / var / lib / mongo napló: engedélyezve: igaz

A fejlettebb beállítások a MongoDB dokumentációjában találhatók a hivatalos webhelyen..

Optimalizálja a MongoDB-t a jobb teljesítmény érdekében

hogy MongoDB Elég gyorsan működött, és nem volt probléma, bizonyos feltételeknek eleget kellett tenni:

  • Használjon fájlrendszert XFS, lassabb helyett EXT4(Az XFS párhuzamos lemez I / O-t használ, ami jelentősen javítja a teljesítményt, mint az EXT4).
  • Használjon gyors SSD / NVME meghajtókat a szerverein a lassabb HDD helyett.
  • szétkapcsol Átlátszó hatalmas oldal. A THP letiltásához adja hozzá a parancshívást a MongoDB egységfájlhoz:
    # echo "soha" >> / sys / kernel / mm / transparent_hugepage / engedélyezve
    # echo "soha" >> / sys / kernel / mm / transparent_hugepage / defrag
  • Ellenőrizze és állítsa be az ulimit korlátokat, ha szükséges:
    -f (fájlméret): korlátlan -t (cpu idő): korlátlan -v (virtuális memória): korlátlan -n (nyitott fájlok): 32000 vagy annál több -m (memóriaméret): korlátlan -u (folyamatok / szálak): 32000 és még sok más
  • Ellenőrizze a szerver memóriafelhasználását is, ha MongoDB sok memóriát fogyaszt, optimalizálva magukat az adatbázisokat. Ha a projekt nagyon nagy, akkor a nagyobb teljesítmény érdekében érdemes az adatbázisokat különböző szerverekre elosztani.