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.