Nainstalujte a nakonfigurujte MongoDB na CentOS

Mongodb - Toto je bezplatná, open source, dokumentově orientovaná databáze napsaná v C ++. Klasifikováno jako NoSQL databáze, protože není založena na tradiční relační databázové struktuře. Místo toho v Mongodb jsou použity Json-podobné dokumenty s dynamickými schématy. Schémata lze kdykoli změnit, aniž byste museli instalovat novou databázi s aktualizovaným schématem.

Výhoda NoSQL Databáze před obvyklými relačními databázemi je taková, že můžete snadno nakonfigurovat horizontální škálování, replikaci a sharding. Databáze MongoDB se často používají k ukládání dokumentů, testovacích souborů, e-mailových zpráv atd..

V tomto článku se budeme zabývat instalací Mongodb na server s CentOS 7 nebo 8, provést základní konfiguraci a také zvážit možnosti optimalizace.

Obsah:

  • Připojte úložiště MongoDB
  • Nainstalujte MongoDB na CentOS
  • Základní příkazy MongoDB
  • Konfigurační soubor MongoDB
  • Optimalizujte MongoDB pro lepší výkon

Připojte úložiště MongoDB

Mongodb má vlastní úložiště, odkud je instalace prováděna. Ve standardních repozitářích balíků pro instalaci tohoto databázového serveru č. Vytvořte soubor pro úložiště a připojte k němu data:

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

Obsah souboru bude následující:

[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 době psaní nejnovější verze Mongodb v úložišti bylo přesně 4,2. Před instalací na server přejděte na web vývojáře a zkontrolujte aktuální verzi.

Po vytvoření repo souboru s možnostmi úložiště můžete pokračovat v instalaci balíčků.

Nainstalujte MongoDB na CentOS

Chcete-li nainstalovat potřebné balíčky pro práci Mongodb, spusťte příkaz yum nebo dnf (na CentOS 8):

# yum install mongodb-org -y

Jako každá jiná služba, Mongodb je třeba spustit a přidat ke spuštění:

# systemctl start mongod
# systemctl povolit mongod

Chcete-li ověřit, zda služba mongod poslouchá na správném portu (ve výchozím nastavení TCP 27017), proveďte následující kroky:

# lsof -i: 27017

Přístup ke službě MongoDB můžete otevřít ve vlně souborů (níže je příklad pro firewalld):

# firewall-cmd --add-port = 27017 / tcp - stálý
# firewall-cmd - načíst

Protokoly služeb jsou k dispozici v souboru:

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

Při spuštění Mongodb může se zobrazit varovná zpráva

** VÝSTRAHA: měkké okraje příliš nízké. limity nastavené na 4096 procesů, 64000 souborů. Počet procesů by měl být nejméně 32000: 0,5krát počet souborů.

P.S. Neměl jsem podobnou chybu, ale síť se často setkává s podobnou otázkou a rozhodl jsem se popsat její řešení.

Chcete-li problém vyřešit, musíte soubor otevřít /etc/security/limits.d/20-nproc.conf a zvýšit limity:

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

Na konec souboru přidejte:

mongod soft nproc 32000

Uložte soubor a restartujte službu mongod:

# systemctl restart mongod

Přihlášení k konzole Mongodb, zadejte mongo:

[root @ server mongodb] # mongo

Verze shellu MongoDB v4.2.2 připojující se k: mongodb: //127.0.0.1: 27017 /? Kompresory = zakázáno & gssapiServiceName = mongodb Implicitní relace: session "id": UUID ("f75bee8f-d71d-47fb-8728-6f67fb7a6982") Mong verze serveru: 4.2.2 

Základní příkazy MongoDB

Zvažte několik příkazů MongoDB, které lze použít v shellu mongo. Zejména vytvoříme databázi, uživatele a ukážeme několik dalších užitečných příkazů.

Vytvoření databáze v systému Windows Mongodb, musíte spustit příkaz v konzole DBMS:

> použijte buildcenta

Všimli jste si, že je podobný tomu, který se používá v mysql / mariadb pro vstup do existující databáze? V Mongodb jak se ukázalo, všechno je snazší.

Chcete-li ověřit, že jsme v této databázi opravdu, postupujte takto:

> db

Ale existuje jedna nuance, ve skutečnosti nová databáze nebude vytvořena, dokud do ní neuložíte alespoň jeden dokument. Pokud globálně zkontrolujeme existující databáze, uvidíme, že naše databáze není v seznamu:

> show dbs

Spusťte jednoduchý dotaz, který uloží dokument do naší databáze:

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

Chcete-li odstranit databázi, musíte být ve stejné databázi, ve které budete smazat a provést požadavek:

> db.dropDatabase ()

Například:

> použijte buildcenta

přepnul na db buildcentos

> db.dropDatabase ()

"upuštěno": "buildcentos", "ok": 1>

Poté bude databáze smazána:

> show dbs

admin 0,000 GB konfigurovat 0,000 GB místní 0,000 GB>

Chcete-li vytvořit nového uživatele s oprávněními pro čtení a zápis do databáze, spusťte následující dotaz:

> db.createUser (

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

Chcete-li zobrazit seznam uživatelů, spusťte dotaz:

> db.getUsers ()

Nebo

> zobrazit uživatele

Oba příkazy vydávají stejný výsledek:

Odstranění uživatele:

> db.dropUser ('centos')

Po provedení příkazu nebudete při výpisu uživatelů mít:

> db.dropUser ('centos')

pravda

> db.getUsers ()

Konfigurační soubor MongoDB

Jako u každé DBMS, Mongodb podél cesty je konfigurační soubor /etc/mongod.conf. Zvažte jeho hlavní parametry:

  • Blok SystemLog - zodpovědný za protokolování. Minimální parametry, které musí být v tomto bloku uvedeny, aby protokolování fungovalo:
    systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log
  • Blok processManagement - řízení procesu, ve kterém běží MongoDB: vidlice - spustí démona na pozadí pro práci databáze, výchozí hodnota je false pidFilePath - cesta k souboru PID timeZoneInfo - označuje cestu k souboru pro načítání časových zón Příklad config:
    processManagement: fork: true # fork a spuštěný na pozadí pidFilePath: /var/run/mongodb/mongod.pid # umístění pidfile timeZoneInfo: / usr / share / zoneinfo
  • Blok net - slouží k ovládání práce se sítí:
    port - označuje číslo portu, na kterém bude spuštěn démon mongod, ve výchozím nastavení port 27017
    bindIp - ip adresa, ze které máte přístup do databáze. Stejně jako u mysql / mariadb i toto nastavení slouží pro zabezpečení, aby se zabránilo přístupu z externích serverů. Pokud zde zadáte 127.0.0.1, bude připojení fungovat pouze lokálně.
    maxIncomingConnections - počet souběžných připojení, které MongoDB zvládne. Tento parametr nemůže překročit systémový parametr, výchozí hodnota je 65536
    Příklad:

    net: port: 27017 bindIp: 127.0.0.1
  • Blok bezpečnost - tento blok je zodpovědný za bezpečnost: autorizace - pokud je tato volba povolena, pak je vyžadována autorizace uživatele, bez přihlašovacího jména a hesla se připojení k procesu, který požaduje, nebude navázáno. Ve výchozím nastavení zakázáno JavascriptEnabled - povolí / zakáže provádění javascriptu na straně serveru.
  • Blok skladování - blok odpovědný za parametry úložiště databáze: dbPath - řetězec, který označuje, na jakém místě bude databáze uložena. Ve výchozím nastavení / data / dbjournal - pokud je povoleno, zapne protokol dlouhověkosti, takže soubory v databázi zůstanou platné a obnovené.
    storage: dbPath: / var / lib / mongo journal: enabled: true

Podrobnější nastavení najdete v dokumentaci MongoDB na oficiálním webu..

Optimalizujte MongoDB pro lepší výkon

Do Mongodb Fungovalo to dostatečně rychle a nebyly problémy, bylo nutné, aby byly splněny určité podmínky:

  • Použijte systém souborů Xfs, místo pomalejšího EXT4(XFS používá paralelní disk I / O, což výrazně zvyšuje výkon ve srovnání s EXT4).
  • Místo pomalých pevných disků použijte rychlé disky SSD / NVME na svých serverech.
  • Odpojit Transparentní obrovská stránka. Chcete-li THP deaktivovat, přidejte příkazové volání do souboru jednotky MongoDB:
    # echo 'never' >> / sys / kernel / mm / transparent_hugepage / enabled
    # echo 'never' >> / sys / kernel / mm / transparent_hugepage / defrag
  • V případě potřeby zkontrolujte a nastavte mezní hodnoty:
    -f (velikost souboru): neomezený -t (čas procesoru): neomezený -v (virtuální paměť): neomezený -n (otevřené soubory): 32000 nebo více -m (velikost paměti): neomezený -u (procesy / vlákna): 32000 a další
  • Sledujte také spotřebu paměti na serveru, pokud Mongodb spotřebovává spoustu paměti, optimalizuje samotné databáze. Pokud je projekt velmi velký, má smysl rozšířit databáze na různé servery pro větší výkon.