Instal dan konfigurasikan MongoDB pada CentOS

Mongodb - Ini adalah database gratis, sumber terbuka, dan berorientasi dokumen yang ditulis dalam C ++. Dikelompokkan sebagai NoSQL database, karena tidak didasarkan pada struktur database relasional tradisional. Sebaliknya di Mongodb digunakan Json-dokumen serupa dengan skema dinamis. Skema dapat diubah kapan saja sesuai kebutuhan tanpa perlu menginstal database baru dengan skema yang diperbarui.

Keuntungan NoSQL Basis data di depan database relasional yang biasa adalah Anda dapat dengan mudah mengkonfigurasi penskalaan horizontal, replikasi, dan sharding. Database MongoDB sering digunakan untuk menyimpan dokumen, menguji file, mengirim pesan, dll..

Pada artikel ini, kami akan mempertimbangkan instalasi Mongodb ke server dengan CentOS 7 atau 8, melakukan konfigurasi dasar, dan juga mempertimbangkan opsi pengoptimalan.

Konten:

  • Hubungkan repositori MongoDB
  • Instal MongoDB pada CentOS
  • Perintah Dasar MongoDB
  • File konfigurasi MongoDB
  • Optimalkan MongoDB untuk kinerja yang lebih baik

Hubungkan repositori MongoDB

Mongodb Ini memiliki repositori sendiri, dari mana instalasi dilakukan. Dalam repositori paket standar untuk menginstal server database ini, tidak. Buat file untuk repositori dan tambahkan data untuk terhubung ke sana:

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

Isi file adalah sebagai berikut:

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

Pada saat penulisan, versi terbaru Mongodb dalam repositori persis 4.2. Sebelum menginstal di server Anda, buka situs pengembang dan periksa versi saat ini.

Setelah membuat file repo dengan opsi repositori, Anda dapat melanjutkan dengan instalasi paket.

Instal MongoDB pada CentOS

Untuk menginstal paket yang diperlukan untuk pekerjaan Mongodb, jalankan perintah yum atau dnf (pada CentOS 8):

# yum instal mongodb-org -y

Seperti layanan lainnya, Mongodb perlu dijalankan dan ditambahkan ke startup:

# systemctl mulai mongod
# systemctl aktifkan mongod

Untuk memverifikasi bahwa layanan mongod mendengarkan pada port yang benar (secara default, TCP 27017), lakukan:

# lsof -i: 27017

Anda dapat membuka akses ke layanan MongoDB dalam gelombang file (di bawah ini adalah contoh untuk firewalld):

# firewall-cmd --add-port = 27017 / tcp --permanent
# firewall-cmd --reload

Log layanan tersedia dalam file:

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

Saat memulai Mongodb peringatan mungkin keluar:

** PERINGATAN: rlimits lunak terlalu rendah. rlimits diatur ke 4096 proses, 64000 file. Jumlah proses harus paling sedikit 32000: 0,5 kali jumlah file.

P.S. Saya tidak memiliki kesalahan yang sama, tetapi jaringan sering menemukan pertanyaan serupa dan saya memutuskan untuk menjelaskan solusinya.

Untuk mengatasi masalah, Anda perlu membuka file /etc/security/limits.d/20-nproc.conf dan menambah batas:

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

Di akhir file, tambahkan:

mongod soft nproc 32000

Simpan file dan mulai ulang layanan mongod:

# systemctl restart mongod

Untuk masuk ke konsol Mongodb, masukkan mongo:

[root @ server mongodb] # mongo

MongoDB versi shell v4.2.2 terhubung ke: mongodb: //127.0.0.1: 27017 /? Kompresor = dinonaktifkan & gssapiServiceName = mongodb Sesi tersirat: sesi "id": UUID ("f75bee8f-d71d-47fb-8728-6f67fb7a6982" MongoDB) "MongoDB versi server: 4.2.2 

Perintah Dasar MongoDB

Pertimbangkan beberapa perintah MongoDB yang bisa digunakan di mongo shell. Secara khusus, kami akan membuat database, pengguna dan menampilkan beberapa perintah berguna lainnya.

Untuk membuat basis data di Mongodb, Anda perlu menjalankan perintah di konsol DBMS:

> gunakan buildcentos

Melihat bahwa ini mirip dengan yang digunakan dalam mysql / mariadb untuk memasukkan database yang sudah ada? Masuk Mongodb ternyata semuanya lebih mudah.

Untuk memverifikasi bahwa kami benar-benar ada di database ini, lakukan:

> db

Tetapi ada satu nuansa, pada kenyataannya, database baru tidak akan dibuat sampai Anda menyimpan setidaknya satu dokumen di dalamnya. Jika kami memeriksa basis data yang ada secara global, kami akan melihat bahwa basis data kami tidak ada dalam daftar:

> tampilkan dbs

Mari kita jalankan permintaan sederhana yang akan menyimpan dokumen di basis data kami:

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

Untuk menghapus database, Anda harus berada di database yang sama dengan yang akan Anda hapus dan jalankan permintaan:

> db.dropDatabase ()

Sebagai contoh:

> gunakan buildcentos

beralih ke db buildcentos

> db.dropDatabase ()

"turun": "buildcentos", "ok": 1>

Setelah itu, basis data akan dihapus:

> tampilkan dbs

admin 0,000GB konfigurasi 0,000GB lokal 0,000GB>

Untuk membuat pengguna baru dengan izin baca dan tulis untuk database Anda, jalankan kueri berikut:

> db.createUser (

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

Untuk daftar pengguna, jalankan kueri:

> db.getUsers ()

Atau

> tunjukkan pengguna

Kedua perintah menghasilkan hasil yang sama:

Untuk menghapus pengguna:

> db.dropUser ('centos')

Setelah menjalankan perintah, saat mendaftar pengguna, Anda tidak akan memilikinya:

> db.dropUser ('centos')

benar

> db.getUsers ()

File konfigurasi MongoDB

Seperti halnya DBMS, Mongodb ada file konfigurasi yang terletak di sepanjang jalur /etc/mongod.conf. Pertimbangkan parameter utamanya:

  • Blok SystemLog - bertanggung jawab atas pencatatan. Parameter minimum yang harus ditentukan dalam blok ini agar logging berfungsi:
    systemLog: tujuan: file logAppend: true path: /var/log/mongodb/mongod.log
  • Blok processManagement - mengendalikan proses di mana MongoDB berjalan: fork - memulai daemon di latar belakang agar database berfungsi, default ke false pidFilePath - path ke file PID timeZoneInfo - menunjukkan path ke file untuk memuat zona waktu Contoh config:
    processManagement: fork: true # fork dan berjalan di latar belakang pidFilePath: /var/run/mongodb/mongod.pid # lokasi pidfile timeZoneInfo: / usr / share / zoneinfo
  • Blokir bersih - berfungsi untuk mengontrol pekerjaan dengan jaringan:
    port - menunjukkan nomor port tempat mongod daemon akan diluncurkan, secara default port 27017
    bindIp - alamat ip dari mana Anda dapat mengakses database. Seperti halnya mysql / mariadb, pengaturan ini adalah untuk keamanan, untuk menghindari akses dari server eksternal. Jika Anda menentukan 127.0.0.1 di sini, maka koneksi hanya akan berfungsi secara lokal.
    maxIncomingConnections - jumlah koneksi bersamaan yang dapat ditangani oleh MongoDB. Parameter ini tidak dapat melebihi parameter sistem, nilai standarnya adalah 65536
    Contoh:

    net: port: 27017 bindIp: 127.0.0.1
  • Blokir keamanan - blok ini bertanggung jawab untuk keamanan: otorisasi - jika opsi ini diaktifkan, maka otorisasi pengguna diperlukan, tanpa login dan kata sandi koneksi ke proses yang meminta tidak akan dibuat. Dinonaktifkan secara default. JavascriptEnabled - aktifkan / nonaktifkan eksekusi javascript di sisi server.
  • Blokir penyimpanan - blok yang bertanggung jawab atas parameter penyimpanan basis data: dbPath - string yang menunjukkan di mana basis data akan disimpan. Secara default, / data / dbjournal - jika diaktifkan, menyalakan log umur panjang sehingga file dalam database tetap valid dan dikembalikan. Contoh pengaturan:
    penyimpanan: dbPath: / var / lib / mongo journal: enabled: true

Pengaturan lebih lanjut dapat ditemukan dalam dokumentasi MongoDB di situs web resmi..

Optimalkan MongoDB untuk kinerja yang lebih baik

Untuk Mongodb Ini bekerja cukup cepat dan tidak ada masalah, perlu syarat-syarat tertentu dipenuhi:

  • Gunakan sistem file Xfs, bukannya lebih lambat EXT4(XFS menggunakan paralel I / O disk, yang secara signifikan meningkatkan kinerja dibandingkan dengan EXT4).
  • Gunakan drive SSD / NVME yang cepat di server Anda, alih-alih HDD yang lebih lambat.
  • Putuskan sambungan Halaman Besar Transparan. Untuk menonaktifkan THP, tambahkan perintah panggilan ke file unit MongoDB:
    # echo 'never' >> / sys / kernel / mm / transparent_hugepage / diaktifkan
    # echo 'never' >> / sys / kernel / mm / transparent_hugepage / defrag
  • Periksa dan tetapkan batas ulimit jika perlu:
    -f (ukuran file): tak terbatas -t (waktu cpu): tak terbatas -v (memori virtual): tak terbatas -n (membuka file): 32000 atau lebih -m (ukuran memori): tak terbatas -u (proses / utas): 32000 dan lainnya
  • Juga memantau konsumsi memori di server jika Mongodb mengkonsumsi banyak memori, mengoptimalkan database sendiri. Jika proyek ini sangat besar, masuk akal untuk menyebarkan database ke server yang berbeda untuk kinerja yang lebih baik.