Instalirajte i konfigurirajte MongoDB na CentOS-u

MongoDB - Ovo je besplatna, otvoreni izvor, baza podataka orijentirana na dokumente napisana na C ++. Klasificirano kao NoSQL baze podataka, jer se ne temelji na tradicionalnoj strukturi relacijske baze podataka. Umjesto toga u MongoDB koriste se JSON-slični dokumenti s dinamičnim shemama. Sheme se mogu mijenjati u bilo koje prikladno vrijeme bez potrebe za instaliranjem nove baze podataka s ažuriranom shemom.

korist NoSQL Baza podataka ispred uobičajenih relacijskih baza podataka je da lako možete konfigurirati horizontalno skaliranje, umnožavanje i izoštravanje. MongoDB baze podataka često se koriste za pohranu dokumenata, testnih datoteka, poruka e-pošte itd..

U ovom ćemo članku razmotriti instalaciju MongoDB na poslužitelj sa CentOS 7 ili 8, izvršite osnovnu konfiguraciju, a također razmotrite mogućnosti optimizacije.

sadržaj:

  • Povežite MongoDB skladište
  • Instalirajte MongoDB na CentOS
  • Osnovne MongoDB naredbe
  • MongoDB konfiguracijska datoteka
  • Optimizirajte MongoDB za bolje performanse

Povežite MongoDB skladište

MongoDB Ima vlastito spremište, odakle se izvodi instalacija. U standardnim spremištima paketa za instaliranje ovog poslužitelja baze podataka br. Stvorite datoteku za spremište i dodajte podatke da biste se povezali s njom:

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

Sadržaj datoteke bit će sljedeći:

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

U trenutku pisanja, najnovija verzija MongoDB u spremištu je bilo točno 4.2. Prije instalacije na vaš poslužitelj, idite na web lokaciju programera i provjerite trenutnu verziju.

Nakon što stvorite repo datoteku s opcijama spremišta, možete nastaviti s instalacijom paketa.

Instalirajte MongoDB na CentOS

Da biste instalirali potrebne pakete za rad MongoDB, pokrenite naredbu yum ili dnf (na CentOS 8):

# yum instalirajte mongodb-org -y

Kao i svaka druga usluga, MongoDB treba pokrenuti i dodati startup:

# systemctl start mongod
# systemctl omogućuju mongod

Da biste potvrdili da usluga mongod sluša na ispravnom priključku (prema zadanom TCP 27017), učinite:

# lsof -i: 27017

Pristup MongoDB usluzi možete otvoriti u valuti datoteka (ispod je primjer firewalld-a):

# firewall-cmd --add-port = 27017 / tcp - trajno
# firewall-cmd - ponovno učitavanje

Dnevnici usluge dostupni su u datoteci:

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

Pri pokretanju MongoDB može se pojaviti upozorenje:

** UPOZORENJE: meka obruba preniska. ograničenja postavljena na 4096 procesa, 64000 datoteka. Broj procesa trebao bi biti najmanje 32000: 0,5 puta veći broj datoteka.

P.s. Nisam imao sličnu pogrešku, ali mreža se često susreće sa sličnim pitanjem i odlučio sam opisati njezino rješenje.

Da biste riješili problem, morate otvoriti datoteku /etc/security/limits.d/20-nproc.conf i povećati ograničenja:

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

Na kraju datoteke dodajte:

mongod soft nproc 32000

Spremite datoteku i ponovno pokrenite mongod uslugu:

# systemctl ponovno pokrenite mongod

Za prijavu na konzolu MongoDB, uđi mongo:

[root @ server mongodb] # mongo

Verzija MongoDB ljuske v4.2.2 koja se povezuje na: mongodb: //127.0.0.1: 27017 /? Kompresori = onemogućeni & gssapiServiceName = mongodb Implicitna sesija: sesija "id": UUID ("f75bee8f-d71d-47fb-8728-6f67fb7a6982") MongoDB verzija poslužitelja: 4.2.2 

Osnovne MongoDB naredbe

Razmotrite nekoliko MongoDB naredbi koje se mogu koristiti u mongo ljusci. Konkretno, stvorit ćemo bazu podataka, korisnika i pokazati nekoliko drugih korisnih naredbi.

Za stvaranje baze podataka u sustavu Windows MongoDB, trebate pokrenuti naredbu u DBMS konzoli:

> koristite buildcentos

Primijetili ste da je sličan onome koji se koristi u mysql / mariadb za ulazak u postojeću bazu podataka? MongoDB kao što se ispostavilo da je sve lakše.

Da biste potvrdili da se stvarno nalazimo u ovoj bazi podataka, učinite:

> db

No, postoji jedna nijansa, u stvari, nova baza podataka neće se stvoriti dok u nju ne spremite barem jedan dokument. Ako provjerimo postojeće baze podataka na globalnoj razini, vidjet ćemo da naša baza podataka nije na popisu:

> pokaži dbs

Izvršimo jednostavan upit koji će dokument spremiti u našu bazu podataka:

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

Da biste izbrisali bazu podataka, morate biti u istoj bazi podataka u kojoj ćete izbrisati i izvršiti zahtjev:

> db.dropDatabase ()

Na primjer:

> koristite buildcentos

prebačen na db buildcentos

> db.dropDatabase ()

"ispušteno": "buildcentos", "ok": 1>

Nakon toga će se baza izbrisati:

> pokaži dbs

admin 0.000GB config 0.000GB lokalni 0.000GB>

Da biste stvorili novog korisnika s dozvolama za čitanje i pisanje za vašu bazu podataka, pokrenite sljedeći upit:

> db.createUser (

korisnik: "centos", pwd: "rewqrwe213213", uloge: [role: "readWrite", db: "buildcentos"]) 

Za popis korisnika pokrenite upit:

> db.getUsers ()

ili

> prikaži korisnike

Obje naredbe daju isti rezultat:

Da biste izbrisali korisnika:

> db.dropUser ('centos')

Nakon izvršenja naredbe, prilikom popisa korisnika, nećete je imati:

> db.dropUser ('centos')

istinski

> db.getUsers ()

MongoDB konfiguracijska datoteka

Kao i u bilo kojem DBMS-u, MongoDB nalazi se konfiguracijska datoteka smještena duž putanje /etc/mongod.conf. Razmotrite njegove glavne parametre:

  • Blok SystemLog - odgovoran za prijavu. Minimalni parametri koji moraju biti navedeni u ovom bloku za prijavu na posao:
    systemLog: odredište: file logAppend: true path: /var/log/mongodb/mongod.log
  • Blok ProcessManagement - kontrolira proces u kojem se pokreće MongoDB: fork - pokreće demon u pozadini da bi baza podataka radila, zadana vrijednost je false pidFilePath - put do PID datoteke timeZoneInfo - označava put do datoteke za učitavanje vremenskih zona Primjer config:
    processManagement: fork: true # fork i pokreće se u pozadini pidFilePath: /var/run/mongodb/mongod.pid # lokacija pidfile timeZoneInfo: / usr / share / zoneinfo
  • blok neto - služi za kontrolu rada s mrežom:
    port - označava broj porta na kojem će se pokrenuti mongod demon, prema zadanom priključku 27017
    bindIp - ip adresa s koje možete pristupiti bazi podataka. Kao i kod mysql / mariadb, i ova je postavka radi sigurnosti kako bi se izbjegao pristup sa vanjskih poslužitelja. Ako ovdje navedete 127.0.0.1, veza će raditi samo lokalno.
    maxIncomingConnections - broj istodobnih veza koje MongoDB može podnijeti. Ovaj parametar ne može premašiti sistemski parametar; zadana vrijednost je 65536
    Primjer:

    neto: port: 27017 bindIp: 127.0.0.1
  • blok sigurnosti - ovaj blok je odgovoran za sigurnost: autorizacija - ako je opcija omogućena, tada je potrebna autorizacija korisnika, a bez prijave i zaporke veza s postupkom koji zahtijeva da se ne uspostavi. Pogrešno onemogućeno. JavascriptEnabled - omogućite / onemogućite izvršavanje JavaScripta na strani poslužitelja.
  • blok skladištenje - blok odgovoran za parametre pohrane baze podataka: dbPath - niz koji pokazuje na kojem će mjestu biti pohranjena baza podataka. / Data / dbjournal - ako je omogućeno, uključuje dnevnik dugovječnosti kako bi datoteke u bazi podataka ostale važeće i obnovljene.
    pohrana: dbPath: / var / lib / mongo časopis: omogućeno: istina

Naprednije postavke možete naći u MongoDB dokumentaciji na službenom web mjestu..

Optimizirajte MongoDB za bolje performanse

koji MongoDB Djelovalo je dovoljno brzo i nije bilo problema, bilo je potrebno da se ispune određeni uvjeti:

  • Koristite datotečni sustav XFS, umjesto sporijeg ext4(XFS koristi paralelni disk I / O, što značajno poboljšava performanse u odnosu na EXT4).
  • Koristite brze SSD / NVME pogone na svojim poslužiteljima, umjesto sporijih HDD-ova.
  • isključiti Prozirna ogromna stranica. Da biste onemogućili THP, dodajte naredbeni poziv u datoteku MongoDB jedinice:
    # echo 'nikad' >> / sys / kernel / mm / transparent_hugepage / omogućeno
    # echo 'nikad' >> / sys / kernel / mm / transparent_hugepage / defrag
  • Provjerite i postavite neograničene granice ako je potrebno:
    -f (veličina datoteke): neograničeno -t (vrijeme CPU-a): neograničeno -v (virtualna memorija): neograničeno -n (otvorene datoteke): 32000 ili više -m (veličina memorije): neograničeno -u (procesi / teme): 32000 i još mnogo toga
  • Pratite i potrošnju memorije na poslužitelju ako MongoDB troši puno memorije, optimizira samu bazu podataka. Ako je projekt vrlo velik, za veće performanse ima smisla širiti baze podataka na različite poslužitelje.