Mongodb - Jest to darmowa, zorientowana na dokumenty baza danych o otwartym kodzie źródłowym napisana w C ++. Sklasyfikowane jako NoSQL baza danych, ponieważ nie jest oparta na tradycyjnej strukturze relacyjnej bazy danych. Zamiast tego Mongodb są używane Json-podobne dokumenty z dynamicznymi schematami. Schematy można zmieniać w dowolnym dogodnym czasie bez konieczności instalowania nowej bazy danych ze zaktualizowanym schematem.
Zaleta NoSQL Baza danych przed zwykłymi relacyjnymi bazami danych umożliwia łatwe skonfigurowanie skalowania w poziomie, replikacji i dzielenia na fragmenty. Bazy danych MongoDB są często używane do przechowywania dokumentów, plików testowych, wiadomości e-mail itp..
W tym artykule rozważymy instalację Mongodb na serwerze z CentOS 7 lub 8, wykonaj podstawową konfigurację, a także rozważ opcje optymalizacji.
Treść
- Połącz repozytorium MongoDB
- Zainstaluj MongoDB na CentOS
- Podstawowe polecenia MongoDB
- Plik konfiguracyjny MongoDB
- Zoptymalizuj MongoDB, aby uzyskać lepszą wydajność
Połącz repozytorium MongoDB
Mongodb Ma swoje własne repozytorium, z którego przeprowadzana jest instalacja. W standardowych repozytoriach pakietów do instalacji tego serwera bazy danych, nie. Utwórz plik dla repozytorium i dodaj dane, aby się z nim połączyć:
# nano /etc/yum.repos.d/mongodb-org.repo
Zawartość pliku będzie następująca:
[mongodb-org-4.2] name = MongoDB Repository baseurl = https: //repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck = 1 włączone = 1 gpgkey = https: // www.mongodb.org/static/pgp/server-4.2.asc
W momencie pisania najnowszej wersji Mongodb w repozytorium było dokładnie 4.2. Przed instalacją na serwerze przejdź do strony programisty i sprawdź aktualną wersję.
Po utworzeniu pliku repo z opcjami repozytorium możesz kontynuować instalację pakietów.
Zainstaluj MongoDB na CentOS
Aby zainstalować niezbędne pakiety do pracy Mongodb, uruchom polecenie yum lub dnf (na CentOS 8):
# yum zainstaluj mongodb-org -y
Jak każda inna usługa, Mongodb trzeba uruchomić i dodać do uruchamiania:
# systemctl start mongod
# systemctl enable mongod
Aby sprawdzić, czy usługa mongod nasłuchuje na odpowiednim porcie (domyślnie TCP 27017), wykonaj:
# lsof -i: 27017
Możesz otworzyć dostęp do usługi MongoDB w fali plików (poniżej znajduje się przykład zapory ogniowej):
# firewall-cmd --add-port = 27017 / tcp --permanent
# firewall-cmd --reload
Dzienniki usług są dostępne w pliku:
# tail -f /var/log/mongodb/mongod.log
Przy starcie Mongodb może pojawić się ostrzeżenie:
** OSTRZEŻENIE: miękkie granice są zbyt niskie. limity ustawione na 4096 procesów, 64000 plików. Liczba procesów powinna wynosić co najmniej 32000: 0,5 razy liczba plików.
P.S. Nie miałem podobnego błędu, ale sieć często napotyka podobne pytanie i postanowiłem opisać jego rozwiązanie.
Aby rozwiązać problem, musisz otworzyć plik /etc/security/limits.d/20-nproc.conf i zwiększ limity:
# nano /etc/security/limits.d/20-nproc.conf
Na końcu pliku dodaj:
mongod soft nproc 32000
Zapisz plik i uruchom ponownie usługę mongod:
# systemctl restart mongod
Aby zalogować się do konsoli Mongodb, wprowadź mongo:
[root @ server mongodb] # mongo
Wersja powłoki MongoDB v4.2.2 łącząca się z: mongodb: //127.0.0.1: 27017 /? wersja serwera: 4.2.2
Podstawowe polecenia MongoDB
Rozważ kilka poleceń MongoDB, których można użyć w powłoce mongo. W szczególności stworzymy bazę danych, użytkownika i pokażemy kilka innych przydatnych poleceń.
Aby utworzyć bazę danych w Mongodb, musisz uruchomić polecenie w konsoli DBMS:
> użyj buildcentos
Zauważyłeś, że jest podobny do tego używanego w mysql / mariadb do wejścia do istniejącej bazy danych? W Mongodb jak się okazało, wszystko jest łatwiejsze.
Aby sprawdzić, czy naprawdę jesteśmy w tej bazie danych, wykonaj:
> db
Ale jest jeden niuans, w rzeczywistości nowa baza danych nie zostanie utworzona, dopóki nie zapiszesz w niej co najmniej jednego dokumentu. Jeśli sprawdzimy globalnie istniejące bazy danych, zobaczymy, że naszej bazy danych nie ma na liście:
> pokaż dbs
Wykonajmy proste zapytanie, które zapisze dokument w naszej bazie danych:
> db.new_collection.insert (some_key: "some_value")
Aby usunąć bazę danych, musisz znajdować się w tej samej bazie danych, którą usuniesz i wykonaj żądanie:
> db.dropDatabase ()
Na przykład:
> użyj buildcentos
przełączono na db buildcentos
> db.dropDatabase ()
„dropped”: „buildcentos”, „ok”: 1>
Następnie baza danych zostanie usunięta:
> pokaż dbs
admin 0.000GB konfiguracja 0.000GB lokalna 0.000GB>
Aby utworzyć nowego użytkownika z uprawnieniami do odczytu i zapisu do bazy danych, uruchom następujące zapytanie:
> db.createUser (
użytkownik: „centos”, pwd: „rewqrwe213213”, role: [rola: „readWrite”, db: „buildcentos”])
Aby wyświetlić użytkowników, uruchom zapytanie:
> db.getUsers ()
Lub
> pokaż użytkowników
Oba polecenia generują ten sam wynik:
Aby usunąć użytkownika:
> db.dropUser („centos”)
Po wykonaniu polecenia podczas wyświetlania listy użytkowników nie będziesz go mieć:
> db.dropUser („centos”)
prawda
> db.getUsers ()
Plik konfiguracyjny MongoDB
Jak w każdym DBMS, Mongodb wzdłuż ścieżki znajduje się plik konfiguracyjny /etc/mongod.conf. Rozważ jego główne parametry:
- Blok SystemLog - odpowiedzialny za logowanie. Minimalne parametry, które muszą być określone w tym bloku, aby zalogować się do pracy:
systemLog: miejsce docelowe: plik dziennika Dołącz: prawdziwa ścieżka: /var/log/mongodb/mongod.log
- Blok processManagement - kontrolujący proces, w którym działa MongoDB: fork - uruchamia demona w tle, aby baza danych działała, wartością domyślną jest false pidFilePath - ścieżka do pliku PID timeZoneInfo - wskazuje ścieżkę do pliku do ładowania stref czasowych Przykładowa konfiguracja:
processManagement: fork: true # fork and run in background pidFilePath: /var/run/mongodb/mongod.pid # lokalizacja pliku pid timeZoneInfo: / usr / share / zoneinfo
- Blokuj netto - służy do kontrolowania pracy z siecią:
port - wskazuje numer portu, na którym zostanie uruchomiony demon mongod, domyślnie port 27017
bindIp - adres ip, z którego można uzyskać dostęp do bazy danych. Podobnie jak w przypadku mysql / mariadb, to ustawienie służy bezpieczeństwu, aby uniknąć dostępu z zewnętrznych serwerów. Jeśli określisz tutaj 127.0.0.1, połączenie będzie działać tylko lokalnie.
maxIncomingConnections - liczba równoczesnych połączeń obsługiwanych przez MongoDB. Ten parametr nie może przekraczać parametru systemowego; wartość domyślna to 65536
Przykład:net: port: 27017 bindIp: 127.0.0.1
- Blokuj bezpieczeństwo - blok ten odpowiada za bezpieczeństwo: autoryzacja - jeśli opcja jest włączona, wymagana jest autoryzacja użytkownika, bez loginu i hasła połączenie z procesem, który żąda, nie zostanie ustanowione. Domyślnie wyłączona JavascriptEnabled - włącza / wyłącza wykonywanie javascript po stronie serwera.
- Blokuj magazynowanie - blok odpowiedzialny za parametry przechowywania bazy danych: dbPath - ciąg znaków wskazujący miejsce przechowywania bazy danych. Domyślnie / data / dbjournal - jeśli jest włączony, włącza dziennik długowieczności, aby pliki w bazie danych pozostały prawidłowe i przywrócone.
storage: dbPath: / var / lib / mongo journal: enabled: true
Bardziej zaawansowane ustawienia można znaleźć w dokumentacji MongoDB na oficjalnej stronie internetowej..
Zoptymalizuj MongoDB, aby uzyskać lepszą wydajność
To Mongodb Działał wystarczająco szybko i nie było problemów, konieczne było spełnienie pewnych warunków:
- Użyj systemu plików Xfs, zamiast wolniejszego EXT4(XFS wykorzystuje równoległe dyskowe operacje we / wy, co znacznie poprawia wydajność w porównaniu do EXT4).
- Używaj szybkich dysków SSD / NVME na swoich serwerach zamiast wolniejszych dysków twardych.
- Rozłącz Przejrzysta ogromna strona. Aby wyłączyć THP, dodaj wywołanie polecenia do pliku jednostki MongoDB:
# echo „never” >> / sys / kernel / mm / transparent_hugepage / enabled
# echo „never” >> / sys / kernel / mm / transparent_hugepage / defrag - Sprawdź i ustaw limity ulimit, jeśli to konieczne:
-f (rozmiar pliku): nieograniczony -t (czas procesora): nieograniczony -v (pamięć wirtualna): nieograniczony -n (otwarte pliki): 32000 lub więcej -m (rozmiar pamięci): nieograniczony -u (procesy / wątki): 32000 i więcej
- Monitoruj również zużycie pamięci na serwerze, jeśli Mongodb zużywa dużo pamięci, optymalizuje same bazy danych. Jeśli projekt jest bardzo duży, warto rozłożyć bazy danych na różne serwery, aby uzyskać większą wydajność.