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.