Çoğaltma Kümesi Üyeleri: Birincil, İkincil, Arabulucu
Öğrenenler, her çoğaltma kümesi üyesinin rolünü açıklayacak ve yazma işlemlerinin oplog aracılığıyla birincilden ikincillere nasıl aktığını izleyeceklerdir.
Çoğaltma Kümesi Üyeleri: Birincil, İkincil, Arabulucu, CoddyKit'te ücretsiz bir MongoDB Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, MongoDB Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. MongoDB Academy kursu toplamda 4 dersten oluşur.
Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.
What Is a Replica Set?
A replica set is a group of MongoDB servers that all hold the same data, providing high availability and redundancy. If one server fails, another automatically takes over. A typical replica set has three or more members: at least one primary, one or more secondaries, and optionally an arbiter.
The Primary: Source of Truth
The primary is the only member that accepts write operations. All clients send inserts, updates, and deletes to the primary. It records every write operation in a special log called the oplog (operations log), which secondaries then read to stay in sync.
// Check which member is primary in mongosh
rs.isMaster()
// or
rs.status()The Secondary: Hot Standby
A secondary replicates data from the primary by continuously tailing the primary's oplog and applying the same operations to its own copy of the data. Secondaries can serve read queries (with the right read preference) and will take over as primary if the current primary becomes unavailable.
// View oplog on a secondary
use local
db.oplog.rs.find().sort({$natural: -1}).limit(5)Oplog: The Replication Backbone
The oplog (operations log) is a special capped collection stored in the local database on every replica set member. Every write to the primary is appended to the oplog. Secondaries read the oplog and replay each entry in order, keeping their data identical to the primary. The oplog's size determines how far behind a secondary can fall before needing a full resync.
// Check oplog size and time range
use local
db.oplog.rs.stats().maxSize
db.oplog.rs.find({},{ts:1,op:1,ns:1}).sort({$natural:-1}).limit(3)The Arbiter: Tiebreaker Member
An arbiter is a lightweight replica set member that holds no data. Its sole purpose is to participate in elections by casting a vote when a new primary needs to be chosen. Arbiters are used in even-member sets (e.g., two data-bearing members) to ensure a majority can always be reached without the cost of a third full data node.
// Add an arbiter to the replica set
rs.addArb('hostname:27017')Votes and Elections Overview
Each replica set member has a vote (0 or 1). A primary is elected by majority vote. With 3 members (each with 1 vote), a majority is 2. If the primary goes down, the remaining two members hold an election and the one with the most up-to-date oplog typically wins. Elections complete in seconds under normal network conditions.
// View all members and their vote configuration
rs.conf().members.forEach(m => {
print(m.host, 'votes:', m.votes, 'priority:', m.priority)
})Member Priorities
Each member has a priority value (default 1). A member with higher priority is preferred as primary in elections. Setting priority to 0 prevents a member from ever becoming primary — useful for secondaries in distant data centers that should serve local reads but not take writes from the primary region.
// Set a member to never become primary (priority 0)
let cfg = rs.conf()
cfg.members[2].priority = 0
rs.reconfig(cfg)Hidden and Delayed Secondaries
Hidden secondaries (priority 0, hidden: true) are invisible to drivers and used only for backups or analytics without affecting the primary election pool. Delayed secondaries intentionally lag behind the primary by a configured number of seconds, providing a rolling recovery window in case of accidental data corruption.
// Configure a delayed secondary (e.g., 1 hour behind)
let cfg = rs.conf()
cfg.members[2].hidden = true
cfg.members[2].priority = 0
cfg.members[2].secondaryDelaySecs = 3600
rs.reconfig(cfg)Checking Replication Lag
Replication lag is the delay between when a write is committed on the primary and when it appears on a secondary. High lag means secondaries serve stale data. You can monitor lag with rs.printSecondaryReplicationInfo() or by comparing the oplog timestamps between members. Atlas provides built-in lag alerts.
// Print replication lag for each secondary
rs.printSecondaryReplicationInfo()
// Example output:
// source: secondary1:27017
// syncedTo: Sat Jun 21 2025 10:00:00
// 0 secs (0 hrs) behind the primaryrs.status() Output Explained
rs.status() returns the full health snapshot of the replica set. Key fields to inspect: stateStr (PRIMARY / SECONDARY / ARBITER / DOWN), optimeDate (last applied oplog entry), health (1 = healthy, 0 = unreachable), and lastHeartbeatMessage for error details on troubled members.
rs.status().members.forEach(m => {
print(m.name, m.stateStr, 'health:', m.health)
})Data Writes Flow End to End
When a client writes a document, the flow is: 1) Driver sends write to the primary. 2) Primary applies the write to WiredTiger storage. 3) Primary appends the operation to its oplog. 4) Secondaries pull the oplog entry and apply it. 5) Primary acknowledges the client according to the configured writeConcern.
// Write with w:majority ensures secondaries have acknowledged
db.orders.insertOne(
{ item: 'laptop', qty: 1 },
{ writeConcern: { w: 'majority', wtimeout: 5000 } }
)Quick Check
Test your understanding of MongoDB & NoSQL Databases concepts from this lesson.
Lesson Recap
In this lesson you learned: the primary accepts all writes and records them in the oplog, secondaries replicate from the oplog to maintain identical copies, and arbiters hold no data but cast votes in elections. Next up we explore how MongoDB automatically elects a new primary when the current one fails.
Sıkça Sorulan Sorular
“Çoğaltma Kümesi Üyeleri: Birincil, İkincil, Arabulucu” dersi ücretsiz mi?
Evet — “Çoğaltma Kümesi Üyeleri: Birincil, İkincil, Arabulucu” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve MongoDB Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. MongoDB Academy kursu toplamda 4 dersten oluşur.
“Çoğaltma Kümesi Üyeleri: Birincil, İkincil, Arabulucu” dersinde ne öğreneceğim?
Öğrenenler, her çoğaltma kümesi üyesinin rolünü açıklayacak ve yazma işlemlerinin oplog aracılığıyla birincilden ikincillere nasıl aktığını izleyeceklerdir. MongoDB Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
MongoDB Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te MongoDB Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Çoğaltma Kümesi Üyeleri: Birincil, İkincil, Arabulucu” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu MongoDB Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her MongoDB Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Çoğaltma Kümesi Üyeleri: Birincil, İkincil, Arabulucu
- Seçimler ve Otomatik Yük Devretme
- Yazma Kaygıları ve Onaylanmış Kalıcılık
- Okuma Tercihleri: Okuma Yükünü Dağıtma