Jenis replikasi di MongoDB





Halo, orang Khabrov! Kami telah memecahkan kode untuk Anda bagian dari tutorial MongoDB dari Evgeny Aristov, seorang pengembang berusia 20 tahun dan penulis kursus online "Database Non-Relasional" . Materi, seperti kursus itu sendiri, akan berguna bagi para spesialis yang menemukan NoSQL dan yang ingin mempelajari cara mengoptimalkan database mereka dan bekerja dengannya.



Mengapa mereplikasi?



  1. Ketersediaan tinggi. Cadangan itu bagus, tetapi perlu waktu untuk diterapkan.
  2. Penskalaan horizontal. Dalam kasus ketika server kehabisan inti fisik dan memori.
  3. Lebih baik membuat cadangan dari replika, dan bukan dari master.
  4. Muat distribusi geografis.


Di MongoDB, tidak ada banyak jenis replikasi di luar kotak: yang paling relevan saat ini adalah Replicaset, dan yang kedua adalah Master-slave, yang terbatas pada versi 3.6 dan tidak akan dibahas secara mendetail dalam artikel ini.



# 1. Menulis dan membaca dari server utama



Kami memiliki driver aplikasi klien yang membaca dan menulis ke node utama. Lebih lanjut, menurut protokol replikasi, informasi yang ditulis ke simpul utama dikirim ke simpul Sekunder.







# 2. Membaca dari isyarat



Alternatif membaca dan menulis dari Primary adalah ketika pengemudi dapat membaca informasi dari Secondary. Dalam hal ini, pengaturannya bisa berbeda, misalnya, "lebih baik membaca informasi dari Sekunder, lalu dari Utama" atau "membaca informasi dari node terdekat di peta jaringan", dll. Opsi konfigurasi seperti itu lebih sering digunakan daripada opsi replikasi pertama, di mana semuanya melalui Utama.







3 cara untuk membuat replika dapat dibaca:



  • Menentukan db.slaveOk()
  • Tentukan parameter yang diperlukan dalam string koneksi driver
  • Tentukan semuanya, lalu tulis dengan lebih tepat di kueri itu sendiri, misalnya, baca dari Sekunder di wilayah Selatan: db.collection.find({}).readPref( “secondary”, [ { “region”: “South”} ] )


Masalah replika membaca



  1. Karena perekamannya tidak sinkron, perekaman dapat dilakukan di Primer, tetapi tidak mencapai Sekunder, sehingga data lama dari Sekunder akan terbaca.
  2. , , .

    , . MongoDB , , , .
  3. , () — «».




A) Node "mendengarkan" satu sama lain, koneksi ini disebut Heartbeat. Artinya, setiap node secara konstan diperiksa oleh orang lain untuk subjek "hidup / tidak hidup", untuk mengambil tindakan jika sesuatu terjadi.







B) Satu node Sekunder diubah menjadi Arbiter. Ini adalah aplikasi yang sangat ringan, berjalan seperti Mongo, praktis tidak memakan sumber daya dan bertanggung jawab untuk menentukan node mana yang akan dikenali sebagai yang utama pada saat pemungutan suara. Dan ini biasanya konfigurasi yang direkomendasikan.







Fitur utama konfigurasi ini



  • Replikasi asinkron
  • Wasit bebas data dan karenanya sangat ringan
  • Pratama dapat menjadi Sekunder dan sebaliknya. Arbiter tidak bisa menjadi Primer atau Sekunder
  • Jumlah maksimal balasan adalah 50 dan hanya 7 dari mereka yang berhak memilih
  • Arbiter Primary Secondary, , .. , Arbiter .


Jika Anda tertarik untuk mempelajari lebih lanjut tentang kemampuan pengelompokan MongoDB, Anda dapat menonton rekaman seluruh pelajaran demo di sini . Dalam pelajaran, Evgeny Aristov mendemonstrasikan perbedaan antara Replicaset dan Master-slave, menjelaskan proses kuorum, penskalaan, sharding, dan pemilihan kunci sharding yang benar.



Menjelajahi kemampuan MongoDB adalah bagian dari Kursus Online Database Non-Relasional. Kursus ini ditujukan untuk pengembang, administrator, dan profesional lain yang menemukan NoSQL. Di kelas, siswa dalam praktiknya menguasai alat yang paling relevan saat ini: Cassandra, MongoDB, Redis, ClickHouse, Tarantool, Kafka, Neo4j, RabbitMQ.



Mulainya sudah pada 30 September, tetapi selama bulan pertama Anda dapat bergabung dengan grup. Pelajari programnya, lakukantes masuk dan bergabunglah!



All Articles