Daftar periksa operasi dan pengembangan MongoDB dimaksudkan untuk membantu administrator database menghindari masalah dalam lingkungan produksi MongoDB. Daftar Periksa Pengembangan harus mengatasi masalah seperti...
- Desain skema
- Daya tahan data
- Replikasi
- Drive
- Sharding
Daftar Periksa Operasi, di sisi lain, membahas...
- Replikasi
- Sistem file
- Sharding
- Perangkat Keras
- Journal (WiredTiger Storage Engine)
- Konfigurasi sistem operasi
- Penerapan ke perangkat keras awan
- Pemantauan
- Cadangan dan penyeimbangan beban
Sebelum memulai proyek, sebaiknya kerjakan daftar periksa operasi dan pengembangan untuk memungkinkan kelancaran pengoperasian MongoDB dalam produksi. Artikel ini menjelaskan checklist operasi dan pengembangan sebelum men-deploy MongoDB.
Daftar Periksa Operasi MongoDB
Replikasi
Semua kumpulan anggota replika yang tidak disembunyikan harus disediakan secara identik terkait dengan disk, RAM, penyiapan jaringan, dan CPU.
Ukuran oplog harus dikonfigurasi dengan benar untuk memenuhi kebutuhan operasional seperti:
- Untuk menghindari kebutuhan sinkronisasi ulang penuh, jendela aplikasi oplog replika harus mencakup waktu henti reguler dan jendela pemeliharaan.
- Untuk memulihkan anggota kumpulan replikasi, jendela oplog replika harus selalu mencakup waktu yang diperlukan.
Set produksi minimal harus menggabungkan tiga node pembawa data yang berjalan dengan penjurnalan diaktifkan. Selain itu, penulisan harus dilakukan dengan perhatian penulisan "mayoritas" untuk tujuan memastikan ketersediaan dan ketahanan data.
Deployment harus berisi jumlah anggota voting yang ganjil untuk memfasilitasi proses voting setiap kali node utama dalam cluster gagal.
Daripada menggunakan alamat IP yang mungkin mengharuskan seseorang untuk mengubah konfigurasi karena perubahan IP, disarankan untuk menggunakan nama host DNS logis.
Pastikan bahwa instance mongod memiliki 0 atau 1 suara.
Semua instance Mongod harus terhubung secara penuh dan dua arah sehingga ada kemudahan komunikasi data antara node yang terlibat.
Journal
Ini adalah strategi menulis di depan logging file jurnal pada disk yang digunakan untuk memastikan ketahanan data jika terjadi kegagalan. Semua instans harus mengaktifkan penjurnalan karena alasan ini, terutama saat menangani beban kerja intensif penulisan.
Namun, pertimbangkan bahwa ini memengaruhi penguatan gaya snapshot karena catatan yang membentuk status database akan berada di volume yang dipartisi.
Sistem File
Jangan gunakan drive Sistem File Berita (NFS) untuk dbPath. Drive NFS mungkin dapat menghasilkan kinerja yang tidak stabil. Drive virtual VMware direkomendasikan untuk digunakan oleh pengguna VMware.
Pastikan partisi disk Anda selaras dengan konfigurasi RAIDON Anda.
Untuk pengguna Linux/Unix, disarankan menggunakan XFS. XFS dikenal berkinerja lebih baik dengan MongoDB.
Untuk pengguna sistem operasi windows, sistem file NTFS direkomendasikan. Anda harus menghindari penggunaan sistem file FAT apa pun.
Penerapan ke Perangkat Keras Cloud
Windows Azure:Ubah TCP keepalive (tcp_keepalive_time) menjadi 100-120. Waktu tunggu habis TCP pada penyeimbang tumpukan Azure juga moderat untuk perilaku penggabungan asosiasi MongoDB
Gunakan MongoDB 2.6.4 atau versi yang lebih baru pada kerangka kerja dengan penyimpanan latensi tinggi, seperti Windows Azure, karena versi ini menggabungkan peningkatan eksekusi untuk kerangka kerja tersebut.
Berbagi
Tempatkan server konfigurasi Anda pada perangkat keras khusus untuk eksekusi ideal dalam cluster yang luas.
Pastikan perangkat keras memiliki RAM yang cukup untuk menyimpan catatan informasi sepenuhnya di memori dan memiliki penyimpanan khusus.
Terapkan router mongos sesuai dengan pedoman Penyiapan Generasi.
Sinkronkan jam pada semua komponen sharded cluster Anda dengan menggunakan NTP.
Pastikan jaringan dua arah penuh antara mongos, mongod, dan server konfigurasi.
Gunakan CNAME untuk mengenali server konfigurasi Anda ke cluster sehingga Anda dapat mengganti nama dan memberi nomor ulang server konfigurasi Anda tanpa downtime.
Pemantauan
Anda dapat menggunakan alat seperti MongoDB Cloud Manager, ClusterControl, atau kerangka kerja pemantauan lainnya untuk menyaring metrik basis data utama dan mengatur alarm. Gabungkan lansiran untuk metrik:
- Antrian
- Jendela oplog replikasi
- Pernyataan
- Kesalahan halaman
- Keterlambatan replikasi
Pantau metrik perangkat keras untuk server Anda. Terutama memperhatikan ruang disk yang tersedia, penggunaan disk, CPU
Perangkat Keras
Gunakan drive RAID10 dan SSD untuk kinerja yang ideal.
SAN dan Virtualisasi:
Pastikan bahwa setiap instance mongod telah menyediakan IOPS untuk dbPath-nya, atau memiliki drive fisik atau LUN yang diklaimnya.
Hindari sorotan memori dinamis, seperti pembengkakan memori, saat berjalan di lingkungan virtual.
Hindari menyetel semua individu kumpulan salinan pada SAN yang sama, karena SAN dapat menjadi satu titik kekecewaan.
Keseimbangan Beban
Desain penyeimbang beban untuk mengaktifkan "sesi lekat" atau "afinitas klien" dengan batas waktu yang memadai untuk koneksi yang ada.
Hindari menempatkan penyeimbang beban di antara cluster MongoDB atau komponen kumpulan replika.
Cadangan
Rencanakan pengujian intermiten untuk proses pencadangan dan pemulihan Anda agar memiliki pengukur waktu dan mengonfirmasi kegunaannya.
Konfigurasi Sistem Operasi
Windows
Pertimbangkan untuk menonaktifkan pemutakhiran "waktu akses terakhir" NTFS.
Format disk NTFS dengan menggunakan ukuran unit Penjatahan default 4096 byte.
Linux
Matikan halaman transparan yang besar.
Buat penyesuaian pada pengaturan readhead dari dadu tempat file database Anda disimpan. Pembacaan mesin penyimpanan WiredTiger harus disetel antara 8 dan 32.
Jika menggunakan tune di RHEL / CentOS, Anda harus menyesuaikan profil yang disesuaikan. Banyak profil yang disetel yang dikirimkan dengan RHEL / CentOS dapat berdampak buruk pada eksekusi dengan pengaturan defaultnya. Sesuaikan profil yang Anda pilih untuk:
Nonaktifkan halaman besar langsung.
Setel readahead antara 8 dan 32 dalam semua jenis kapasitas media.
Gunakan penjadwal disk noop atau tenggat waktu untuk drive SSD.
Gunakan penjadwal disk noop untuk drive tervirtualisasi di VM tamu.
Nonaktifkan NUMA atau setel vm.zone_reclaim_mode ke 0 dan jalankan kemunculan mongod dengan interleaving simpul.
Sesuaikan nilai ulimit pada perangkat keras Anda agar sesuai dengan kasus penggunaan Anda. Jika kejadian mongod atau mongos yang berbeda berjalan di bawah klien yang sama, skala nilai ulimit dengan cara yang sama.
Desain pegangan catatan yang memadai (fs.file-max), batasan bagian pid (kernel.pid_max), utas maksimum per proses (kernel.threads-max), dan jumlah maksimum area kerangka memori per proses (vm.max_map_count) untuk pengiriman Anda. Untuk kerangka kerja yang luas, nilai berikut memberikan titik awal yang bagus:
fs.file-max value of 98000,
kernel.pid_max value of 64000,
kernel.threads-max value of 64000, and vm.max_map_count value of 128000
Pastikan kerangka kerja Anda memiliki ruang swap yang dikonfigurasi.
Singgung dokumentasi sistem operasi Anda untuk tempat menarik dengan ukuran yang benar.
Pastikan bahwa TCP keepalive default sistem disetel secara akurat. Nilai 300 sering kali memberikan kinerja yang unggul untuk kumpulan replika dan kluster sharding.
Daftar Periksa Pengembangan MongoDB
Replikasi
Gunakan jumlah individu pemilih yang ganjil untuk menjamin bahwa pemilihan berlangsung secara efektif. Anda akan memiliki hingga 7 individu yang memberikan suara. Jika Anda memiliki jumlah individu pemilih yang genap, dan kendala, seperti biaya, larangan menyertakan sekunder lain untuk menjadi anggota pemungutan suara, Anda akan dapat menyertakan seorang arbiter untuk menjamin jumlah suara yang ganjil.
Menjamin bahwa perangkat sekunder Anda tetap terbarui dengan memanfaatkan alat pemantauan dan dengan menunjukkan masalah penulisan yang sesuai.
Jangan gunakan pembacaan tambahan untuk menskalakan throughput baca secara keseluruhan.
Desain Skema
Data di MongoDB berisi pola dinamis. Koleksi tidak mendukung struktur laporan. Ini mendorong perbaikan berulang dan polimorfisme. Bagaimanapun, koleksi sering menyimpan catatan dengan struktur yang sangat homogen.
Tentukan kumpulan koleksi yang Anda perlukan dan indeks yang diperlukan untuk mendukung kueri Anda. Dengan kasus khusus indeks _id, Anda harus membuat semua indeks dengan jelas:MongoDB tidak secara alami membuat indeks apa pun selain _id.
Menjamin bahwa skema skema Anda mendukung jenis penerapan Anda:jika Anda berencana untuk menggunakan sharded clusters untuk penskalaan horizontal, rencanakan skema Anda untuk memasukkan kunci shard yang kuat. Kunci shard memengaruhi eksekusi baca dan tulis dengan memutuskan bagaimana MongoDB mengelompokkan data. Anda tidak dapat mengubah kunci pecahan setelah disetel.
Pastikan bahwa rencana skema Anda tidak bergantung pada kluster terindeks yang bertambah panjang tanpa terikat. Biasanya, eksekusi terbaik dapat dicapai ketika cluster yang diindeks tersebut memiliki kurang dari 1000 komponen.
Pertimbangkan batas perkiraan dokumen saat mendesain skema Anda. Pengekangan Perkiraan Dokumen BSON adalah 16MB per dokumen. Jika Anda memerlukan laporan yang lebih besar, gunakan GridFS.
Driver
Manfaatkan kumpulan asosiasi. Sebagian besar driver MongoDB mendukung penggabungan asosiasi. Ubah ukuran kumpulan asosiasi agar sesuai dengan kasus penggunaan Anda, mulai dari 110-115% dari jumlah normal permintaan database bersamaan.
Pastikan aplikasi Anda menangani kesalahan tulis dan baca sementara di tengah pemilihan set replika.
Menjamin bahwa aplikasi Anda menangani permintaan yang gagal dan mencobanya lagi jika sesuai. Pengemudi tidak
secara alami mencoba lagi permintaan yang gagal.
Gunakan alasan backoff eksponensial untuk percobaan ulang permintaan database.
Gunakan kursor.maxTimeMS() untuk membaca dan wtimeout untuk menulis jika Anda ingin membatasi periode eksekusi untuk operasi database.
Daya Tahan Data
Pastikan bahwa set replika Anda menyertakan setidaknya tiga hub pembawa data dengan perhatian w:mayority compose. Tiga hub pembawa data diperlukan untuk kekokohan data set-replika.
Menjamin bahwa semua instans menggunakan penjurnalan.
Berbagi
Menjamin bahwa kunci shard Anda menyampaikan beban secara merata di shard Anda.
Gunakan operasi yang ditargetkan untuk beban kerja yang disesuaikan dengan jumlah shard.
Untuk MongoDB 3.6 dan setelahnya, sekunder tidak lagi mengembalikan data yatim kecuali menggunakan perhatian baca "tersedia" (yang merupakan perhatian baca default untuk pembacaan terhadap sekunder saat tidak terkait dengan sesi yang dapat diandalkan secara kausal).
Mulai di MongoDB 3.6, semua anggota set replika pecahan menyimpan metadata potongan, memungkinkan mereka untuk memfilter anak yatim saat tidak menggunakan "tersedia". Dengan demikian, pertanyaan non-target atau siaran yang tidak menggunakan "tersedia" dapat dijalankan dengan aman pada anggota mana pun dan tidak akan mengembalikan informasi yang tidak berguna.
Kekhawatiran membaca yang "dapat diakses" dapat mengembalikan dokumen yatim piatu dari anggota tambahan karena tidak memeriksa metadata potongan yang dirombak. Dalam kasus apa pun, jika pengembalian dokumen yatim tidak signifikan bagi aplikasi, masalah baca "tersedia" memberikan kemungkinan pembacaan tidak aktif paling sedikit di antara masalah baca yang berbeda.
Pra-split dan sesuaikan potongan secara manual saat menyematkan kumpulan data yang luas ke dalam koleksi sharded non-hash baru. Pra-pemisahan dan penyesuaian fisik memungkinkan tumpukan sematan untuk tersebar di antara pecahan, memperluas eksekusi untuk beban awal.
Kesimpulan
Pengelolaan checklist operasi dan pengembangan adalah langkah penting yang harus disertakan oleh developer saat menggunakan MongoDB dalam produksi. Mereka adalah pertimbangan utama karena mereka meningkatkan aliran tugas untuk sebuah proyek dalam produksi. Lingkungan produksi MongoDB memerlukan fitur database yang stabil dan andal karena database di produksi menyimpan data kerja dunia nyata. Integritas data bergantung pada stabilitas database yang diaktifkan dengan memastikan bahwa semua item pada daftar periksa operasi dan pengembangan dikerjakan sebelum produksi.