ΠΠ°ΠΊ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ MongoDB Π½Π° VPS (ΠΡΠ»Π½ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ)
MongoDB Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½Π° NoSQL Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΡΡΠΎ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π·Π°ΠΏΠΈΡΠΈ ΠΊΠ°ΡΠΎ BSON (Binary JSON) Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΠΉΠΊΠΈ ΡΡ Π΅ΠΌΠ½ΠΎ-ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Ρ Ρ ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π½Π° ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡ ΡΡΠ΅Π· Π½Π°ΡΠΈΠ²Π½ΠΎ ΡΠ°ΡΠ΄ΠΈΡΠ°Π½Π΅. ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, MongoDB Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π° ΡΡ Π΅ΠΌΠ° Π½Π° ΡΠ°Π±Π»ΠΈΡΠ°, ΠΊΠΎΠ΅ΡΠΎ Ρ ΠΏΡΠ°Π²ΠΈ Π΄ΠΎΠΌΠΈΠ½ΠΈΡΠ°Ρ ΠΈΠ·Π±ΠΎΡ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΈ ΡΠ΅ ΡΡΡΡΠΊΡΡΡΠΈ Π½Π° Π΄Π°Π½Π½ΠΈ, Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΠ΅Π»Π½Π° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ ΠΏΡΠΈ Π·Π°ΠΏΠΈΡ ΠΈΠ»ΠΈ ΠΉΠ΅ΡΠ°ΡΡ ΠΈΡΠ½ΠΈ Π²ΡΡΠ·ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π°Π½Π½ΠΈΡΠ΅.
Π’ΠΎΠ²Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΎΠΏΠΈΡΠ²Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΎ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ Π½Π° MongoDB Π½Π° Linux VPS β Π²ΠΊΠ»ΡΡΠ²Π°ΡΠΎ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ ΠΎΡ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΡΠΊΡΠ΅ΠΏΠ²Π°Π½Π΅ Π½Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΡΠ°, ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡ Π΄ΠΎΡΡΡΠΏ, TLS ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠΏΠΈΡ. ΠΡΡΠΊΠ° ΡΡΡΠΏΠΊΠ° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°, ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Π² ΡΠ΅Π°Π»Π½Π° ΡΡΡΠ²ΡΡΠ½Π° ΡΡΠ΅Π΄Π°, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡΡΠ° ΡΠ° Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΈ.
ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ
ΠΡΠ΅Π΄ΠΈ Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΡΠ΅, ΠΏΠΎΡΠ²ΡΡΠ΄Π΅ΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ:
- VPS Ρ Ubuntu 20.04 LTS ΠΈΠ»ΠΈ Ubuntu 22.04 LTS (ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ ΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈ ΠΈ Π·Π° Π΄Π²Π΅ΡΠ΅)
- Root ΠΈΠ»ΠΈ
sudo-ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ Π΄ΠΎΡΡΡΠΏ ΡΡΠ΅Π· SSH - ΠΠΈΠ½ΠΈΠΌΡΠΌ 2 GB RAM (ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π°Ρ ΡΠ΅ 4 GB Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ)
- ΠΠΎΠ½Π΅ 20 GB ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ Π΄ΠΈΡΠΊΠΎΠ²ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π½Π° Π±ΡΡΠ· Π½ΠΎΡΠΈΡΠ΅Π» Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅
- UFW ΠΈΠ»ΠΈ iptables, Π½Π°Π»ΠΈΡΠ½ΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΡΠΈΡΠ½Π°ΡΠ° ΡΡΠ΅Π½Π°
- ΠΡΠ½ΠΎΠ²Π½ΠΎ ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ Π½Π° Linux
> ΠΠ΅Π»Π΅ΠΆΠΊΠ° Π·Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ°: ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡΡ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ WiredTiger Π½Π° MongoDB ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π²ΡΡΡΠ΅ΡΠ΅Π½ ΠΊΠ΅Ρ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΎΡ 50% ΠΎΡ (RAM β 1 GB). ΠΠ° VPS Ρ 2 GB ΡΠΎΠ²Π° Π΄Π°Π²Π° ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ 512 MB ΠΊΠ΅Ρ. ΠΠ° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ Ρ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΎ ΡΠ΅ΡΠ΅Π½Π΅ ΠΎΡΠΈΠ³ΡΡΠ΅ΡΠ΅ ΠΏΠΎΠ½Π΅ 4 GB RAM, Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ ΠΏΠΎΡΡΠΎΡΠ½Π΅Π½ Π΄ΠΈΡΠΊΠΎΠ² I/O ΠΎΡ Π½Π°ΡΠΈΡΠΊΠ° Π²ΡΡΡ Ρ ΠΊΠ΅ΡΠ°.
MongoDB ΡΡΠ΅ΡΡ Π΄ΡΡΠ³ΠΈ NoSQL Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ: ΠΡΡΠ·ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅
| Π€ΡΠ½ΠΊΡΠΈΡ | MongoDB | Redis | Cassandra | CouchDB |
|---|---|---|---|---|
| ΠΠΎΠ΄Π΅Π» Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ | ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅Π½ (BSON) | ΠΠ»ΡΡ-ΡΡΠΎΠΉΠ½ΠΎΡΡ | Π¨ΠΈΡΠΎΠΊΠ° ΠΊΠΎΠ»ΠΎΠ½Π° | ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅Π½ (JSON) |
| ΠΠ·ΠΈΠΊ Π·Π° Π·Π°ΡΠ²ΠΊΠΈ | MQL (Π±ΠΎΠ³Π°ΡΠΈ Π·Π°ΡΠ²ΠΊΠΈ) | ΠΠΎΠΌΠ°Π½Π΄ΠΈ | CQL | Mango / MapReduce |
| Π₯ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π½ΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ | ΠΠ°ΡΠΈΠ²Π½ΠΎ ΡΠ°ΡΠ΄ΠΈΡΠ°Π½Π΅ | ΠΠ»ΡΡΡΠ΅ΡΠ΅Π½ ΡΠ΅ΠΆΠΈΠΌ | ΠΠ°ΡΠΈΠ²Π½ΠΎ | ΠΡΠ»ΡΠΈ-ΠΌΠ°ΡΡΡΡ |
| ACID ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ | ΠΠ° (v4.0+, ΠΌΡΠ»ΡΠΈ-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ½ΠΈ) | Π§Π°ΡΡΠΈΡΠ½ΠΎ (Lua ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅) | ΠΠ΅ΠΊΠΈ | ΠΠ° |
| ΠΠ°ΠΉ-Π΄ΠΎΠ±ΡΡ ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° | ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΎΠ±ΡΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, APIs | ΠΠ΅ΡΠΈΡΠ°Π½Π΅, ΡΠ΅ΡΠΈΠΈ | ΠΡΠ΅ΠΌΠ΅Π²ΠΈ ΡΠ΅ΡΠΈΠΈ, IoT | Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° ΠΎΡΠ»Π°ΠΉΠ½ |
| ΠΠΈΡΠΊΠΎΠ²ΠΎ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ | ΠΡΠ½ΠΎΠ²Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ | ΠΠΎ ΠΈΠ·Π±ΠΎΡ (RDB/AOF) | ΠΡΠ½ΠΎΠ²Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ | ΠΡΠ½ΠΎΠ²Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ |
| ΠΡΠ»Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ²ΠΎ ΡΡΡΡΠ΅Π½Π΅ | Atlas Search / ΡΠ΅ΠΊΡΡΠΎΠ² ΠΈΠ½Π΄Π΅ΠΊΡ | ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ | ΠΠ΅ | ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ |
Π‘ΡΡΠΏΠΊΠ° 1: ΠΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°
ΠΠΈΠ½Π°Π³ΠΈ Π·Π°ΠΏΠΎΡΠ²Π°ΠΉΡΠ΅ Ρ Π½Π°ΠΏΡΠ»Π½ΠΎ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΡΡΠ°ΡΠ΅Π»ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ Π²ΡΠ²Π΅ΠΆΠ΄Π°Ρ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈ CVE ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠΈΡΠ°Π½ΠΈ ΠΏΡΠ΅Π΄ΠΈ Π΄ΠΎΡΠΈ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π²Π°ΡΠΈΡ ΡΡΠ΅ΠΊ ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
sudo apt update && sudo apt upgrade -yΠ‘Π»Π΅Π΄ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΡΠ΄ΡΠΎΡΠΎ ΠΈΠ»ΠΈ libc, ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅, Π·Π° Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ Π½ΠΎΠ²ΠΎΡΠΎ ΡΠ΄ΡΠΎ:
sudo rebootΠ‘Π²ΡΡΠΆΠ΅ΡΠ΅ ΡΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ ΡΡΠ΅Π· SSH ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΡΡΠ²ΡΡΡΡ ΡΠ΅ Π²ΡΡΠ½Π΅ ΠΎΠ½Π»Π°ΠΉΠ½ (ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ 30β60 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ).
Π‘ΡΡΠΏΠΊΠ° 2: ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° MongoDB ΠΎΡ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅
Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΡΠ° apt ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° Ubuntu ΡΡΠ΄ΡΡΠΆΠ°Ρ ΠΎΡΡΠ°ΡΡΠ»Π°, ΠΏΡΠ΅ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π° ΠΎΡ ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° MongoDB, ΠΊΠΎΡΡΠΎ Π»ΠΈΠΏΡΠ²Π° ΡΠΊΠΎΡΠΎΡΠ½ΠΈ ΠΊΠΎΡΠ΅ΠΊΡΠΈΠΈ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π° ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ°. ΠΠΈΠ½Π°Π³ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΠΎΡ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΎΡΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° MongoDB.
ΠΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° MongoDB GPG ΠΊΠ»ΡΡ ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅
ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° apt-key Π΅ ΠΎΡΡΠ°ΡΡΠ»Π° Π² Ubuntu 22.04. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ°Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ Ρ keyring, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π±ΠΎΡΠΈ ΠΈ Π½Π° 20.04, ΠΈ Π½Π° 22.04:
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc |
sudo gpg --dearmor -o /usr/share/keyrings/mongodb-server-7.0.gpgΠΠΎΠ±Π°Π²Π΅ΡΠ΅ Π·Π°ΠΏΠΈΡΠ° Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅:
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ]
https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/7.0 multiverse" |
sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list> ΠΠ΅Π»Π΅ΠΆΠΊΠ° Π·Π° Π²Π΅ΡΡΠΈΡΡΠ°: ΠΠ°ΠΌΠ΅Π½Π΅ΡΠ΅ 7.0 Ρ Π²Π°ΡΠ°ΡΠ° ΡΠ΅Π»Π΅Π²Π° Π²Π΅ΡΡΠΈΡ (Π½Π°ΠΏΡ. 6.0), Π°ΠΊΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π°ΡΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° Π²Π΅ΡΡΠΈΡ Π·Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. MongoDB 7.0 Π΅ ΡΠ΅ΠΊΡΡΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Ρ Π΄ΡΠ»Π³ΠΎΡΡΠΎΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΊΡΠΌ 2024 Π³.
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ MongoDB
sudo apt update
sudo apt install -y mongodb-orgΠ’ΠΎΠ²Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ:
mongod β ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΡ Π΄Π΅ΠΌΠΎΠ½ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ
mongos β ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΡΡ Π·Π° ΡΠ°ΡΠ΄ΠΈΡΠ°Π½Π΅ (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ ΠΏΡΠΈ ΡΠ°Π·Π³ΡΡΡΠ°Π½ΠΈΡ Π½Π° ΡΠ°ΡΠ΄ΠΈΡΠ°Π½ ΠΊΠ»ΡΡΡΠ΅Ρ)
mongosh β ΠΌΠΎΠ΄Π΅ΡΠ½Π°ΡΠ° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° Π½Π° MongoDB (Π·Π°ΠΌΠ΅ΡΡΠ²Π° Π½Π°ΡΠ»Π΅Π΄ΡΡΠ²Π΅Π½ΠΈΡ Π΄Π²ΠΎΠΈΡΠ΅Π½ ΡΠ°ΠΉΠ» mongo)
mongodb-database-tools β Π²ΠΊΠ»ΡΡΠ²Π° mongodump, mongorestore, mongoexport ΠΈ mongoimportΠ€ΠΈΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ
ΠΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅ΡΠ΅ Π½Π΅ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅Π½ΠΈ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π½Π°ΡΡΡΠ°Ρ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ:
echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-database hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongosh hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selectionsΠ‘ΡΡΠΏΠΊΠ° 3: ΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ
MongoDB ΡΠ°Π±ΠΎΡΠΈ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° ΡΠ΄ΡΠΎΡΠΎ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ° Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈ ΠΏΡΠ΅Π΄ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π΅ΠΌΠΎΠ½Π°.
ΠΠ°Π΄Π°Π²Π°Π½Π΅ Π½Π° ulimit Π·Π° ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅
MongoDB ΠΈΠ·ΠΈΡΠΊΠ²Π° Π²ΠΈΡΠΎΠΊ Π»ΠΈΠΌΠΈΡ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈΡΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΈ. Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ systemd Π·Π°ΠΌΡΠ½Π°:
sudo mkdir -p /etc/systemd/system/mongod.service.d
sudo tee /etc/systemd/system/mongod.service.d/limits.conf > /dev/null <<EOF
[Service]
LimitFNOFILE=64000
LimitNPROC=64000
EOFΠΠ΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Transparent Huge Pages (THP)
THP ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΡΠΊΠΎΠΊΠΎΠ²Π΅ Π½Π° Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡ Π² MongoDB. ΠΠ΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΠΉΡΠ΅ Π³ΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ:
sudo tee /etc/systemd/system/disable-thp.service > /dev/null <<EOF
[Unit]
Description=Disable Transparent Huge Pages (THP)
DefaultDependencies=no
After=sysinit.target local-fs.target
Before=mongod.service
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo never | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null'
ExecStart=/bin/sh -c 'echo never | tee /sys/kernel/mm/transparent_hugepage/defrag > /dev/null'
[Install]
WantedBy=basic.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now disable-thpΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π΄Π°Π»ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° Π΅ Π²Π»ΡΠ·Π»Π° Π² ΡΠΈΠ»Π°:
cat /sys/kernel/mm/transparent_hugepage/enabledΠΠ·Ρ
ΠΎΠ΄ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠΊΠ°Π·Π²Π° [never] ΠΊΠ°ΡΠΎ Π°ΠΊΡΠΈΠ²Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ.
Π‘ΡΡΠΏΠΊΠ° 4: Π‘ΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° MongoDB
sudo systemctl daemon-reload
sudo systemctl start mongod
sudo systemctl enable mongodΠΠΎΡΠ²ΡΡΠ΄Π΅ΡΠ΅, ΡΠ΅ Π΄Π΅ΠΌΠΎΠ½ΡΡ ΡΠ°Π±ΠΎΡΠΈ:
sudo systemctl status mongodΠΠΎΡΡΡΡΠ΅ΡΠ΅ Active: active (running) Π² ΠΈΠ·Ρ
ΠΎΠ΄Π°. ΠΠΊΠΎ ΡΡΠ»ΡΠ³Π°ΡΠ° Π½Π΅ ΡΡΠΏΠ΅Π΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°, Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ ΠΆΡΡΠ½Π°Π»Π°:
sudo tail -50 /var/log/mongodb/mongod.logΠ§Π΅ΡΡΠΈ ΠΏΡΠΈΡΠΈΠ½ΠΈ Π·Π° Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π²ΠΊΠ»ΡΡΠ²Π°Ρ:
- ΠΠΎΡΡ 27017 Π²Π΅ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° β Π΄ΡΡΠ³ ΠΏΡΠΎΡΠ΅Ρ Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ ΠΏΠΎΡΡΠ°; ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°ΠΉΡΠ΅ Π³ΠΎ Ρ
sudo ss -tlnp | grep 27017 - Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° Ρ Π΄Π°Π½Π½ΠΈ β ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ
mongodΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΈΡΠ΅ΠΆΠ°Π²Π°/var/lib/mongodb; ΠΏΠΎΠΏΡΠ°Π²Π΅ΡΠ΅ Ρsudo chown -R mongodb:mongodb /var/lib/mongodb - THP Π²ΡΠ΅ ΠΎΡΠ΅ Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ β ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡΡ WiredTiger ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²Π»ΠΎΡΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°
Π‘ΡΡΠΏΠΊΠ° 5: ΠΠ°ΡΠΈΡΠ° Π½Π° MongoDB β Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ ΠΎΡΠΎΡΠΈΠ·Π°ΡΠΈΡ
Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-ΠΊΡΠΈΡΠΈΡΠ½ΠΈΡΡ ΡΠ°Π·Π΄Π΅Π». ΠΠ΅Π·Π°ΡΠΈΡΠ΅Π½ΠΈΡΠ΅ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈ Π½Π° MongoDB, ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ, ΡΠ° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΈ Π·Π° Ρ ΠΈΠ»ΡΠ΄ΠΈ ΠΏΡΠΎΠ±ΠΈΠ²ΠΈ Π½Π° Π΄Π°Π½Π½ΠΈ. ΠΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½ΡΠΌΠ° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ, ΠΊΠΎΠ΅ΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΡΡΠΈΠ³Π½Π΅ ΠΏΠΎΡΡ 27017, ΠΈΠΌΠ° ΠΏΡΠ»Π΅Π½ Π΄ΠΎΡΡΡΠΏ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅/Π·Π°ΠΏΠΈΡ Π΄ΠΎ Π²ΡΡΠΊΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ.
Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»
Π‘Π²ΡΡΠΆΠ΅ΡΠ΅ ΡΠ΅ Ρ Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° Π½Π° MongoDB (Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠ΅Π΄ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΉ):
mongoshΠ ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ° ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ΅ΡΠ΅ ΠΊΡΠΌ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ admin ΠΈ ΡΡΠ·Π΄Π°ΠΉΡΠ΅ ΡΡΠΏΠ΅ΡΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»:
use admin
db.createUser({
user: "adminuser",
pwd: passwordPrompt(),
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" },
{ role: "dbAdminAnyDatabase", db: "admin" },
{ role: "clusterAdmin", db: "admin" }
]
})ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° passwordPrompt() Π²ΠΌΠ΅ΡΡΠΎ ΡΠ΅ΠΊΡΡΠΎΠ² Π½ΠΈΠ· ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΡΠ²Π° ΠΏΠΎΡΠ²Π°ΡΠ° Π½Π° ΠΏΠ°ΡΠΎΠ»Π°ΡΠ° Π² ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ°. ΠΡΠ²Π΅Π΄Π΅ΡΠ΅ ΠΏΠ°ΡΠΎΠ»Π°ΡΠ° ΠΏΡΠΈ ΠΏΠΎΠ΄ΠΊΠ°Π½Π°, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΠΈΠ·Π»Π΅Π·ΡΠ΅:
exitΠΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π² mongod.conf
ΠΡΠ²ΠΎΡΠ΅ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ» Π½Π° MongoDB:
sudo nano /etc/mongod.confΠΠ°ΠΌΠ΅ΡΠ΅ΡΠ΅ ΡΠ΅ΠΊΡΠΈΡΡΠ° security (ΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΊΠΎΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π°) ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΠΉΡΠ΅ ΠΎΡΠΎΡΠΈΠ·Π°ΡΠΈΡΡΠ°:
security:
authorization: enabledΠΠ°ΠΏΠ°Π·Π΅ΡΠ΅ ΠΈ ΠΈΠ·Π»Π΅Π·ΡΠ΅ (Ctrl+X, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Y, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Enter), ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ Π΄Π΅ΠΌΠΎΠ½Π°:
sudo systemctl restart mongodΠΡΠΎΠ²Π΅ΡΠΊΠ° Π΄Π°Π»ΠΈ Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π΅ Π½Π°Π»ΠΎΠΆΠ΅Π½Π°
ΠΠΏΠΈΡΠ°ΠΉΡΠ΅ Π½Π΅Π°Π²ΡΠ΅Π½ΡΠΈΡΠΈΡΠ°Π½Π° Π²ΡΡΠ·ΠΊΠ° β ΡΡ Π²Π΅ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»ΠΈ:
mongosh --eval "db.adminCommand({ listDatabases: 1 })"Π’ΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠ° Unauthorized. Π‘Π΅Π³Π° ΡΠ΅ Π°Π²ΡΠ΅Π½ΡΠΈΡΠΈΡΠ°ΠΉΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ:
mongosh -u adminuser -p --authenticationDatabase adminΠ‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Ρ ΠΎΠ±Ρ Π²Π°Ρ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ
ΠΠΈΠΊΠΎΠ³Π° Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΠΊΠΈΡ ΡΡΠΏΠ΅ΡΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π·Π° Π²ΡΡΠ·ΠΊΠΈ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π·Π° Π²ΡΡΠΊΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ:
use myappdb
db.createUser({
user: "appuser",
pwd: passwordPrompt(),
roles: [
{ role: "readWrite", db: "myappdb" }
]
})Π‘ΡΡΠΏΠΊΠ° 6: ΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° Π½Π° Π·Π°ΡΠΈΡΠ½Π°ΡΠ° ΡΡΠ΅Π½Π°
ΠΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ ΠΈΠ»ΠΈ ΡΠ°Π·ΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° bindIp
ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ mongod.conf ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π° ΡΠ°ΠΌΠΎ Ρ 127.0.0.1. Π’ΠΎΠ²Π° Π΅ ΠΏΡΠ°Π²ΠΈΠ»Π½Π°ΡΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠ°, Π°ΠΊΠΎ Π²Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠΈ Π½Π° ΡΡΡΠΈΡ VPS. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ (Π½Π°ΠΏΡ. ΠΎΡ ΡΡΡΠ²ΡΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΎΡΠ΄Π΅Π»Π΅Π½ Ρ
ΠΎΡΡ), ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°ΠΉΡΠ΅ /etc/mongod.conf:
net:
port: 27017
bindIp: 127.0.0.1,10.0.0.5ΠΠ°ΠΌΠ΅Π½Π΅ΡΠ΅ 10.0.0.5 Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈΡ ΡΠ°ΡΡΠ΅Π½ IP Π½Π° Π²Π°ΡΠΈΡ ΡΡΡΠ²ΡΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΈΠΊΠΎΠ³Π° Π½Π΅ Π·Π°Π΄Π°Π²Π°ΠΉΡΠ΅ bindIp: 0.0.0.0 Π½Π° ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π±Π΅Π· ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π½Π° Π·Π°ΡΠΈΡΠ½Π°ΡΠ° ΡΡΠ΅Π½Π°, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°ΡΠΎ Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈ IP Π°Π΄ΡΠ΅ΡΠΈ. Π‘Π²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ ΠΊΡΠΌ Π²ΡΠΈΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π±Π΅Π· Π·Π°ΡΠΈΡΠ½Π° ΡΡΠ΅Π½Π° Π΅ Π²ΠΎΠ΄Π΅ΡΠ°ΡΠ° ΠΏΡΠΈΡΠΈΠ½Π° Π·Π° ΠΈΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈ Ρ ΠΈΠ·Π»Π°Π³Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² MongoDB.
Π Π΅ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΡΠ»Π΅Π΄ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ:
sudo systemctl restart mongodΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π° Π½Π° UFW Π·Π°ΡΠΈΡΠ½Π°ΡΠ° ΡΡΠ΅Π½Π°
ΠΠΊΠΎ ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ, ΡΠ°Π·ΡΠ΅ΡΠ΅ΡΠ΅ ΡΠ°ΠΌΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈΡ Π΄ΠΎΠ²Π΅ΡΠ΅Π½ IP:
sudo ufw allow from 10.0.0.5 to any port 27017 proto tcp
sudo ufw enable
sudo ufw status verboseΠΠ»ΠΎΠΊΠΈΡΠ°ΠΉΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΎΡΡΠ°Π½Π°Π»ΠΈ Π²ΡΠ½ΡΠ½ΠΈ Π΄ΠΎΡΡΡΠΏΠΈ Π΄ΠΎ ΠΏΠΎΡΡ 27017:
sudo ufw deny 27017UFW ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° ΠΏΠΎ ΡΠ΅Π΄ β ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ allow from Π½Π°Π΄ ΡΠΈΡΠΎΠΊΠΎΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ deny ΠΈΠΌΠ° ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π·Π° Π΄ΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ IP.
Π‘ΡΡΠΏΠΊΠ° 7: ΠΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° TLS/SSL Π·Π° ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½ΠΈ Π²ΡΡΠ·ΠΊΠΈ
ΠΠ° Π²ΡΡΠΊΠΎ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅, ΠΏΡΠΈ ΠΊΠΎΠ΅ΡΠΎ ΡΡΠ°ΡΠΈΠΊΡΡ Π½Π° MongoDB ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· ΠΌΡΠ΅ΠΆΠ° β Π΄ΠΎΡΠΈ ΡΠ°ΡΡΠ½Π° LAN β TLS ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ΡΠΎ Π΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ. ΠΠ΅Π· Π½Π΅Π³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ ΠΈ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π°Ρ Π² ΠΎΡΠΊΡΠΈΡ ΡΠ΅ΠΊΡΡ.
ΠΠ΅Π½Π΅ΡΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΌΠΎΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅ (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ, ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ ΠΎΡ CA Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π° ΡΡΠ΅Π΄Π° β ΠΎΠ±ΠΌΠΈΡΠ»Π΅ΡΠ΅ ΡΡΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ ΠΌΡ Ρ SSL ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ Π·Π° Π²Π°ΡΠΈΡ Π΄ΠΎΠΌΠ΅ΠΉΠ½):
sudo mkdir -p /etc/mongodb/ssl
sudo openssl req -newkey rsa:4096 -nodes -keyout /etc/mongodb/ssl/mongodb.key
-x509 -days 365 -out /etc/mongodb/ssl/mongodb.crt
-subj "/CN=your-vps-hostname"
sudo cat /etc/mongodb/ssl/mongodb.crt /etc/mongodb/ssl/mongodb.key |
sudo tee /etc/mongodb/ssl/mongodb.pem > /dev/null
sudo chown -R mongodb:mongodb /etc/mongodb/ssl
sudo chmod 600 /etc/mongodb/ssl/mongodb.pemΠΠΎΠ±Π°Π²Π΅ΡΠ΅ TLS ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΊΡΠΌ /etc/mongod.conf:
net:
port: 27017
bindIp: 127.0.0.1
tls:
mode: requireTLS
certificateKeyFile: /etc/mongodb/ssl/mongodb.pemΠ Π΅ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ MongoDB ΠΈ ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ Ρ TLS:
sudo systemctl restart mongod
mongosh --tls --tlsCertificateKeyFile /etc/mongodb/ssl/mongodb.pem
--tlsAllowInvalidCertificates -u adminuser -p --authenticationDatabase adminΠ€Π»Π°Π³ΡΡ --tlsAllowInvalidCertificates Π΅ ΠΏΡΠΈΠ΅ΠΌΠ»ΠΈΠ² ΡΠ°ΠΌΠΎ Π·Π° ΡΠ°ΠΌΠΎΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°. ΠΡΠ΅ΠΌΠ°Ρ
Π½Π΅ΡΠ΅ Π³ΠΎ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ, ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ ΠΎΡ CA.
Π‘ΡΡΠΏΠΊΠ° 8: ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π² mongod.conf
ΠΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΎ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ Π½Π° VPS Ρ dedicated ΡΠ΅ΡΡΡΡΠΈ, Π½Π°ΡΡΡΠΎΠΉΡΠ΅ ΠΊΠ΅ΡΠ° Π½Π° WiredTiger ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ Π·Π° ΠΆΡΡΠ½Π°Π»ΠΈΡΠ°Π½Π΅. ΠΡΠ²ΠΎΡΠ΅ΡΠ΅ /etc/mongod.conf ΠΈ Π΄ΠΎΠ±Π°Π²Π΅ΡΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π΅ΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ:
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
wiredTiger:
engineConfig:
cacheSizeGB: 1.5
operationProfiling:
slowOpThresholdMs: 100
mode: slowOp
replication:
oplogSizeMB: 1024ΠΠ±ΡΡΠ½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΡΡΠΎΠ²ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ°:
cacheSizeGBβ ΠΠ°Π΄Π°ΠΉΡΠ΅ ΡΠΎΠ²Π° Π½Π° ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ 50% ΠΎΡ Π½Π°Π»ΠΈΡΠ½Π°ΡΠ° RAM ΠΌΠΈΠ½ΡΡ 1 GB. ΠΠ° VPS Ρ 4 GB ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅1.5. ΠΠ° VPS Ρ 8 GB ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅3.5.slowOpThresholdMsβ ΠΠ°ΡΠ²ΠΊΠΈΡΠ΅, Π½Π°Π΄Π²ΠΈΡΠ°Π²Π°ΡΠΈ ΡΠΎΠ·ΠΈ ΠΏΡΠ°Π³ (Π² ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ), ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°Ρ Π² ΠΏΡΠΎΡΠΈΠ»Π΅ΡΠ°. ΠΠ°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ΡΠΎ ΠΌΡ ΠΏΠΎΠΌΠ°Π³Π° Π·Π° ΡΠ°Π½Π½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ Π±Π΅Π· ΠΈΠ½Π΄Π΅ΠΊΡ.oplogSizeMBβ Π Π΅Π»Π΅Π²Π°Π½ΡΠ½ΠΎ, Π°ΠΊΠΎ ΠΏΠ»Π°Π½ΠΈΡΠ°ΡΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΡΠ»Π΅Π½ΠΎΠ²Π΅ Π½Π° replica set ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ. ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎΡΠΎ ΠΎΡΠ°Π·ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° oplog ΠΈΠ·Π±ΡΠ³Π²Π° Π·Π°Π±Π°Π²ΡΠ½Π΅ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡΠ° ΠΏΡΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ Ρ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π΅Π½ Π·Π°ΠΏΠΈΡ.
ΠΡΠΈΠ»ΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅:
sudo systemctl restart mongodΠ‘ΡΡΠΏΠΊΠ° 9: Π Π΅Π·Π΅ΡΠ²Π½ΠΎ ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ ΠΈ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Ρ mongodump
Π ΡΡΠ½ΠΎ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎ ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅
mongodump
--uri="mongodb://adminuser:yourpassword@127.0.0.1:27017/?authSource=admin"
--out /var/backups/mongodb/$(date +%Y-%m-%d)Π ΡΡΠ½ΠΎ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅
mongorestore
--uri="mongodb://adminuser:yourpassword@127.0.0.1:27017/?authSource=admin"
/var/backups/mongodb/2024-06-15ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠΏΠΈΡ Ρ Cron
Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΡΠΊΡΠΈΠΏΡ Π·Π° ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎ ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅:
sudo tee /usr/local/bin/mongodb-backup.sh > /dev/null <<'EOF'
#!/bin/bash
BACKUP_DIR="/var/backups/mongodb"
TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S)
MONGO_URI="mongodb://adminuser:yourpassword@127.0.0.1:27017/?authSource=admin"
RETENTION_DAYS=7
mkdir -p "${BACKUP_DIR}/${TIMESTAMP}"
mongodump --uri="${MONGO_URI}" --out="${BACKUP_DIR}/${TIMESTAMP}"
find "${BACKUP_DIR}" -maxdepth 1 -type d -mtime +${RETENTION_DAYS} -exec rm -rf {} ;
EOF
sudo chmod +x /usr/local/bin/mongodb-backup.shΠΠ»Π°Π½ΠΈΡΠ°ΠΉΡΠ΅ Π³ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ Π² 2:00 Ρ. ΡΡΡΡΠΈΠ½ΡΠ°:
(crontab -l 2>/dev/null; echo "0 2 * * * /usr/local/bin/mongodb-backup.sh >> /var/log/mongodb-backup.log 2>&1") | crontab -> ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΎ ΡΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅: Π‘ΡΡ
ΡΠ°Π½ΡΠ²Π°ΠΉΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠΏΠΈΡ ΠΈΠ·Π²ΡΠ½ ΡΡΡΠ²ΡΡΠ°. Π‘ΡΡ
ΡΠ°Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈ ΠΊΠΎΠΏΠΈΡ Π½Π° ΡΡΡΠΈΡ VPS ΠΊΠ°ΡΠΎ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π½Π΅ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π·Π°ΡΠΈΡΠ° ΡΡΠ΅ΡΡ ΠΏΠΎΠ²ΡΠ΅Π΄Π° Π½Π° Π΄ΠΈΡΠΊΠ° ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΠ²ΡΡΠ°. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ rsync, rclone ΠΈΠ»ΠΈ S3-ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎ ΠΎΠ±Π΅ΠΊΡΠ½ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Π·Π° Π΄Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ°ΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠΏΠΈΡ Π½Π° ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΎ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
Π‘ΡΡΠΏΠΊΠ° 10: ΠΠ°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π½Π° Π·Π΄ΡΠ°Π²Π΅ΡΠΎ Π½Π° MongoDB
ΠΠ³ΡΠ°Π΄Π΅Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅
Π mongosh ΠΈΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° ΡΡΡΠ²ΡΡΠ°:
db.serverStatus()
db.stats()
db.currentOp()ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° mongostat ΠΈ mongotop
ΠΡ ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ° Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΠΉΡΠ΅ Π±ΡΠΎΡ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π² ΡΠ΅Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅:
mongostat --uri="mongodb://adminuser:yourpassword@127.0.0.1:27017/?authSource=admin"ΠΠ°Π±Π»ΡΠ΄Π°Π²Π°ΠΉΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅/Π·Π°ΠΏΠΈΡ ΠΏΠΎ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΠΈ:
mongotop --uri="mongodb://adminuser:yourpassword@127.0.0.1:27017/?authSource=admin"ΠΠ»ΡΡΠΎΠ²ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π·Π° Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅
| ΠΠ΅ΡΡΠΈΠΊΠ° | ΠΡΠ°Π³ Π·Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ | ΠΠ°ΠΊΠ²ΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π° |
|---|---|---|
wiredTiger.cache.bytes currently in cache | > 90% ΠΎΡ cacheSizeGB | ΠΠ°ΡΠΈΡΠΊ Π²ΡΡΡ Ρ ΠΊΠ΅ΡΠ°; ΡΠ²Π΅Π»ΠΈΡΠ΅ΡΠ΅ RAM ΠΈΠ»ΠΈ Π½Π°ΠΌΠ°Π»Π΅ΡΠ΅ Π½Π°Π±ΠΎΡΠ° ΠΎΡ Π΄Π°Π½Π½ΠΈ |
connections.current | > 80% ΠΎΡ connections.available | ΠΠ·ΡΠ΅ΡΠΏΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠ»Π° ΠΎΡ Π²ΡΡΠ·ΠΊΠΈ; Π½Π°ΡΡΡΠΎΠΉΡΠ΅ ΠΏΡΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ |
opcounters.getmore | ΠΠΎΡΡΠΎΡΠ½Π½ΠΎ Π²ΠΈΡΠΎΠΊΠ° | ΠΠ΅Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡ Π½Π° ΠΊΡΡΡΠΎΡΠ°; ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ |
repl.lag (replica sets) | > 10 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ | ΠΠ°Π±Π°Π²ΡΠ½Π΅ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡΠ°; ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΠΌΡΠ΅ΠΆΠ°ΡΠ° ΠΈ Π΄ΠΈΡΠΊΠΎΠ²ΠΈΡ I/O |
locks.Global.acquireWaitCount | ΠΡΡΠΊΠ° ΡΡΡΠΎΠΉΡΠΈΠ²Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ | ΠΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΈΡ Π·Π° Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅; ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ Π΄ΡΠ»Π³ΠΎΡΡΠ°ΠΉΠ½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ |
ΠΠ·Π±ΠΎΡ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ Ρ ΠΎΡΡΠΈΠ½Π³ Π·Π° MongoDB
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡΡΠ° Π½Π° Π²Π°ΡΠ°ΡΠ° ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡ Π½Π° MongoDB ΡΠ° ΠΏΡΡΠΊΠΎ ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°. Π Π°Π·Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ ΡΠ΅Π·ΠΈ Π½ΠΈΠ²Π° Π½Π° ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅:
- Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ staging: Π‘ΡΠ°Π½Π΄Π°ΡΡΠ΅Π½ VPS Ρ 2β4 GB RAM Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ΅Π½ Π·Π° Π½Π΅ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ, ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡ Π΅ΠΌΠΈ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΡΠ΅Π΄ΠΈ.
- ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅Π½ Π²ΡΠ·Π΅Π»: VPS Ρ 4β8 GB RAM, NVMe ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ dedicated CPU ΡΠ΄ΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΡΠΌΠ΅ΡΠ΅Π½ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ ΡΡΠ°ΡΠΈΠΊ Π·Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
- ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ Ρ Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΠ΅Π»Π½Π° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ: Dedicated ΡΡΡΠ²ΡΡ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° Π΅ΡΠ΅ΠΊΡΠ° Π½Π° ΡΡΠΌΠ½ΠΈΡ ΡΡΡΠ΅Π΄, ΠΏΡΠΈΡΡΡ Π½Π° Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΡΠ΅Π΄ΠΈ. I/O ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ΅ Π½Π° WiredTiger ΡΠ΅ Π²ΡΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΡ bare-metal NVMe ΠΌΠ°ΡΠΈΠ²ΠΈ.
- ML/Π°Π½Π°Π»ΠΈΡΠΈΡΠ½ΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ: ΠΠΊΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅ MongoDB Π·Π°Π΅Π΄Π½ΠΎ Ρ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΈ Π·Π° Π΄Π°Π½Π½ΠΈ, Π°Π½Π°Π»ΠΈΡΠΈΠΊΠ° Ρ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠΈΠΈ ΠΈΠ»ΠΈ Π²Π΅ΠΊΡΠΎΡΠ½ΠΎ ΡΡΡΡΠ΅Π½Π΅, GPU Ρ ΠΎΡΡΠΈΠ½Π³ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠΊΠΎΡΠΈ Π·Π°Π΄Π°ΡΠΈΡΠ΅ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°.
ΠΠ° ΡΠ°Π·Π³ΡΡΡΠ°Π½ΠΈΡ, ΠΈΠ·ΠΈΡΠΊΠ²Π°ΡΠΈ Π³ΡΠ°ΡΠΈΡΠ΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, VPS Ρ cPanel ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΏΠΎΠ·Π½Π°ΡΠ° ΡΡΠ΅Π΄Π° Π·Π° Π΅ΠΊΠΈΠΏΠΈ, ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΠ΄ΠΎΠ±Π½ΠΈ Ρ ΡΠΈΡΡΠΎ CLI Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠ°Π½Π΅, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎΡΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° mongod.conf ΠΎΡΡΠ°Π²Π° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ.
ΠΠ°ΡΡΠΈΡΠ° Π·Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΡΠΏΠΈΡΡΠΊ ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΡΠ΅ Π½Π° ΠΆΠΈΠ²ΠΎ:
- [ ] MongoDB ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ ΠΎΡ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Π²Π΅ΡΡΠΈΡΡΠ° Π΅ ΡΠΈΠΊΡΠΈΡΠ°Π½Π°
- [ ] Π£ΡΠ»ΡΠ³Π°ΡΠ°
mongodΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π° ΠΈ ΠΏΠΎΡΠ²ΡΡΠ΄Π΅Π½Π° ΠΊΠ°ΡΠΎactive (running) - [ ] Transparent Huge Pages Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈ
- [ ]
ulimitΠ·Π° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΈ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π° 64000 ΠΈΠ»ΠΈ ΠΏΠΎ-Π²ΠΈΡΠΎΠΊ - [ ] ΠΠ²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π° Π²
mongod.conf(authorization: enabled) - [ ] ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΠΊΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ Ρ
passwordPrompt()β Π±Π΅Π· ΠΏΠ°ΡΠΎΠ»ΠΈ Π² ΠΎΡΠΊΡΠΈΡ ΡΠ΅ΠΊΡΡ Π² ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ° - [ ] ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΡΠ° ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ Ρ ΡΠΎΠ»ΠΈ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ
- [ ]
bindIpΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΡΠ°ΠΌΠΎ Π΄ΠΎ localhost ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ Π΄ΠΎΠ²Π΅ΡΠ΅Π½ΠΈ IP Π°Π΄ΡΠ΅ΡΠΈ - [ ] ΠΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π½Π° UFW ΡΠ° Π½Π° ΠΌΡΡΡΠΎ β ΠΏΠΎΡΡ 27017 Π΅ Π±Π»ΠΎΠΊΠΈΡΠ°Π½ ΠΎΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ
- [ ] TLS Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ Ρ Π²Π°Π»ΠΈΠ΄Π΅Π½ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ
- [ ] ΠΠ΅ΡΡΡ Π½Π° WiredTiger Π΅ ΠΎΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ Π½Π° 50% ΠΎΡ (RAM β 1 GB)
- [ ] ΠΡΠΎΡΠΈΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π±Π°Π²Π½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΎ (
slowOpThresholdMs: 100) - [ ] ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΈ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈ ΠΊΠΎΠΏΠΈΡ Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΠΈΠ·Π²ΡΠ½ ΡΡΡΠ²ΡΡΠ°
- [ ] ΠΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ΡΠΎ ΠΎΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅ Π΅ ΡΠ΅ΡΡΠ²Π°Π½ΠΎ β ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ ΡΡΠ΅ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π»ΠΈ, Π½Π΅ Π΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅
Π§ΠΠ
ΠΠ° ΠΊΠΎΠΉ ΠΏΠΎΡΡ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ»ΡΡΠ° MongoDB ΠΈ ΡΡΡΠ±Π²Π° Π»ΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ?
MongoDB ΡΠ»ΡΡΠ° Π½Π° TCP ΠΏΠΎΡΡ 27017 ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅. ΠΡΠΎΠΌΡΠ½Π°ΡΠ° ΠΌΡ ΠΊΡΠΌ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ΅Π½ ΠΏΠΎΡΡ Π΄ΠΎΠ±Π°Π²Ρ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»Π½Π° Π½Π΅ΡΡΠ½ΠΎΡΠ°, Π½ΠΎ Π½Π΅ Π΅ Π·Π°ΠΌΠ΅ΡΡΠΈΡΠ΅Π» Π½Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΡΠ° ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π½Π° Π·Π°ΡΠΈΡΠ½Π°ΡΠ° ΡΡΠ΅Π½Π°. ΠΠΊΠΎ Π³ΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅, Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΉΡΠ΅ net.port Π² /etc/mongod.conf ΠΈ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°ΠΉΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° Π½Π° UFW ΠΈ Π½ΠΈΠ·ΠΎΠ²Π΅ Π·Π° Π²ΡΡΠ·ΠΊΠ° ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ.
ΠΠ°ΡΠΎ MongoDB ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ RAM Π΄ΠΎΡΠΈ Ρ ΠΌΠ°Π»ΡΠΊ Π½Π°Π±ΠΎΡ ΠΎΡ Π΄Π°Π½Π½ΠΈ?
WiredTiger ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Ρ Π²ΡΡΡΠ΅ΡΠ½ΠΈΡ ΡΠΈ ΠΊΠ΅Ρ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠΎΡΠΌΡΠ»Π°ΡΠ° max(50% of (RAM - 1 GB), 256 MB). Π’ΠΎΠ²Π° Π΅ ΡΠΌΠΈΡΠ»Π΅Π½ΠΎ β ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° ΠΎΡ Π΄ΠΈΡΠΊΠ°. ΠΠΊΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° RAM Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π° ΠΌΠ°Π»ΡΠΊ VPS, ΠΈΠ·ΡΠΈΡΠ½ΠΎ Π·Π°Π΄Π°ΠΉΡΠ΅ cacheSizeGB Π² /etc/mongod.conf Π½Π° ΠΏΠΎ-Π½ΠΈΡΠΊΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ.
ΠΠΎΠ³Π° Π»ΠΈ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌ MongoDB Π½Π° ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ Ρ ΠΎΡΡΠΈΠ½Π³?
ΠΠ΅. MongoDB ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΠΎΡΡΠΎΡΠ½Π΅Π½ ΡΠΎΠ½ΠΎΠ² Π΄Π΅ΠΌΠΎΠ½ (mongod), Π΄ΠΈΡΠ΅ΠΊΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π΄ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° ΡΠΈ Ρ Π΄Π°Π½Π½ΠΈ ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΊΡΠΌ ΠΌΡΠ΅ΠΆΠΎΠ² ΠΏΠΎΡΡ. ΠΠΈΡΠΎ Π΅Π΄Π½ΠΎ ΠΎΡ ΡΡΡ
Π½Π΅ Π΅ Π½Π°Π»ΠΈΡΠ½ΠΎ Π½Π° ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ ΡΠ΅Π± Ρ
ΠΎΡΡΠΈΠ½Π³. VPS Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π°ΡΠ° ΠΆΠΈΠ·Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π½Π° ΡΡΠ΅Π΄Π°.
ΠΠ°ΠΊΠ²Π° Π΅ ΡΠ°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ mongodump ΠΈ ΡΠ½ΠΈΠΌΠΊΠ° Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈ ΠΊΠΎΠΏΠΈΡ?
mongodump ΠΈΠ·Π²ΡΡΡΠ²Π° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎ ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ β ΡΠ΅ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ ΡΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π·Π° Π·Π°ΡΠ²ΠΊΠΈ Π½Π° MongoDB ΠΈ Π³ΠΈ Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ° ΠΊΠ°ΡΠΎ BSON ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. Π’ΠΎΠΉ Π΅ ΠΏΡΠ΅Π½ΠΎΡΠΈΠΌ ΠΈ ΡΠ°Π±ΠΎΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π²Π΅ΡΡΠΈΠΈ, Π½ΠΎ Π΅ ΠΏΠΎ-Π±Π°Π²Π΅Π½ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³Π°ΡΠ°Π½ΡΠΈΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΠ°Π±ΠΎΡΠ΅ΡΠ° ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡ Ρ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π΅Π½ Π·Π°ΠΏΠΈΡ Π±Π΅Π· --oplog. Π‘Π½ΠΈΠΌΠΊΠ°ΡΠ° Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° (LVM, ZFS ΠΈΠ»ΠΈ ΡΠ½ΠΈΠΌΠΊΠ° Π½Π° Π±Π»ΠΎΠΊΠΎΠ²ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π² ΠΎΠ±Π»Π°ΠΊΠ°) ΡΠ»Π°Π²Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Ρ Π΄Π°Π½Π½ΠΈ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ ΠΈ Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-Π±ΡΡΠ·Π° Π·Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π½Π°Π±ΠΎΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ, Π½ΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΡΡ Π·Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π° Π΅ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅.
ΠΠ°ΠΊ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡ ΠΊΠΎΡ Π²Π΅ΡΡΠΈΡ Π½Π° MongoDB Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π°?
ΠΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°:
mongod --versionΠΠ»ΠΈ ΠΎΡ Π²ΡΡΡΠ΅ Π² mongosh:
db.version()
ΠΎΡ Π²ΡΠΈΡΠΊΠΈ Ρ
ΠΎΡΡΠΈΠ½Π³ ΡΡΠ»ΡΠ³ΠΈ