Namestite in konfigurirajte MongoDB v CentOS-u

Mongodb - To je brezplačna, odprta koda, na dokumente usmerjena baza podatkov, napisana v jeziku C ++. Razvrščeno kot NoSQL baze podatkov, saj ne temelji na tradicionalni strukturi relacijske baze podatkov. Namesto v Mongodb se uporabljajo Json-podobni dokumenti z dinamičnimi shemami. Sheme lahko kadar koli spremenite brez potrebe po namestitvi nove baze podatkov s posodobljeno shemo.

Prednost NoSQL Podatkovna baza pred običajnimi relacijskimi bazami podatkov je, da lahko enostavno konfigurirate vodoravno skaliranje, podvajanje in ostrenje. Podatkovne zbirke MongoDB se pogosto uporabljajo za shranjevanje dokumentov, preizkusnih datotek, sporočil po pošti itd..

V tem članku bomo upoštevali namestitev Mongodb v strežnik s CentOS 7 ali 8 izvedite osnovno konfiguracijo in razmislite tudi o možnostih optimizacije.

Vsebina:

  • Povežite MongoDB odlagališče
  • Namestite MongoDB na CentOS
  • Osnovni MongoDB ukazi
  • Konfiguracijska datoteka MongoDB
  • Optimizirajte MongoDB za boljše delovanje

Povežite MongoDB odlagališče

Mongodb Ima svoje skladišče, od koder se izvede namestitev. V standardnih skladiščih paketov za namestitev tega strežnika baz podatkov št. Ustvarite datoteko za shrambo in dodajte podatke, da se povežete z njo:

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

Vsebina datoteke bo naslednja:

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

V času pisanja najnovejša različica Mongodb v skladišču je bilo natanko 4,2. Pred namestitvijo na strežnik pojdite na spletno mesto razvijalca in preverite trenutno različico.

Po ustvarjanju datoteke repo z možnostmi repozitorija lahko nadaljujete z namestitvijo paketov.

Namestite MongoDB na CentOS

Za namestitev potrebnih paketov za delo Mongodb, zaženite ukaz yum ali dnf (v CentOS 8):

# yum namestite mongodb-org -y

Kot vsaka druga storitev, Mongodb Zagon in dodajanje v zagon:

# systemctl start mongod
# systemctl omogoči mongod

Če želite preveriti, ali storitev mongod posluša v pravilnem pristanišču (privzeto TCP 27017), naredite:

# lsof -i: 27017

Dostop do storitve MongoDB lahko odprete v datotečnem valu (spodaj je primer za firewalld):

# požarni zid-cmd --add-port = 27017 / tcp - trajno
# požarni zid-cmd - naloži

Dnevniški servisi so na voljo v datoteki:

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

Ob zagonu Mongodb lahko pride opozorilo:

** OPOZORILO: mehka oboda je prenizka. omejitve nastavljene na 4096 procesov, 64000 datotek. Število procesov mora biti najmanj 32000: 0,5-krat večje število datotek.

P.S. Nisem imel podobne napake, vendar se omrežje pogosto srečuje s podobnim vprašanjem in sem se odločil, da opišem njegovo rešitev.

Če želite rešiti težavo, morate odpreti datoteko /etc/security/limits.d/20-nproc.conf in povečanje omejitev:

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

Na koncu datoteke dodajte:

mongod soft nproc 32000

Shranite datoteko in znova zaženite storitev mongod:

# systemctl znova zaženite mongod

Za prijavo v konzolo Mongodb, vnesite mongo:

[root @ server mongodb] # mongo

Različica lupine MongoDB v4.2.2, ki se povezuje na: mongodb: //127.0.0.1: 27017 /? Kompresorji = onemogočeni & gssapiServiceName = mongodb Implicitna seja: seja "id": UUID ("f75bee8f-d71d-47fb-8728-6f67fb7a6982") MongoDB različica strežnika: 4.2.2 

Osnovni MongoDB ukazi

Razmislite o nekaj ukazi MongoDB, ki jih lahko uporabite v lupini mongo. Zlasti bomo ustvarili bazo podatkov, uporabnika in prikazali še nekaj drugih uporabnih ukazov.

Če želite ustvariti bazo podatkov v Mongodb, morate zagnati ukaz v konzoli DBMS:

> uporabite buildcentos

Ste opazili, da je podoben tistemu, ki se uporablja v mysql / mariadb za vnos v obstoječo bazo podatkov? V Mongodb kot se je izkazalo, je vse lažje.

Če želite preveriti, ali smo res v tej bazi, naredite:

> db

Vendar obstaja en odtenek, pravzaprav nova baza podatkov ne bo ustvarjena, dokler v njej ne shranite vsaj enega dokumenta. Če preverimo obstoječe baze podatkov po vsem svetu, bomo videli, da naše baze podatkov ni na seznamu:

> pokaži dbs

Izvedimo preprosto poizvedbo, ki bo shranila dokument v našo bazo podatkov:

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

Če želite izbrisati bazo podatkov, morate biti v isti bazi, v kateri boste zahtevo izbrisali in izvedli:

> db.dropDatabase ()

Na primer:

> uporabite buildcentos

prešli na db buildcentos

> db.dropDatabase ()

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

Po tem se bo baza podatkov izbrisala:

> pokaži dbs

admin 0.000GB config 0.000GB lokalni 0.000GB>

Če želite ustvariti novega uporabnika z dovoljenjem za branje in pisanje za vašo bazo podatkov, zaženite to poizvedbo:

> db.createUser (

uporabnik: "centos", pwd: "rewqrwe213213", vloge: [vloga: "readWrite", db: "buildcentos"]) 

Če želite seznam uporabnikov, zaženite poizvedbo:

> db.getUsers ()

Or

> prikažite uporabnikom

Oba ukaza dajeta enak rezultat:

Če želite izbrisati uporabnika:

> db.dropUser ('centos')

Po izvedbi ukaza, ko seznam uporabnikov, ga ne boste imeli:

> db.dropUser ('centos')

resnično

> db.getUsers ()

Konfiguracijska datoteka MongoDB

Kot pri vseh sistemih DBMS Mongodb ob poti se nahaja konfiguracijska datoteka /etc/mongod.conf. Upoštevajte njegove glavne parametre:

  • Blok SystemLog - odgovoren za beleženje. Najmanjši parametri, ki jih morate določiti v tem bloku za prijavo v delo:
    systemLog: destinacija: log logAppend: true path: /var/log/mongodb/mongod.log
  • Blok processManagement - nadzoruje postopek, v katerem se izvaja MongoDB: fork - zažene demona v ozadju, da baza podatkov deluje, privzeta vrednost je napačna pidFilePath - pot do datoteke PID timeZoneInfo - označuje pot do datoteke za nalaganje časovnih pasov Primer config:
    ProcessManagement: fork: true # fork in zaženite v ozadju pidFilePath: /var/run/mongodb/mongod.pid # lokacija pidfile timeZoneInfo: / usr / share / zoneinfo
  • Blok neto - služi za nadzor dela z omrežjem:
    port - označuje številko vrat, na kateri se bo začel mongodski demon, privzeto vrata 27017
    bindIp - ip naslov, s katerega lahko dostopate do baze. Tako kot pri mysql / mariadb je tudi ta nastavitev namenjena varnosti, da se prepreči dostop zunanjih strežnikov. Če tukaj določite 127.0.0.1, bo povezava delovala samo lokalno.
    maxIncomingConnections - število sočasnih povezav, s katerimi lahko deluje MongoDB. Ta parameter ne more preseči sistemskega parametra; privzeta vrednost je 65536
    Primer:

    neto: pristanišče: 27017 bindIp: 127.0.0.1
  • Blok varnost - ta blok je odgovoren za varnost: avtorizacija - če je možnost omogočena, je potrebna avtorizacija uporabnika, brez prijave in gesla povezava s postopkom, ki zahteva, da ne bo vzpostavljena. Privzeto onemogočeno JavascriptEnabled - omogoči / onemogoči izvajanje javascripta na strani strežnika.
  • Blok shranjevanje - blok, odgovoren za parametre shranjevanja baze podatkov: dbPath - niz, ki označuje, na katerem mestu bo shranjena baza podatkov. / Data / dbjournal (privzeto) vklopi dnevnik dolgoživosti, tako da datoteke v bazi podatkov ostanejo veljavne in obnovljene. Primer nastavitve:
    shramba: dbPath: / var / lib / mongo journal: omogočeno: res

Naprednejše nastavitve najdete v dokumentaciji MongoDB na uradni spletni strani..

Optimizirajte MongoDB za boljše delovanje

Do Mongodb Delovalo je dovolj hitro in ni bilo težav, treba je bilo izpolniti določene pogoje:

  • Uporabite datotečni sistem Xfs, namesto počasnejšega EXT4(XFS uporablja vzporedni disk V / I, kar znatno izboljša zmogljivost v primerjavi z EXT4).
  • Na strežnikih uporabljajte hitre pogone SSD / NVME, namesto počasnejših trdih diskov.
  • Prekini povezavo Prosojna ogromna stran. Če želite onemogočiti THP, dodajte ukazni klic v datoteko enote MongoDB:
    # echo 'nikoli' >> / sys / jedro / mm / transparent_hugepage / omogočeno
    # echo 'nikoli' >> / sys / jedro / mm / transparent_hugepage / defrag
  • Preverite in po potrebi nastavite neomejene meje:
    -f (velikost datoteke): neomejeno -t (čas cpu): neomejeno -v (virtualni pomnilnik): neomejeno -n (odprte datoteke): 32000 ali več -m (velikost pomnilnika): neomejeno -u (procesi / teme): 32000 in še več
  • Spremljajte tudi porabo pomnilnika na strežniku, če Mongodb porabi veliko pomnilnika, optimizirate same baze podatkov. Če je projekt zelo velik, je smiselno, da se baze podatkov razširijo na različne strežnike za večjo učinkovitost.