Workstation Logo
مصنوعات
AI لیبزOpenAI ایجنٹسClaude ایجنٹسGrok BotWorkstation CRM (WSL CRM)مارکیٹنگتمام مصنوعات
AI حل
AI ورک سٹیشنزAI SME Packagesپرائیویٹ AIGPU کلسٹرزایج AIانٹرپرائز AI لیبصنعت کے مطابق AI
خدمات
Platform ModernisationDigital EngineeringData Foundations & AIAutonomous OperationsAI مشاورتDevOps آٹومیشنسائبر سیکیورٹیسافٹ ویئر ڈیولپمنٹایجنٹ بلڈنگMLOps سیٹ اپ
ہمارے بارے میں
شراکت دارگاہکوں کی کہانیاں
مضامین
دستاویزات
WSL ProxyRing PromoterWSL VaultJobshoutSysOps 24/7
بلاگ
ہم سے رابطہ کریںLogin
Workstation

جدید کاروبار کے لیے AI ورک اسٹیشنز، AI ملٹی ایجنٹک سافٹ ویئر، GPU انفراسٹرکچر اور ذہین ایجنٹ حل۔

ہم سے رابطہ کریں

AI حل

AI ورک سٹیشنزAI SME Packagesپرائیویٹ AIGPU کلسٹرزایج AIانٹرپرائز AI لیبصنعت کے مطابق AI

مصنوعات

تمام مصنوعاتWSL CRM اور ERPمارکیٹنگOpenAI ایجنٹسWSL ProxyRing PromoterWSL VaultJobshoutSysOps 24/7

کمپنی

ہمارے بارے میںWorkstation کیوںشراکت دارگاہکوں کی کہانیاںقیمتیںرابطہ

وسائل

مضامیندستاویزاتبلاگتلاشسائٹ میپ
برطانیہ آفس
77-79 Marlowes, Hemel Hempstead HP1 1LFراستہ - M25 آؤٹر لندن سے جنکشن 20 لیںکمپنی نمبر: 11641870پیر - جمعہ: صبح 9:00 - شام 6:00 GMT
+44 7515 356 146
بیلجیم آفس
Workstation SRL, Rue Vanderkindere 34, 1180 Uccle, BrusselsBE 0751.518.683پیر - جمعہ: صبح 9:00 - شام 6:00 CET
+32 492 45 67 46
بھارت آفس
#159 Sector 9, Pocket 1, DDA Flats, 110077 Dwarka, New Delhi
+91 98881 98841

© 2026 Workstation AI۔ جملہ حقوق محفوظ ہیں۔

رازداریکوکیزسروس کی شرائطویب سائٹ سائٹ میپ

Loading blog...

Home / Blog
DatabaseKubernetesDevOpsBackend

پیداوار میں MongoDB اعلی دستیابی: ریپلیکا سیٹ، شارڈنگ، اور Kubernetes آپریٹرز

MongoDB HA ریپلیکا سیٹ، شارڈنگ، اور Kubernetes آپریٹرز کے ساتھ

Balinder Walia12 اپریل، 202636 min read

MongoDB ڈیٹا بیس کے منظر نامے میں ایک منفرد مقام رکھتا ہے۔ اس کا دستاویزی ماڈل قدرتی طور پر ایپلیکیشن آبجیکٹ کے لیے نقشہ بناتا ہے، اس کا لچکدار اسکیما بغیر کسی منتقلی کے ڈیٹا ڈھانچے کو تیار کرتا ہے، اور اس کی بلٹ ان ریپلیکیشن اور شارڈنگ پرائمیٹوز اعلی دستیابی اور افقی اسکیلنگ کی بنیاد فراہم کرتے ہیں جسے حاصل کرنے کے لیے متعلقہ ڈیٹا بیس کو بیرونی ٹولنگ کی ضرورت ہوتی ہے۔ لیکن ایک بنیاد ایک مکمل عمارت نہیں ہے. حقیقی اعلیٰ دستیابی کے ساتھ پیداوار میں MongoDB چلانا — جہاں نوڈ کی ناکامی، نیٹ ورک کی تقسیم، یا پورے خطے کے آف لائن ہونے کا نتیجہ ڈاؤن ٹائم یا ڈیٹا کے نقصان کا سبب نہیں بنتا — جان بوجھ کر فن تعمیر، محتاط ٹیوننگ، اور سخت آپریشنل نظم و ضبط کا مطالبہ کرتا ہے۔

یہ گائیڈ MongoDB HA کی ہر پرت سے گزرتا ہے: ریپلیکا سیٹ کنسنسس پروٹوکول اور اوپلاگ ریپلیکیشن سے جو خود کار طریقے سے فیل اوور کو طاقت دیتا ہے، شارڈڈ کلسٹر آرکیٹیکچر کے ذریعے جو افقی اسکیلنگ کو قابل بناتا ہے، Kubernetes آپریٹرز تک جو لائف سائیکل مینجمنٹ کو خود کار بناتے ہیں، اور XPRX8 کے تمام اختیارات، XPRX8 پر تعیناتی اور میٹل پر رینچر کے ساتھ k3s۔ ہر سیکشن میں کنکریٹ کنفیگریشن، YAML مینی فیسٹس، اور آپریشنل طریقہ کار شامل ہیں جنہیں آپ اپنے ماحول کے مطابق ڈھال سکتے ہیں۔

MongoDB ریپلیکا سیٹ آرکیٹیکچر

ایک ریپلیکا سیٹ MongoDB کی اعلی دستیابی کی بنیادی اکائی ہے۔ یہmongodعمل کا ایک گروپ ہے جو ایک ہی ڈیٹا سیٹ کو برقرار رکھتا ہے۔ ایک رکنپرائمریہے، جو تمام تحریری کارروائیاں وصول کرتا ہے۔ باقی ممبرانسیکنڈریزہیں، جو پرائمری سے ڈیٹا کو اس کے آپریشن لاگ (اوپلاگ) کو ٹیلنگ کرکے نقل کرتے ہیں۔ اگر پرائمری دستیاب نہیں ہو جاتی ہے تو، ریپلیکا سیٹ اہل ثانوی میں سے ایک نیا پرائمری منتخب کرنے کے لیے الیکشن کا انعقاد کرتا ہے - عام طور پر 10 سے 12 سیکنڈ کے اندر۔

ایک پروڈکشن ریپلیکا سیٹ میں کم از کم تین ڈیٹا بیئرنگ ممبرز ہونے چاہئیں، مثالی طور پر مختلف فیل ڈومینز (دستیابی زونز، ریک، یا ڈیٹا سینٹرز) میں پھیلے ہوئے ہیں۔ یہ اس بات کو یقینی بناتا ہے کہ نقل سیٹ کسی ایک رکن کے نقصان سے بچ سکتا ہے اور پھر بھی انتخابی مقاصد کے لیے اکثریت برقرار رکھ سکتا ہے۔ ایک اختیاریثالثانتخابات میں حصہ لیتا ہے لیکن اس کے پاس کوئی ڈیٹا نہیں ہوتا ہے — یہ مکمل طور پر تعلقات کو توڑنے کے لیے موجود ہوتا ہے جب آپ کے پاس ڈیٹا بیئرنگ ممبرز کی یکساں تعداد ہوتی ہے، حالانکہ MongoDB بہترین طریقہ یہ ہے کہ اس کے بجائے ڈیٹا بیئرنگ ممبرز کی طاق تعداد کا استعمال کریں۔

MongoDB ریپلیکا سیٹ آرکیٹیکچرایپلیکیشن (ڈرائیور)لکھتا ہے۔ریڈز (ترجیح)پرائمریتمام تحریروں کو قبول کرتا ہےOplog (کیپڈ کلیکشن)دل کی دھڑکن ہر 2 سیکنڈسیکنڈری 1بنیادیسے نقل کرتا ہے۔صرف پڑھنے کے لیے (قابل ترتیب)ووٹ: 1 | ترجیح: 1سیکنڈری 2پرائمریسے نقل کرتا ہے۔صرف پڑھنے کے لیے (قابل ترتیب)ووٹ: 1 | ترجیح: 1oplogآربیٹر (اختیاری)صرفووٹ دیں، کوئی ڈیٹا نہیںانتخابات کے لیےٹائی بریکرانتخابی عمل (رافٹ پر مبنی)1. بنیادی دل کی دھڑکن چھوٹ گئی (10s ٹائم آؤٹ)2. اہل سیکنڈری کالز الیکشن3۔ اکثریتی ووٹ → نیا پرائمری ~10-12sمیںپرائمری (R/W)سیکنڈری (R/O)آربیٹر (صرف ووٹ)Oplog Replicationدل کی دھڑکن (2s)

Oplog and Replication Mechanics

اوپلاگ ایک محدود مجموعہ (local.oplog.rs) ہے جو پرائمری پر ڈیٹا میں ترمیم کرنے والے ہر عمل کو idempotent شکل میں ریکارڈ کرتا ہے۔ سیکنڈری مسلسل پرائمری کے اپلاگ کو ٹیل کرتے ہیں اور مقامی طور پر آپریشنز کا اطلاق کرتے ہیں۔ اوپلاگ کا سائز اس بات کا تعین کرتا ہے کہ ثانوی کو مکمل دوبارہ مطابقت پذیری کی ضرورت سے پہلے کتنا پیچھے رہ سکتا ہے — پیداواری کام کے بوجھ کے لیے، کم از کم 24 سے 72 گھنٹے کی تحریری سرگرمی رکھنے کے لیے اوپلاگ کا سائز بنائیں۔ MongoDB 4.4+replSetResizeOplogکے ذریعے ڈائنامک اوپلاگ سائزنگ کو سپورٹ کرتا ہے۔

# Check current oplog size and window
rs.printReplicationInfo()

# Resize the oplog to 50 GB
db.adminCommand({ replSetResizeOplog: 1, size: 51200 })

# Check replication lag on secondaries
rs.printSecondaryReplicationInfo()

انتخابات اور Raft-based Protocol

MongoDB 4.0+ ریپلیکا سیٹ انتخابات کے لیے رافٹ سے متاثر اتفاق رائے پروٹوکول کا استعمال کرتا ہے۔ جب کسی ثانوی کو پتہ چلتا ہے کہ پرائمری ناقابل رسائی ہے (10,000ms کا ڈیفالٹelectionTimeoutMillis)، تو یہ الیکشن کا مطالبہ کر سکتا ہے۔ جیتنے کے لیے، ایک امیدوار کو ووٹ دینے والے ارکان کی اکثریت سے ووٹ حاصل کرنا ضروری ہے۔ ایک سے زیادہ امیدوار اہل ہونے کی صورت میں سب سے حالیہ اوپلاگ اندراج اور سب سے زیادہ ترجیح والا ممبر جیتتا ہے۔ آپ اراکین کی ترجیحات کو ترتیب دے کر انتخابی نتائج کو متاثر کر سکتے ہیں —priority: 0والا رکن کبھی بھی بنیادی نہیں بن سکتا، جو کہ دور دراز علاقوں میں تجزیاتی نقلوں یا اراکین کے لیے مفید ہے۔

# Initiate a 3-member replica set
rs.initiate({
  _id: "rs-production",
  members: [
    { _id: 0, host: "mongo-0.mongo-svc:27017", priority: 10 },
    { _id: 1, host: "mongo-1.mongo-svc:27017", priority: 5 },
    { _id: 2, host: "mongo-2.mongo-svc:27017", priority: 5 }
  ],
  settings: {
    electionTimeoutMillis: 10000,
    heartbeatTimeoutSecs: 10,
    chainingAllowed: true
  }
})

# Check replica set status
rs.status()

# Step down the primary (for maintenance)
rs.stepDown(60)   // step down for 60 seconds

# Force reconfiguration (emergency)
rs.reconfig(newConfig, { force: true })

ترجیح پڑھیں اور تشویش لکھیں

پڑھنے کی ترجیحکنٹرول کرتا ہے جہاں ڈرائیور پڑھنے کے آپریشن بھیجتا ہے۔ اختیارات ہیں:

  • primary— تمام ریڈز پرائمری میں جاتے ہیں۔ مضبوط ترین مستقل مزاجی لیکن کوئی ریڈ اسکیلنگ نہیں۔
  • primaryPreferred— ریڈز پرائمری میں جاتے ہیں جب تک کہ یہ دستیاب نہ ہو، پھر سیکنڈری میں۔
  • secondary— تمام ریڈز سیکنڈری میں جاتے ہیں۔ ریڈ اسکیلنگ فراہم کرتا ہے لیکن باسی ڈیٹا واپس کر سکتا ہے۔
  • secondaryPreferred— ریڈز سیکنڈری میں جاتے ہیں جب تک کہ کوئی بھی دستیاب نہ ہو۔
  • nearest— ریڈز سب سے کم نیٹ ورک لیٹنسی والے ممبر کے پاس جاتے ہیں قطع نظر کردار کے۔ جغرافیائی تقسیم شدہ تعیناتیوں کے لیے بہترین۔

Write Concernکنٹرول کرتا ہے کہ کلائنٹ کو آپریشن واپس آنے سے پہلے کتنے ریپلیکا سیٹ ممبرز کو تحریر کو تسلیم کرنا چاہیے۔

  • w: 1— صرف بنیادی کو تسلیم کرنا چاہیے۔ اگر پرائمری نقل سے پہلے ناکام ہوجاتی ہے تو تیز ترین لیکن ڈیٹا کے ضائع ہونے کا خطرہ ہے۔
  • w: "majority"— ڈیٹا رکھنے والے اراکین کی اکثریت کو تسلیم کرنا چاہیے۔ یہ تجویز کردہ پروڈکشن ڈیفالٹ ہے۔ یہ ضمانت دیتا ہے کہ تحریر پرائمری الیکشن میں زندہ رہے گی۔
  • w: <number>- اراکین کی ایک مخصوص تعداد کو تسلیم کرنا ضروری ہے۔
  • j: true— تحریر کو تسلیم کرنے سے پہلے آن ڈسک جرنل کے لیے پابند ہونا چاہیے۔w: "majority"کے ساتھ مل کر، یہ مضبوط ترین استحکام کی ضمانت فراہم کرتا ہے۔
# Connection string with write concern and read preference
mongodb://mongo-0:27017,mongo-1:27017,mongo-2:27017/appdb?replicaSet=rs-production&w=majority&j=true&readPreference=secondaryPreferred&readPreferenceTags=region:us-east

# SRV connection string (DNS-based discovery)
mongodb+srv://appuser:password@cluster.example.com/appdb?w=majority&retryWrites=true&readPreference=nearest

MongoDB شارڈڈ کلسٹر آرکیٹیکچر

ایک ریپلیکا سیٹ اعلی دستیابی فراہم کرتا ہے لیکن افقی تحریری اسکیلنگ نہیں - تمام تحریریں ایک ہی پرائمری میں جاتی ہیں۔ جب آپ کا ڈیٹا سیٹ ایک سرور کی گنجائش سے زیادہ ہو جاتا ہے یا آپ کا تحریری تھرو پٹ اس سے زیادہ ہوتا ہے جو ایک پرائمری ہینڈل کر سکتا ہے تو آپ کو شارڈنگ کی ضرورت ہوتی ہے۔ ایک شارڈ کلسٹر شارڈ کلید کا استعمال کرتے ہوئے متعدد ریپلیکا سیٹس (شارڈز) میں ڈیٹا تقسیم کرتا ہے، جس سے سٹوریج اور رائٹ تھرو پٹ دونوں کی افقی اسکیلنگ کو قابل بنایا جاتا ہے۔

MongoDB شارڈڈ کلسٹر آرکیٹیکچرکلائنٹ ایپلیکیشنmongos Query Routersشارڈ کلید کی بنیاد پر شارڈ کو درست کرنے کے لیےروٹ کے سوالات۔ بے وطن، 2+تعینات کریں۔mongos:27017mongos:27017کنفیگ سرور ریپلیکا سیٹاسٹورز کلسٹر میٹا ڈیٹا، چنک رینجز،شارڈ کی میپنگز (3 رکنی ریپلیکا سیٹ)میٹا ڈیٹاشارڈ سرورز (ہر ایک ریپلیکا سیٹ ہے)Shard 1 (rs-shard1)پرائمریshard1-0سیکنڈshard1-1سیکنڈshard1-2ٹکڑے: A → M (شارڈ کلید رینج)اسٹوریج: وائرڈ ٹائیگرShard 2 (rs-shard2)پرائمریshard2-0سیکنڈسیکنڈٹکڑے: M → Z (شارڈ کلید رینج)اسٹوریج: وائرڈ ٹائیگرShard 3 (rs-shard3)پرائمریshard3-0سیکنڈسیکنڈہیشڈ شارڈ کی اوور فلواسٹوریج: وائرڈ ٹائیگرمنگوس راؤٹرکنفیگ سرورزشارڈ پرائمریشارڈ سیکنڈریمیٹا ڈیٹا کے سوالات

ایک شارڈ کلسٹر کے اجزاء کی تین اقسام ہیں۔mongosراؤٹرز اسٹیٹ لیس استفسار والے راؤٹرز ہیں جو کلائنٹ کی کارروائیوں کو مناسب شارڈ (s) کی طرف لے جاتے ہیں۔ فالتو پن کے لیے کم از کم دو تعینات کریں۔کنفیگ سرورزایک ریپلیکا سیٹ بناتا ہے جو کلسٹر میٹا ڈیٹا کو اسٹور کرتا ہے — جس کے ٹکڑے کس شارڈز، شارڈ کلید رینجز، اور بیلنس اسٹیٹ پر رہتے ہیں۔​​Shard سرورزریپلیکا سیٹ ہیں جو ہر ایک میں شارڈ ڈیٹا کا سب سیٹ ہوتا ہے۔

شارڈ کلید کا انتخاب

شارڈ کلیسٹر شارڈ کلسٹر میں سب سے زیادہ نتیجہ خیز فیصلہ ہے۔ یہ اس بات کا تعین کرتا ہے کہ ڈیٹا کو کس طرح شارڈز میں تقسیم کیا جاتا ہے اور اس کا براہ راست اثر استفسار کی کارکردگی، تحریری تقسیم، اور پیمانے کی صلاحیت پر پڑتا ہے۔ ایک اچھی شارڈ کلید میں اعلی کارڈنالٹی ہوتی ہے (بہت سی الگ قدریں)، شارڈز میں یکساں طور پر تحریروں کو تقسیم کرتی ہے، اور بکھرے ہوئے جمع کرنے کے بجائے ٹارگٹڈ آپریشنز کے ساتھ سب سے عام سوال کے نمونوں کی حمایت کرتی ہے۔

# Enable sharding on a database
sh.enableSharding("appdb")

# Shard a collection with a hashed shard key (even distribution)
sh.shardCollection("appdb.events", { "event_id": "hashed" })

# Shard with a ranged shard key (supports range queries)
sh.shardCollection("appdb.orders", { "customer_id": 1, "order_date": 1 })

# Check shard distribution
db.orders.getShardDistribution()

# View chunk distribution across shards
use config
db.chunks.aggregate([
  { $group: { _id: "$shard", count: { $sum: 1 } } },
  { $sort: { count: -1 } }
])

عام شارڈ کلید کی حکمت عملیوں میں شامل ہیں: یکساں تحریری تقسیم کے لیےہیشڈ کیز(بہترین اس صورت میں جب آپ کو شارڈ کلید پر رینج کے سوالات کی ضرورت نہ ہو)،کمپاؤنڈ کیزجو ایک موٹے گروپنگ فیلڈ کو جوڑتی ہیں جس میں ایک اعلی-کارڈینل فیلڈ ( کے لیے ملٹی کارڈنٹی فیلڈ)۔ ایپلی کیشنز)، اورزون پر مبنی کلیدیںجو جغرافیائی علاقوں کے ساتھ ڈیٹا پلیسمنٹ کو سیدھ میں کرتی ہیں۔

ملٹی ریجنکے لیے

زون شارڈنگ

زون کی شارڈنگ شارڈ کلید کی مخصوص حدود کو مخصوص شارڈز تک محدود کرتی ہے، ڈیٹا لوکلٹی کو فعال کرتی ہے۔ مثال کے طور پر، آپ اس بات کو یقینی بنا سکتے ہیں کہ یورپی کسٹمر ڈیٹا یورپی یونین کے علاقے میں شارڈز پر رہتا ہے جبکہ امریکی کسٹمر ڈیٹا امریکی علاقے میں شارڈز پر رہتا ہے۔

# Add shards to zones
sh.addShardTag("shard-us-east", "US")
sh.addShardTag("shard-eu-west", "EU")
sh.addShardTag("shard-ap-south", "APAC")

# Define zone ranges
sh.addTagRange("appdb.customers",
  { "region": "US", "customer_id": MinKey },
  { "region": "US", "customer_id": MaxKey },
  "US"
)
sh.addTagRange("appdb.customers",
  { "region": "EU", "customer_id": MinKey },
  { "region": "EU", "customer_id": MaxKey },
  "EU"
)
sh.addTagRange("appdb.customers",
  { "region": "APAC", "customer_id": MinKey },
  { "region": "APAC", "customer_id": MaxKey },
  "APAC"
)

# Verify zone configuration
sh.status()

ملٹی ریجن MongoDB تعیناتی

MongoDB کو ایک سے زیادہ خطوں میں تقسیم کرنے سے دو مقاصد ہوتے ہیں: ڈیزاسٹر ریکوری (ایک پورے خطے کے نقصان سے بچنا) اور لیٹنسی آپٹیمائزیشن (قریب ترین نقل سے ریڈز پیش کرنا)۔ MongoDB ریپلیکا سیٹ ممبرز کے ذریعے تمام خطوں میں تقسیم، ڈیٹا لوکلٹی کے لیے زون شارڈنگ، اور ترجیحی کنفیگریشن پڑھنے کے ذریعے ملٹی ریجن کی تعیناتیوں کو سپورٹ کرتا ہے جو قریب ترین ممبر کو پڑھتا ہے۔

ملٹی ریجن MongoDB تعیناتیAWS us-east-1بنیادی علاقہپرائمریR/Wترجیح: 10سیکنڈریR/Oترجیح: 5زون: US — کم تاخیرپڑھتی ہے۔پڑھنے کی ترجیح: قریب ترینٹیگ: { خطہ: "us-east" }EBS gp3 / io2 والیومAzure مغربی یورپDR علاقہسیکنڈریR/Oترجیح: 3سیکنڈریR/Oترجیح: 3زون: EU — GDPR تعمیلپڑھنے کی ترجیح: قریب ترینٹیگ: { خطہ: "eu-west" }Azure پریمیم SSD v2GCP asia-southeast1پڑھا ہوا علاقہسیکنڈریR/O، چھپا ہواترجیح: 0زون: APAC — تجزیاتپڑھنے کی ترجیح: ثانویٹیگ: { خطہ: "ap-south" }پرسسٹنٹ ڈسک SSDoplogoplogHA ضمانت دیتا ہےw:اکثریت → آر پی او = 0 (ریپلیکا سیٹ کے اندر)کراس ریجن: RPO ≈ نقل کا وقفہآٹومیٹک فیل اووربنیادی علاقہ کا نقصان → یورپی یونین کے علاقےمیں انتخاباتRTO ≈ 10-30 سیکنڈز (انتخاب + ڈرائیور دوبارہ جوڑیں)گلوبل DNS / mongodb+srv:// کنکشن سٹرنگRoute53 / Azure DNS / کلاؤڈ DNS — SRV خودکار دریافتکے لیے ریکارڈ کرتا ہے۔پرائمریسیکنڈریOplog Replicationزون شارڈنگ

پانچ رکنی ریپلیکا سیٹ میں جو تین خطوں میں تقسیم کیا گیا ہے (2 پرائمری ریجن میں، 2 DR ریجن میں، 1 ریڈ ریجن میں)، پرائمری ریجن کے کھو جانے سے اب بھی تین ممبران دستیاب ہیں - ایک نیا پرائمری منتخب کرنے کے لیے اکثریت کے لیے کافی ہے۔ پڑھنے والے علاقے کے ممبر کے پاسpriority: 0ہونا چاہیے تاکہ اسے بنیادی بننے سے روکا جا سکے (زیادہ کراس ریجن لیٹینسی تحریری کارکردگی کو کم کر دے گی)۔hidden: trueتجزیات کے لیے وقف کردہ ممبران کے لیے استعمال کریں جنہیں باقاعدہ درخواست کی ریڈنگ نہیں ملنی چاہیے۔

MongoDB کمیونٹی Kubernetes آپریٹر

MongoDB کمیونٹی Kubernetes آپریٹر Kubernetes پر MongoDB ریپلیکا سیٹ تعینات اور ان کا انتظام کرتا ہے۔ یہ MongoDB Inc. کا اوپن سورس آپریٹر ہے جو StatefulSet مینجمنٹ، خودکار ریپلیکا سیٹ کنفیگریشن، TLS سرٹیفکیٹ روٹیشن، یوزر مینجمنٹ اور رولنگ اپ گریڈ کو ہینڈل کرتا ہے۔

# Install the MongoDB Community Operator via Helm
helm repo add mongodb https://mongodb.github.io/helm-charts
helm repo update

helm install community-operator mongodb/community-operator \
  --namespace mongodb \
  --create-namespace \
  --set operator.watchNamespace="*"

MongoDBکمیونٹی CRD تفصیلات

MongoDBCommunityحسب ضرورت وسائل MongoDB ریپلیکا سیٹ کی مطلوبہ حالت کی وضاحت کرتا ہے۔ ذیل میں پیداوار کے لیے تیار تصریح ہے۔

apiVersion: mongodbcommunity.mongodb.com/v1
kind: MongoDBCommunity
metadata:
  name: production-mongodb
  namespace: databases
spec:
  members: 3
  type: ReplicaSet
  version: "7.0.12"

  security:
    authentication:
      modes: ["SCRAM"]
    tls:
      enabled: true
      certificateKeySecretRef:
        name: mongodb-tls-cert
      caCertificateSecretRef:
        name: mongodb-ca-cert

  users:
    - name: appuser
      db: admin
      passwordSecretRef:
        name: mongodb-appuser-password
      roles:
        - name: readWrite
          db: appdb
        - name: clusterMonitor
          db: admin
      scramCredentialsSecretName: appuser-scram
    - name: backup-user
      db: admin
      passwordSecretRef:
        name: mongodb-backup-password
      roles:
        - name: backup
          db: admin
        - name: restore
          db: admin
      scramCredentialsSecretName: backup-scram
    - name: monitoring
      db: admin
      passwordSecretRef:
        name: mongodb-monitoring-password
      roles:
        - name: clusterMonitor
          db: admin
      scramCredentialsSecretName: monitoring-scram

  additionalMongodConfig:
    storage.wiredTiger.engineConfig.cacheSizeGB: 4
    storage.wiredTiger.engineConfig.journalCompressor: snappy
    storage.wiredTiger.collectionConfig.blockCompressor: snappy
    net.maxIncomingConnections: 10000
    operationProfiling.mode: slowOp
    operationProfiling.slowOpThresholdMs: 100
    replication.oplogSizeMB: 51200
    setParameter.cursorTimeoutMillis: 600000

  statefulSet:
    spec:
      template:
        spec:
          containers:
            - name: mongod
              resources:
                requests:
                  cpu: "2"
                  memory: 8Gi
                limits:
                  cpu: "4"
                  memory: 16Gi
            - name: mongodb-agent
              resources:
                requests:
                  cpu: 250m
                  memory: 256Mi
                limits:
                  cpu: 500m
                  memory: 512Mi
          affinity:
            podAntiAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                - topologyKey: topology.kubernetes.io/zone
                  labelSelector:
                    matchLabels:
                      app: production-mongodb-svc
          tolerations:
            - key: "workload"
              operator: "Equal"
              value: "database"
              effect: "NoSchedule"
      volumeClaimTemplates:
        - metadata:
            name: data-volume
          spec:
            storageClassName: gp3-csi
            accessModes: ["ReadWriteOnce"]
            resources:
              requests:
                storage: 100Gi
        - metadata:
            name: logs-volume
          spec:
            storageClassName: gp3-csi
            accessModes: ["ReadWriteOnce"]
            resources:
              requests:
                storage: 10Gi

یہ تصریح ایک تین رکنی ریپلیکا سیٹ بناتی ہے جو MongoDB 7.0 کو SCRAM تصدیق کے ساتھ، TLS انکرپشن، علیحدہ ڈیٹا اور لاگ والیوم، دستیابی والے علاقوں میں پوڈ اینٹی ایفینٹی، اور وائرڈ ٹائیگر ٹیوننگ کے ساتھ 16 جی بی ریم والے نوڈ کے لیے موزوں بناتا ہے۔ جب آپversionفیلڈ کو تبدیل کرتے ہیں تو آپریٹر ریپلیکا سیٹ کی شروعات، ممبر کنفیگریشن، اور رولنگ اپ گریڈ کو سنبھالتا ہے۔

Percona سرور MongoDB آپریٹر

کے لیے

MongoDB (PSMDB آپریٹر) کے لیے Percona آپریٹر کمیونٹی آپریٹر کے لیے ایک زیادہ خصوصیت سے بھرپور متبادل فراہم کرتا ہے۔ یہ MongoDB کے لیے Percona Server (اضافی انٹرپرائز خصوصیات کے ساتھ MongoDB کے لیے ایک ڈراپ ان متبادل) تعینات کرتا ہے، شارڈڈ کلسٹرز کے ساتھ ساتھ ریپلیکا سیٹس کا انتظام کرتا ہے، MongoDB (PBM) کے لیے Percona بیک اپ کے ذریعے بیک اپ کو مربوط کرتا ہے، اور پوائنٹ ان ٹائم ریکوری کو سپورٹ کرتا ہے۔

# Install Percona Operator
helm repo add percona https://percona.github.io/percona-helm-charts/
helm repo update

helm install psmdb-operator percona/psmdb-operator \
  --namespace psmdb \
  --create-namespace
# Percona Server for MongoDB Cluster CRD
apiVersion: psmdb.percona.com/v1
kind: PerconaServerMongoDB
metadata:
  name: production-psmdb
  namespace: databases
spec:
  crVersion: "1.16.0"
  image: percona/percona-server-mongodb:7.0.12-7
  imagePullPolicy: IfNotPresent

  replsets:
    - name: rs0
      size: 3
      resources:
        requests:
          cpu: "2"
          memory: 8Gi
        limits:
          cpu: "4"
          memory: 16Gi
      volumeSpec:
        persistentVolumeClaim:
          storageClassName: gp3-csi
          accessModes: [ReadWriteOnce]
          resources:
            requests:
              storage: 100Gi
      nonvoting:
        enabled: false
      arbiter:
        enabled: false
      configuration: |
        storage:
          wiredTiger:
            engineConfig:
              cacheSizeGB: 4
              journalCompressor: snappy
            collectionConfig:
              blockCompressor: snappy
        operationProfiling:
          mode: slowOp
          slowOpThresholdMs: 100
        replication:
          oplogSizeMB: 51200
      affinity:
        antiAffinityTopologyKey: topology.kubernetes.io/zone

  sharding:
    enabled: false

  mongos: {}
  configsrv: {}

  backup:
    enabled: true
    image: percona/percona-backup-mongodb:2.5.0
    storages:
      s3-backup:
        type: s3
        s3:
          bucket: company-mongodb-backups
          region: us-east-1
          credentialsSecret: aws-s3-credentials
          prefix: production
          insecureSkipTLSVerify: false
    pitr:
      enabled: true
      oplogOnly: false
      compressionType: gzip
    tasks:
      - name: daily-full
        enabled: true
        schedule: "0 3 * * *"
        keep: 7
        storageName: s3-backup
        compressionType: gzip

  secrets:
    users: mongodb-users-secret

  pmm:
    enabled: true
    image: percona/pmm-client:2
    serverHost: pmm-server.monitoring

Percona آپریٹر کا اہم فائدہ MongoDB (PBM) کے لیے Percona بیک اپ کے ساتھ اس کا مربوط بیک اپ مینجمنٹ ہے۔ PBM منطقی اور فزیکل بیک اپس، انکریمنٹل بیک اپس، اور اوپلاگ سے پوائنٹ ان ٹائم ریکوری کو سپورٹ کرتا ہے - یہ سب CRD کے ذریعے اعلانیہ طور پر ترتیب دیا گیا ہے۔

AWS تعیناتی: DocumentDB بمقابلہ Atlas بمقابلہ Self-managed on EKS

Amazon DocumentDBایک MongoDB سے مطابقت رکھنے والی دستاویز ڈیٹا بیس سروس ہے۔ یہ MongoDB نہیں ہے - یہ ایک ملکیتی انجن ہے جو MongoDB وائر پروٹوکول کو لاگو کرتا ہے (MongoDB 4.0 API تک مطابقت رکھتا ہے)۔ DocumentDB Aurora کی طرح تقسیم شدہ اسٹوریج پرت کا استعمال کرتے ہوئے کمپیوٹ کو اسٹوریج سے الگ کرتا ہے۔ یہ ایک علاقے کے اندر خودکار فیل اوور، 15 تک پڑھنے والی نقلیں، اور پوائنٹ ان ٹائم ریکوری فراہم کرتا ہے۔ تاہم، اس میں بہت سی MongoDB خصوصیات کا فقدان ہے: تبدیلی کے سلسلے کی حدود ہیں، لین دین مختلف طریقے سے کام کرتے ہیں، اور بہت سے ایگریگیشن پائپ لائن کے مراحل غیر تعاون یافتہ ہیں۔ DocumentDB کا استعمال صرف اس صورت میں کریں جب آپ کی درخواست MongoDB کے API کا سب سیٹ استعمال کرتی ہو اور آپ مکمل طور پر منظم سروس کی آپریشنل سادگی کو اہمیت دیتے ہوں۔

AWSپر

MongoDB اٹلس AWS انفراسٹرکچر پر چلنے والی MongoDB کی اپنی منظم سروس ہے۔ یہ تمام خصوصیات، خودکار HA، مسلسل بیک اپ، پوائنٹ ان ٹائم ریکوری، آٹو اسکیلنگ، اور ملٹی ریجن کلسٹرز کے ساتھ حقیقی MongoDB فراہم کرتا ہے۔ اٹلس MongoDB کی پیداوار کا سب سے آسان راستہ ہے لیکن پیمانے پر سب سے مہنگا آپشن ہے۔

EKSپر

سیلف مینیجڈ آپ کو MongoDB ورژن، کنفیگریشن اور لاگت پر مکمل کنٹرول فراہم کرتا ہے۔ محفوظ S3 بیک اپ رسائی کے لیے MongoDB کمیونٹی آپریٹر یا EBS gp3 اسٹوریج اور IAM رولز فار سروس اکاؤنٹس (IRSA) کے ساتھ Percona آپریٹر کا استعمال کریں۔

# EBS StorageClass optimised for MongoDB
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: gp3-csi
provisioner: ebs.csi.aws.com
parameters:
  type: gp3
  iops: "6000"
  throughput: "250"
  encrypted: "true"
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
reclaimPolicy: Retain
# IRSA for backup S3 access
eksctl create iamserviceaccount \
  --name mongodb-backup-sa \
  --namespace databases \
  --cluster my-eks-cluster \
  --attach-policy-arn arn:aws:iam::111122223333:policy/MongoDBBackupS3Policy \
  --approve

Azure تعیناتی: AKS

پر Cosmos DB بمقابلہ Atlas بمقابلہ سیلف مینیجڈ

Azure Cosmos DB برائے MongoDB (vCore)حقیقی MongoDB کی قریب ترین Azure مقامی پیشکش ہے۔ MongoDB کے لیے پرانے RU پر مبنی Cosmos DB API کے برعکس، vCore ماڈل ڈیڈیکیٹڈ کمپیوٹ پر اصل MongoDB انجن کی مثالیں چلاتا ہے، MongoDB 6.0+ خصوصیات کے ساتھ اعلی مطابقت فراہم کرتا ہے بشمول مکمل ایگریگیشن پائپ لائن، اسٹریمز کی تبدیلی، اور لین دین۔ یہ زون فالتو HA، پوائنٹ ان ٹائم ریکوری، اور خودکار بیک اپ پیش کرتا ہے۔

MongoDB اٹلس Azureپر وہی مکمل طور پر منظم MongoDB تجربہ فراہم کرتا ہے جو AWS پر ہے، Azure انفراسٹرکچر پر VNET پیئرنگ، Azure پرائیویٹ لنک، اور Azure AD انٹیگریشن کے ساتھ چل رہا ہے۔

AKS
پر

سیلف مینیجڈ MongoDB یا Percona آپریٹر کے ساتھ Azure مینیجڈ ڈسک (پریمیم SSD v2 تجویز کردہ) استعمال کرتا ہے۔

# Azure Premium SSD StorageClass
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: azure-premium-mongodb
provisioner: disk.csi.azure.com
parameters:
  skuName: Premium_LRS
  cachingMode: None
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
reclaimPolicy: Retain

GCP تعیناتی: اٹلس آن GCP بمقابلہ سیلف مینیجڈ GKE

پر GCPپر

MongoDB Atlas GCP- مقامی انضمام کے ساتھ Google کلاؤڈ انفراسٹرکچر پر چلتا ہے: VPC پیئرنگ، پرائیویٹ سروس کنیکٹ، اور GKE کلسٹر انٹیگریشن۔ GCP پر اٹلس خودکار فیل اوور کے ساتھ GCP علاقوں میں پھیلے کثیر علاقائی کلسٹرز کو سپورٹ کرتا ہے۔

GKEپر

سیلف مینیجڈ MongoDB یا Percona آپریٹر کے ساتھ Persistent Disk SSD استعمال کرتا ہے۔ GKE Workload Identity GCS میں بیک اپ کے لیے محفوظ، بغیر کلیدی تصدیق فراہم کرتی ہے۔

# GKE SSD StorageClass
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: pd-ssd-mongodb
provisioner: pd.csi.storage.gke.io
parameters:
  type: pd-ssd
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
reclaimPolicy: Retain

ننگی دھات k3s/رنچر لانگ ہارن

کے ساتھ

ڈیٹا کی خودمختاری، تعمیل، یا لاگت کی اصلاح کے لیے، MongoDB رینچر مینجمنٹ اور Longhorn تقسیم شدہ اسٹوریج کے ساتھ k3s کا استعمال کرتے ہوئے ننگی دھات Kubernetes پر مؤثر طریقے سے چلتا ہے۔ یہ فن تعمیر ایک ہی آپریٹر پر مبنی مینجمنٹ ماڈل کو برقرار رکھتے ہوئے کلاؤڈ فراہم کنندہ کے انحصار کو ختم کرتا ہے۔

k3s / Rancher MongoDB HA (ننگی دھات)رینچر مینجمنٹ سرورk3s کلسٹر (3 سرور + 3 ایجنٹ نوڈس)MongoDB کمیونٹی آپریٹرہیڈ لیس SVC (mongo-svc)ایجنٹ نوڈ 1mongo-0 (پرائمری)منگوڈ + ایجنٹ سائڈکارLonghorn PVC: ڈیٹا (100Gi)Longhorn PVC: logs (10Gi)Prometheus برآمد کنندہایجنٹ نوڈ 2mongo-1 (ثانوی)منگوڈ + ایجنٹ سائڈکارLonghorn PVC: ڈیٹا (100Gi)Longhorn PVC: logs (10Gi)Prometheus برآمد کنندہایجنٹ نوڈ 3mongo-2 (ثانوی)منگوڈ + ایجنٹ سائڈکارLonghorn PVC: ڈیٹا (100Gi)Longhorn PVC: logs (10Gi)Prometheus برآمد کنندہلانگ ہارن تقسیم شدہ ذخیرہ — فی حجم 3x نقلیں | سنیپ شاٹس | S3 بیک اپہر نوڈ پرNVMe SSD → Longhorn نقل، دوبارہ تعمیر، اور توسیعکا انتظام کرتا ہے۔MetalLB — مونگوس / منگوڈ کے لیے لوڈ بیلنس:27017پرائمریسیکنڈریLonghorn PVCایکسپورٹرآپریٹرہیڈ لیس SVCرینچر

Longhorn Storage برائے MongoDB

# Install Longhorn
helm repo add longhorn https://charts.longhorn.io
helm repo update

helm install longhorn longhorn/longhorn \
  --namespace longhorn-system \
  --create-namespace \
  --set defaultSettings.defaultReplicaCount=3 \
  --set defaultSettings.storageMinimalAvailablePercentage=15

# StorageClass for MongoDB on Longhorn
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: longhorn-mongo
provisioner: driver.longhorn.io
parameters:
  numberOfReplicas: "3"
  staleReplicaTimeout: "2880"
  dataLocality: best-effort
  fsType: xfs
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
reclaimPolicy: Retain

XFS کی سفارش Linux پر MongoDB کے لیے ext4 پر کی جاتی ہے۔ MongoDB کا WiredTiger اسٹوریج انجن XFS کے مختص پیٹرن سے فائدہ اٹھاتا ہے، خاص طور پر جرنل اور ڈیٹا فائلوں کے لیے۔ Longhorn کی تین طرفہ نقل MongoDB کی ریپلیکا سیٹ لیول فالتو پن کے اوپر والیوم لیول کی فالتو پن فراہم کرتی ہے، جو آپ کو اسٹوریج کی ناکامیوں کے خلاف گہرائی میں دفاع فراہم کرتی ہے۔

MetalLB اور ہیڈ لیس سروسز

# MetalLB IP Pool for MongoDB
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: mongo-pool
  namespace: metallb-system
spec:
  addresses:
    - 192.168.1.220-192.168.1.225
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: mongo-l2
  namespace: metallb-system
spec:
  ipAddressPools:
    - mongo-pool

MongoDB آپریٹر ایک ہیڈ لیس سروس بناتا ہے جو ہر پوڈ کو ایک مستحکم DNS نام دیتا ہے (mongo-0.mongo-svc.databases.svc.cluster.local)۔ یہ ریپلیکا سیٹ ممبر کی دریافت کے لیے ضروری ہے۔ اگر آپ کو بیرونی رسائی کی ضرورت ہو تو، MetalLB مونگوس راؤٹرز (شارڈڈ کلسٹرز کے لیے) یا پرائمری (ریپلیکا سیٹس کے لیے) کے سامنے لوڈ بیلنسر سروس کو روٹیبل IP تفویض کرتا ہے۔

بیک اپ کی حکمت عملی

MongoDB متعدد بیک اپ اپروچز پیش کرتا ہے، ہر ایک مختلف منظرناموں کے لیے موزوں ہے۔

mongodump/mongorestore

منطقی بیک اپ جو BSON دستاویزات برآمد کرتے ہیں۔ پورٹ ایبل اور انسانی معائنہ کے قابل، لیکن بڑے ڈیٹا سیٹس کے لیے سست ہے اور اپنے طور پر پوائنٹ ان ٹائم ریکوری کو سپورٹ نہیں کرتا ہے۔

# Full logical backup with oplog for consistency
mongodump --uri="mongodb://backup-user:password@mongo-0:27017,mongo-1:27017,mongo-2:27017/appdb?replicaSet=rs-production&authSource=admin" \
  --oplog \
  --gzip \
  --out=/backups/$(date +%Y%m%d-%H%M%S)

# Restore
mongorestore --uri="mongodb://admin:password@mongo-0:27017/?replicaSet=rs-production&authSource=admin" \
  --oplogReplay \
  --gzip \
  /backups/20260412-030000/

Percona بیک اپ MongoDB (PBM)

کے لیے

PBM فزیکل بیک اپ، انکریمنٹل بیک اپ، اور پوائنٹ ان ٹائم ریکوری فراہم کرتا ہے۔ یہ پیداوار میں خود سے منظم MongoDB کے لیے تجویز کردہ بیک اپ ٹول ہے۔

# Configure PBM storage
pbm config --set storage.type=s3 \
  --set storage.s3.bucket=company-mongodb-backups \
  --set storage.s3.region=us-east-1 \
  --set storage.s3.credentials.access-key-id=$AWS_ACCESS_KEY \
  --set storage.s3.credentials.secret-access-key=$AWS_SECRET_KEY

# Full backup
pbm backup --type=logical --compression=gzip

# Physical backup (faster, requires WiredTiger)
pbm backup --type=physical --compression=gzip

# Incremental backup
pbm backup --type=incremental --base-snapshot=2026-04-12T03:00:00Z

# Point-in-time recovery
pbm restore --time="2026-04-12T09:30:00Z"

# List backups
pbm list

# Check backup status
pbm status

کلاؤڈ اسنیپ شاٹس

کلاؤڈ فراہم کنندگان پر، EBS سنیپ شاٹس (AWS)، منیجڈ ڈسک اسنیپ شاٹس (Azure)، اور پرسسٹنٹ ڈسک اسنیپ شاٹس (GCP) تیز، اسٹوریج لیول بیک اپ فراہم کرتے ہیں۔ پوائنٹ ان ٹائم مستقل مزاجی کے لیےdb.fsyncLock()کے ساتھ مل کر، وہ بڑے ڈیٹا سیٹس کے لیے تیز ترین بیک اپ اور بحالی کے اوقات پیش کرتے ہیں۔

# Kubernetes VolumeSnapshot for MongoDB
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: mongodb-snapshot-$(date +%Y%m%d)
  namespace: databases
spec:
  volumeSnapshotClassName: csi-snapclass
  source:
    persistentVolumeClaimName: data-volume-production-mongodb-0

اوپلاگ پر مبنی پوائنٹ ان ٹائم ریکوری

اپلاگ بیس بیک اپ کے ساتھ مل کر پوائنٹ ان ٹائم ریکوری (PITR) کو قابل بناتا ہے۔ پی بی ایم بیک اپ اسٹوریج میں اپلاگ اندراجات کو مسلسل آرکائیو کرتا ہے۔ وقت میں ایک مخصوص نقطہ پر بحال کرنے کے لیے، PBM تازہ ترین بیس بیک اپ کو بحال کرتا ہے اور پھر ٹارگٹ ٹائم اسٹیمپ تک oplog اندراجات کو دوبارہ چلاتا ہے۔ یہ پرکونا آپریٹر CRD میںpitrسیکشن کے ذریعے ترتیب دیا گیا ہے۔

HAکے لیے

کنکشن سٹرنگ کنفیگریشن

فیل اوور ایونٹس کے دوران ایپلیکیشن کی لچک کے لیے مناسب کنکشن سٹرنگ کنفیگریشن اہم ہے۔

# Standard connection string with all replica set members
mongodb://appuser:password@mongo-0.mongo-svc:27017,mongo-1.mongo-svc:27017,mongo-2.mongo-svc:27017/appdb?replicaSet=rs-production&w=majority&j=true&readPreference=secondaryPreferred&retryWrites=true&retryReads=true&connectTimeoutMS=10000&socketTimeoutMS=30000&serverSelectionTimeoutMS=15000&maxPoolSize=100&minPoolSize=10

# SRV-based connection string (DNS discovery)
mongodb+srv://appuser:password@mongo-cluster.databases.svc.cluster.local/appdb?w=majority&retryWrites=true&readPreference=nearest

# For sharded clusters (connect through mongos)
mongodb://appuser:password@mongos-0:27017,mongos-1:27017/appdb?w=majority&retryWrites=true&readPreference=nearest
HA کے لیے

کلیدی کنکشن سٹرنگ پیرامیٹرز:retryWrites=trueاورretryReads=trueفیل اوور کے دوران ناکام ہونے والے آپریشنز کی خودکار دوبارہ کوشش کو فعال کرتے ہیں۔w=majorityکو یقینی بناتا ہے کہ تحریریں پرائمری انتخابات میں زندہ رہیں۔serverSelectionTimeoutMSکنٹرول کرتا ہے کہ ڈرائیور مناسب سرور تلاش کرنے کے لیے کتنی دیر انتظار کرتا ہے — اسے متوقع انتخابی وقت (کم از کم 15 سیکنڈ) سے زیادہ سیٹ کریں۔maxPoolSizeکنکشن کی تھکن کو روکنے کے لیے کنکشن پول فی منگوس/ریپلیکا سیٹ ممبر کو محدود کرتا ہے۔

انڈیکس آپٹیمائزیشن اور استفسار کی کارکردگی

انڈیکسز MongoDB استفسار کی کارکردگی کے لیے بنیادی لیور ہیں۔ کثرت سے پوچھے جانے والے فیلڈ پر ایک گمشدہ انڈیکس ایک کلیکشن اسکین پر مجبور کرتا ہے جو ڈیٹا کے سائز کے ساتھ لکیری طور پر گھٹ جاتا ہے۔

# Create compound index for common query pattern
db.orders.createIndex(
  { customer_id: 1, order_date: -1, status: 1 },
  { name: "idx_customer_orders", background: true }
)

# Partial index (only index documents matching a filter)
db.events.createIndex(
  { timestamp: 1 },
  { name: "idx_active_events", partialFilterExpression: { status: "active" } }
)

# TTL index for automatic document expiration
db.sessions.createIndex(
  { createdAt: 1 },
  { expireAfterSeconds: 86400, name: "idx_session_ttl" }
)

# Text index for search
db.products.createIndex(
  { name: "text", description: "text" },
  { weights: { name: 10, description: 5 }, name: "idx_product_search" }
)

# Analyze query performance
db.orders.find({ customer_id: "c123" }).sort({ order_date: -1 }).explain("executionStats")

# Find unused indexes
db.orders.aggregate([ { $indexStats: {} } ])

غیر استعمال شدہ اشاریہ جات کی نشاندہی کرنے کے لیے باقاعدگی سے$indexStatsکا جائزہ لیں جو اسٹوریج کو ضائع کرتے ہیں اور لکھنے کی رفتار کم کرتے ہیں۔ اس بات کی توثیق کرنے کے لیےexplain()طریقہ استعمال کریں کہ استفسارات متوقع انڈیکس کا استعمال کرتے ہیں اورnReturnedکی نسبت اعلیtotalDocsExaminedکو چیک کریں، جو کہ ایک غیر موثر استفسار پلان کی نشاندہی کرتا ہے۔

وائرڈ ٹائیگر اسٹوریج انجن ٹیوننگ

WiredTiger MongoDB کا ڈیفالٹ اور MongoDB 4.2 کے بعد سے واحد پروڈکشن اسٹوریج انجن ہے۔ اس کی کارکردگی کی خصوصیات کیش سائزنگ، کمپریشن، اور جرنل کنفیگریشن سے بہت زیادہ متاثر ہوتی ہیں۔

# WiredTiger configuration in mongod.conf
storage:
  dbPath: /data/db
  journal:
    enabled: true
    commitIntervalMs: 100
  wiredTiger:
    engineConfig:
      cacheSizeGB: 4            # ~50% of (RAM - 1GB), max 80%
      journalCompressor: snappy
      directoryForIndexes: true  # separate dir for index files
    collectionConfig:
      blockCompressor: snappy   # or zstd for better ratio
    indexConfig:
      prefixCompression: true

operationProfiling:
  mode: slowOp
  slowOpThresholdMs: 100

replication:
  oplogSizeMB: 51200            # 50 GB oplog
  replSetName: rs-production

net:
  maxIncomingConnections: 10000
  compression:
    compressors: snappy,zstd,zlib

setParameter:
  wiredTigerConcurrentReadTransactions: 128
  wiredTigerConcurrentWriteTransactions: 128

WiredTiger کیشے کا سائز آپ کے ورکنگ سیٹ کو رکھنے کے لیے ہونا چاہیے — ڈیٹا اور اشاریہ جات کو آپ کے سوالات کے ذریعے فعال طور پر رسائی حاصل ہے۔ اگر کیش بہت چھوٹا ہے تو، WiredTiger اکثر صفحات کو بے دخل کرتا ہے، جس کی وجہ سے I/O زیادہ ہوتا ہے۔ اگر یہ بہت بڑا ہے، تو یہ OS فائل سسٹم کیش اور دیگر عمل کے لیے ناکافی میموری چھوڑ دیتا ہے۔ نقطہ آغاز دستیاب RAM مائنس 1 GB کا 50% ہے (OS اور دیگر عملوں کے لیے)، ورکنگ سیٹ کے سائز پر بند ہے۔

توثیق اور TLS انکرپشن

# Generate TLS certificates for MongoDB
# CA certificate
openssl req -x509 -newkey rsa:4096 -days 3650 -nodes \
  -keyout ca.key -out ca.crt \
  -subj "/CN=MongoDB-CA"

# Server certificate (include all member hostnames in SAN)
openssl req -newkey rsa:4096 -nodes \
  -keyout server.key -out server.csr \
  -subj "/CN=mongo-0.mongo-svc.databases.svc.cluster.local" \
  -addext "subjectAltName=DNS:mongo-0.mongo-svc.databases.svc.cluster.local,DNS:mongo-1.mongo-svc.databases.svc.cluster.local,DNS:mongo-2.mongo-svc.databases.svc.cluster.local,DNS:localhost,IP:127.0.0.1"

openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key \
  -CAcreateserial -out server.crt -days 365

# Combine cert and key into PEM
cat server.crt server.key > server.pem

# Create Kubernetes secrets
kubectl create secret tls mongodb-tls-cert \
  --cert=server.crt --key=server.key -n databases

kubectl create secret generic mongodb-ca-cert \
  --from-file=ca.crt=ca.crt -n databases
# MongoDB TLS configuration (mongod.conf)
net:
  tls:
    mode: requireTLS
    certificateKeyFile: /etc/mongodb/tls/server.pem
    CAFile: /etc/mongodb/tls/ca.crt
    allowConnectionsWithoutCertificates: false

security:
  authorization: enabled
  clusterAuthMode: x509
Prometheus اور Grafanaکے ساتھ

مانیٹرنگ

MongoDBmongodb_exporter(پرکونا سے) کے ذریعے میٹرکس کو ظاہر کرتا ہے جو Prometheus کے ساتھ ضم ہوتا ہے۔ مانیٹر کرنے کے لیے کلیدی میٹرکس میں کنکشن کی گنتی، آپریشن کی شرح، نقل کا وقفہ، وائرڈ ٹائیگر کیشے کا استعمال، اور استفسار کو ہدف بنانے کی کارکردگی شامل ہیں۔

# Deploy mongodb_exporter as a sidecar or standalone
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongodb-exporter
  namespace: databases
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongodb-exporter
  template:
    metadata:
      labels:
        app: mongodb-exporter
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/port: "9216"
    spec:
      containers:
        - name: exporter
          image: percona/mongodb_exporter:0.40.0
          args:
            - --mongodb.uri=mongodb://monitoring:password@production-mongodb-0.production-mongodb-svc:27017,production-mongodb-1.production-mongodb-svc:27017,production-mongodb-2.production-mongodb-svc:27017/?replicaSet=rs-production&authSource=admin
            - --collect-all
            - --compatible-mode
          ports:
            - containerPort: 9216
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
# ServiceMonitor for Prometheus Operator
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: mongodb-metrics
  namespace: databases
  labels:
    release: kube-prometheus-stack
spec:
  selector:
    matchLabels:
      app: mongodb-exporter
  endpoints:
    - port: metrics
      interval: 15s
      scrapeTimeout: 10s
# Critical Prometheus alert rules for MongoDB
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: mongodb-alerts
  namespace: databases
  labels:
    release: kube-prometheus-stack
spec:
  groups:
    - name: mongodb-health
      rules:
        - alert: MongoDBReplicationLagHigh
          expr: mongodb_mongod_replset_member_replication_lag > 30
          for: 5m
          labels:
            severity: warning
          annotations:
            summary: "MongoDB replica {{ $labels.name }} lag exceeds 30s"

        - alert: MongoDBConnectionsHigh
          expr: mongodb_connections{state="current"} / mongodb_connections{state="available"} > 0.8
          for: 2m
          labels:
            severity: critical
          annotations:
            summary: "MongoDB connections above 80% capacity"

        - alert: MongoDBWiredTigerCacheEvictions
          expr: rate(mongodb_wiredtiger_cache_evicted_pages_total[5m]) > 100
          for: 10m
          labels:
            severity: warning
          annotations:
            summary: "High WiredTiger cache eviction rate"

        - alert: MongoDBReplicaSetNoPrimary
          expr: mongodb_mongod_replset_number_of_members{state="PRIMARY"} == 0
          for: 1m
          labels:
            severity: critical
          annotations:
            summary: "MongoDB replica set has no primary"

        - alert: MongoDBQueryTargetingInefficient
          expr: rate(mongodb_mongod_metrics_query_executor_total{state="scanned_objects"}[5m]) / rate(mongodb_mongod_metrics_query_executor_total{state="returned"}[5m]) > 100
          for: 15m
          labels:
            severity: warning
          annotations:
            summary: "MongoDB scanning 100x more documents than returned"

ریئل ٹائم ایپلی کیشنز کے لیے اسٹریمز کو تبدیل کریں

چینج اسٹریمز MongoDB میں ڈیٹا کی تبدیلیوں کے لیے ریئل ٹائم نوٹیفکیشن میکانزم فراہم کرتے ہیں۔ وہ تبدیلی کے واقعات کو ایپلی کیشنز میں آگے بڑھانے کے لیے اوپلاگ کا فائدہ اٹھاتے ہیں، ایونٹ سے چلنے والے آرکیٹیکچرز، ریئل ٹائم ڈیش بورڈز، اور بغیر پولنگ کے ڈیٹا سنکرونائزیشن پائپ لائنز کو فعال کرتے ہیں۔

// Watch changes on a collection
const pipeline = [
  { $match: { operationType: { $in: ["insert", "update", "replace"] } } },
  { $match: { "fullDocument.status": "active" } }
];

const changeStream = db.collection("orders").watch(pipeline, {
  fullDocument: "updateLookup",  // include full document on updates
  resumeAfter: resumeToken       // resume from last processed event
});

changeStream.on("change", (change) => {
  console.log("Change detected:", change.operationType);
  console.log("Document:", change.fullDocument);
  // Store resume token for crash recovery
  saveResumeToken(change._id);
});

changeStream.on("error", (error) => {
  console.error("Change stream error:", error);
  // Reconnect using saved resume token
});

چینج اسٹریمز کو ایک ریپلیکا سیٹ یا شارڈ کلسٹر کی ضرورت ہوتی ہے (وہ اسٹینڈ اسٹون منگوڈ مثالوں پر کام نہیں کرتے ہیں)۔ وہ پرائمری انتخابات میں زندہ رہتے ہیں — ڈرائیور خود بخود دوبارہ جڑ جاتا ہے اور آخری موصول ہونے والے ریزیومے ٹوکن سے دوبارہ شروع ہو جاتا ہے۔ پروڈکشن کے استعمال کے لیے، ہمیشہ دوبارہ شروع کرنے والے ٹوکن کو برقرار رکھیں تاکہ آپ کی ایپلیکیشن غائب ہونے والے واقعات کے بغیر دوبارہ شروع ہونے سے بحال ہو سکے۔

رولنگ مینٹیننس اور ورژن اپ گریڈ

MongoDB رولنگ اپ گریڈ کو سپورٹ کرتا ہے جہاں آپ ایک وقت میں ایک ریپلیکا سیٹ ممبر کو اپ گریڈ کرتے ہیں، ثانوی سے شروع ہو کر پرائمری کے ساتھ ختم ہوتا ہے (جو ایک قدم نیچے اور الیکشن کو متحرک کرتا ہے)۔ یہ معمولی اور بڑی ورژن کی تبدیلیوں کے لیے صفر ڈاؤن ٹائم اپ گریڈ کی اجازت دیتا ہے۔

# Rolling upgrade procedure for self-managed replica set
# 1. Upgrade each secondary one at a time
# On secondary (mongo-2):
sudo systemctl stop mongod
sudo yum install -y mongodb-org-7.0.14  # or apt-get
sudo systemctl start mongod
# Wait for the member to reach SECONDARY state
rs.status()

# 2. Step down the primary
rs.stepDown()

# 3. Upgrade the old primary (now a secondary)
sudo systemctl stop mongod
sudo yum install -y mongodb-org-7.0.14
sudo systemctl start mongod

# 4. Verify cluster health
rs.status()
db.adminCommand({ getParameter: 1, featureCompatibilityVersion: 1 })

# 5. Set feature compatibility version (irreversible)
db.adminCommand({ setFeatureCompatibilityVersion: "7.0" })

Kubernetes پر MongoDB کمیونٹی آپریٹر یا Percona آپریٹر کے ساتھ، رولنگ اپ گریڈ خودکار ہوتے ہیں — آپ CRD میںversionفیلڈ کو صرف اپ ڈیٹ کرتے ہیں اور آپریٹر ہر پوڈ کی رولنگ اپ ڈیٹ کو سنبھالتا ہے، آگے بڑھنے سے پہلے ہر ممبر کے صحت مند ہونے کا انتظار کرتا ہے۔

ڈیزاسٹر ریکوری اور فیل اوور ٹیسٹنگ

ایک اعلی دستیابی کی تعیناتی جس کی ناکامی کے تحت کبھی تجربہ نہیں کیا گیا ہے غیر ٹیسٹ شدہ ہے۔ باقاعدگی سے فیل اوور ٹیسٹنگ آپ کے فن تعمیر، آپ کی نگرانی کے انتباہات، اور آپ کی ٹیم کے واقعے کے ردعمل کے طریقہ کار کی توثیق کرتی ہے۔

کنٹرولڈ فیل اوور ٹیسٹ

# Test 1: Step down the primary
rs.stepDown(120)  // 120-second election hold
// Monitor: election should complete in ~10-12s
// Verify: application reconnects and resumes operations

# Test 2: Kill a secondary pod in Kubernetes
kubectl delete pod production-mongodb-1 -n databases --grace-period=0 --force
// The StatefulSet recreates the pod
// The operator rejoins it to the replica set

# Test 3: Simulate network partition
kubectl exec production-mongodb-0 -n databases -- \
  iptables -A INPUT -p tcp --dport 27017 -j DROP
// The isolated primary should step down (cannot reach majority)
// Remaining members elect a new primary
// Cleanup: remove iptables rule and let member rejoin

# Test 4: Simulate storage failure
kubectl exec production-mongodb-2 -n databases -- \
  chmod 000 /data/db
// mongod should crash; Kubernetes restarts the pod
// The member resyncs from the primary's oplog

فیل اوور کے دوران کیا پیمائش کریں

  • RTO (ریکوری ٹائم مقصد)— پرائمری ناکامی سے لے کر نئی پرائمری قبول کرنے تک کا وقت۔ ہدف: نقل سیٹ کے لیے 30 سیکنڈ سے کم۔
  • RPO (ریکوری پوائنٹ مقصد)— فیل اوور کے دوران ڈیٹا کا نقصان۔w: majorityکے ساتھ، تسلیم شدہ تحریروں کے لیے RPO صفر ہے۔w: 1کے ساتھ، RPO ناکامی کے وقت نقل کے وقفے کے برابر ہے۔
  • ایپلیکیشن ایرر ریٹ— فیل اوور ونڈو کے دوران ناکام ہونے والی درخواستوں کا فیصد۔retryWrites=trueکے ساتھ، زیادہ تر تحریری ناکامیوں کو ڈرائیور خود بخود دوبارہ آزماتا ہے۔
  • سٹریم کا تسلسل تبدیل کریں— اس بات کی توثیق کریں کہ تبدیلی کے سلسلے کے صارفین اپنے محفوظ کردہ ٹوکن سے ایونٹس غائب کیے بغیر دوبارہ شروع کریں۔

ڈیزاسٹر ریکوری رن بک

  1. سنگل ممبر کی ناکامی— Kubernetes پوڈ ری اسٹارٹ اور اوپلاگ کیچ اپ کے ذریعے خودکار بحالی۔ کسی دستی کارروائی کی ضرورت نہیں ہے جب تک کہ ممبر کو مکمل دوبارہ مطابقت پذیری کی ضرورت نہ ہو۔
  2. بنیادی ناکامی— خودکار انتخابات 10-12 سیکنڈ کے اندر ثانوی کو فروغ دیتا ہے۔ ایپلیکیشن کنیکٹیویٹی کی توثیق کریں اور بقیہ ثانوی حصوں پر نقل تیار کریں۔
  3. اکثریت کی ناکامی— اگر اراکین کی اکثریت کم ہے، تو ریپلیکا سیٹ صرف پڑھنے کے لیے بن جاتا ہے (کوئی انتخابات ممکن نہیں)۔ اراکین کو بحال کریں یا آخری حربے کے طور پرrs.reconfig({ force: true })استعمال کریں (اس سے ڈیٹا ضائع ہو سکتا ہے)۔
  4. کلسٹر کا مکمل نقصان— ایک نیا کلسٹر تعینات کریں، تازہ ترین PBM بیک اپ سے بحال کریں، اور oplog کو وقت پر ٹارگٹ پوائنٹ پر دوبارہ چلائیں۔ کنکشن کے تار اور DNS ریکارڈز کو اپ ڈیٹ کریں۔
  5. ریجنل فیل اوور— اگر پرائمری ریجن کھو جاتا ہے، تو دوسرے ریجن میں سیکنڈری خود بخود پرائمری منتخب ہو جاتا ہے (اگر اسے کافی ترجیح حاصل ہو اور باقی ممبران کی اکثریت ہو)۔ نئے پرائمری ریجن تک ٹریفک کو روٹ کرنے کے لیے DNS کو اپ ڈیٹ کریں۔

پروڈکشن ٹیوننگ کی سفارشات

OS-Level Tuning

# Disable Transparent Huge Pages (critical for MongoDB)
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

# Set readahead to 8-32 sectors for SSD
blockdev --setra 32 /dev/sda

# Increase file descriptor limits
ulimit -n 64000
ulimit -u 64000

# Swappiness
vm.swappiness = 1

# Dirty page ratio
vm.dirty_ratio = 15
vm.dirty_background_ratio = 5

# Network tuning
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_keepalive_time = 120

ریسورس سائزنگ گائیڈ لائنز

  • WiredTiger cache: دستیاب RAM کا 50% مائنس 1 GB، یا آپ کے ورکنگ سیٹ کا سائز، جو بھی چھوٹا ہو۔
  • Oplog سائز: تحریری کارروائیوں کے 24-72 گھنٹے منعقد کرنے کے لیے کافی ہے۔ 50 GB کے ساتھ شروع کریں اورrs.printReplicationInfo()کے ساتھ مانیٹر کریں۔
  • اسٹوریج IOPS: MongoDB I/O-انتہائی ہے، خاص طور پر کمپیکشن اور چیک پوائنٹنگ کے دوران۔ پروویژنڈ IOPS کے ساتھ NVMe SSD یا کلاؤڈ اسٹوریج کا استعمال کریں (AWS پر 6000+ IOPS کے ساتھ gp3، Azure پر پریمیم SSD v2، GCP پر pd-ssd)۔
  • CPU: ایک ساتھ پڑھنے/لکھنے کے آپریشنز، وائرڈ ٹائیگر کے کنکرنٹ ٹرانزیکشنز، اور بیک گراؤنڈ ٹاسک (چیک پوائنٹنگ، کمپیکشن، ریپلیکیشن) کے لیے متعدد کور سے MongoDB فوائد۔
  • نیٹ ورک: لکھنے والے بھاری کام کے بوجھ کے لیے نقل کی ٹریفک اہم ہو سکتی ہے۔ ریپلیکا سیٹ ممبران کے درمیان کم تاخیر، ہائی بینڈوتھ نیٹ ورکنگ کو یقینی بنائیں۔

کنکشن مینجمنٹ

# Application-side connection pool configuration
const client = new MongoClient(uri, {
  maxPoolSize: 100,
  minPoolSize: 10,
  maxIdleTimeMS: 60000,
  waitQueueTimeoutMS: 5000,
  connectTimeoutMS: 10000,
  socketTimeoutMS: 30000,
  serverSelectionTimeoutMS: 15000,
  retryWrites: true,
  retryReads: true,
  w: "majority",
  readPreference: "secondaryPreferred",
  compressors: ["snappy", "zstd"]
});

مانیٹرنگ چیک لسٹ

  • Replication lag— الرٹ جب کوئی ثانوی وقفہ کے 30 سیکنڈ سے زیادہ ہو۔
  • کنکشن سنترپتی— الرٹ جب موجودہ کنکشنزmaxIncomingConnectionsکے 80% سے زیادہ ہوں۔
  • وائرڈ ٹائیگر کیشے— الرٹ جب کیشے کے گندے بھرنے کا تناسب 20% سے زیادہ ہو جائے (یہ اشارہ کرتا ہے کہ تحریری دباؤ چیک پوائنٹ تھرو پٹ سے زیادہ ہے)۔
  • اوپلاگ ونڈو— جب اوپلاگ ونڈو 12 گھنٹے سے نیچے گر جائے تو انتباہ (دوسری چیزوں کا خطرہ جس کو دیکھ بھال کے بعد مکمل دوبارہ مطابقت پذیری کی ضرورت ہو)۔
  • کو ٹارگٹ کرنے والا سوال — جب اسکین شدہ دستاویزات کا واپسی دستاویزات سے تناسب 100 سے زیادہ ہو جائے تو الرٹ (گمشدہ انڈیکس)۔
  • ڈسک کا استعمال— 70% اور 85% حدوں پر الرٹ۔ MongoDB کمپیکشن کے دوران نمایاں عارضی ڈسک کی جگہ استعمال کر سکتا ہے۔
  • بیک اپ کی تازگی— الرٹ جب آخری کامیاب بیک اپ آپ کی RPO ونڈو سے پرانا ہو۔
  • ٹکٹ کی دستیابی— WiredTiger ٹکٹوں کو پڑھنے اور لکھنے کی نگرانی کریں۔ تھکن آپریشن کی قطار میں لگنے اور تاخیر کا سبب بنتی ہے۔

آپریشنل کمانڈز فوری حوالہ

# Replica set status
rs.status()
rs.conf()
rs.printReplicationInfo()
rs.printSecondaryReplicationInfo()

# Cluster health (sharded)
sh.status()
db.adminCommand({ balancerStatus: 1 })
db.adminCommand({ listShards: 1 })

# Server diagnostics
db.serverStatus()
db.currentOp({ "$all": true })
db.adminCommand({ hostInfo: 1 })

# Kill long-running operations
db.killOp(opId)

# Compaction (reclaim disk space)
db.runCommand({ compact: "orders" })

# Profiler (identify slow queries)
db.setProfilingLevel(1, { slowms: 100 })
db.system.profile.find().sort({ ts: -1 }).limit(10)

# Index management
db.orders.getIndexes()
db.orders.createIndex({ field: 1 }, { background: true })
db.orders.dropIndex("index_name")

# Kubernetes-specific
kubectl get mongodbcommunity -n databases
kubectl describe mongodbcommunity production-mongodb -n databases
kubectl logs production-mongodb-0 -n databases -c mongod
kubectl exec -it production-mongodb-0 -n databases -c mongod -- mongosh

فیصلہ میٹرکس: اپنے MongoDB HA آرکیٹیکچر کا انتخاب کرنا

  • سنگل کلاؤڈ، نظم کردہ ترجیح— MongoDB Atlas استعمال کریں۔ یہ کم سے کم آپریشنل اوور ہیڈ کے ساتھ HA، بیک اپ، مانیٹرنگ، اور اسکیلنگ کو ہینڈل کرتا ہے۔
  • AWS MongoDB کے ساتھ مطابقت پذیر ضروریات صرف— Amazon DocumentDB پر غور کریں اگر آپ کی ایپلیکیشن MongoDB API کا بنیادی سب سیٹ استعمال کرتی ہے اور آپ مکمل طور پر منظم تجربہ چاہتے ہیں۔ دوسری صورت میں، ایٹلس یا EKS پر خود کا انتظام۔
  • Azure مکمل MongoDB خصوصیات کے ساتھ— ایک منظم تجربے کے لیے MongoDB vCore کے لیے Cosmos DB استعمال کریں، یا حقیقی MongoDB نظم شدہ سروس کے لیے Azure پر Atlas استعمال کریں۔
  • ملٹی کلاؤڈ یا ہائبرڈ— MongoDB کمیونٹی آپریٹر یا پرکونا آپریٹر کے ساتھ خود کا انتظام۔ Kubernetes خلاصہ فراہم کنندگان میں مسلسل تعیناتی کو قابل بناتا ہے۔
  • ننگی دھات یا کنارے— k3s + Rancher + Longhorn + MongoDB کمیونٹی آپریٹر یا پرکونا آپریٹر۔ بادل پر انحصار کی ضرورت نہیں ہے۔
  • بڑے پیمانے پر افقی اسکیلنگ— ڈیٹا لوکلٹی کے لیے زون شارڈنگ کے ساتھ شارڈڈ کلسٹر۔ پرکونا آپریٹر استعمال کریں جو مقامی طور پر شارڈ ڈیپلائمنٹس کو سپورٹ کرتا ہے۔
  • ریئل ٹائم ایونٹ سے چلنے والی ایپلی کیشنز— MongoDB تبدیلی کے سلسلے بلٹ ان CDC فراہم کرتے ہیں۔ یقینی بنائیں کہ آپ ریپلیکا سیٹ یا شارڈ کلسٹر استعمال کرتے ہیں (اسٹینڈ اکیلا نہیں)۔

نتیجہ

MongoDB کی بلٹ ان ریپلیکیشن اور شارڈنگ پرائمیٹوز اسے اعلیٰ دستیابی کے لیے ایک آرکیٹیکچرل فائدہ دیتے ہیں — خودکار فیل اوور کے ساتھ ریپلیکا سیٹس اور افقی اسکیلنگ کے ساتھ شارڈ کلسٹرز مقامی صلاحیتیں ہیں، نہ کہ بعد کے خیالات۔ لیکن ان ابتدائی چیزوں کو صحیح طریقے سے ترتیب دیا جانا چاہیے اور نظم و ضبط کے ساتھ چلنا چاہیے تاکہ دستیابی کی ضمانت فراہم کی جا سکے جس کی پیداواری نظام کی ضرورت ہے۔

ایک پروڈکشن MongoDB کی تعیناتی کے لیے ناکامی والے ڈومینز میں تین ڈیٹا بیئرنگ ریپلیکا سیٹ ممبرز کی ضرورت ہوتی ہے،w: majorityکو پائیداری کے لیے تشویش، نقل کی لچک کے لیے مناسب اوپلاگ سائزنگ، آپ کے ورکنگ سیٹ کے لیے وائرڈ ٹائیگر کیش ٹیوننگ، اور پوائنٹ ان ٹائم ریکوری کی اہلیت کے ساتھ بیک اپ کی آزمائشی حکمت عملی کی ضرورت ہوتی ہے۔ Kubernetes آپریٹرز - چاہے ریپلیکا سیٹس کے لیے MongoDB کمیونٹی آپریٹر ہو یا شارڈنگ اور انٹیگریٹڈ بیک اپ سمیت مکمل خصوصیات والی تعیناتیوں کے لیے پرکونا آپریٹر - لائف سائیکل مینجمنٹ کو خودکار بنائیں جس کے لیے بصورت دیگر اہم آپریشنل سرمایہ کاری کی ضرورت ہوگی۔

AWS، Azure، GCP، اور ننگی دھات میں تعیناتی پیٹرن ایک ہی بنیادی MongoDB کنفیگریشن کا اشتراک کرتے ہیں۔ اسٹوریج کلاس، بیک اپ کی منزل، اور نیٹ ورکنگ پرت میں کیا تبدیلیاں آتی ہیں۔ یہ مستقل مزاجی آپریٹر پر مبنی نقطہ نظر کی قدر ہے: آپ کی ٹیم ایک ٹول، ایک آپریشنل ماڈل، اور رن بکس کا ایک سیٹ سیکھتی ہے جو ہر جگہ کام کرتی ہے۔

تین رکنی ریپلیکا سیٹ کے ساتھ شروع کریں،w: majorityلکھتا ہے، مسلسل اوپلاگ آرکائیونگ کے ساتھ روزانہ PBM بیک اپ، اور ریپلیکیشن وقفہ، کنکشن سنترپتی، اور کیش پریشر کے لیے بنیادی Prometheus الرٹس۔ پہلے دن اپنے فیل اوور کی جانچ کریں - اپنے پہلے واقعے کے دوران نہیں۔ شارڈنگ، زون پر مبنی ڈیٹا لوکلٹی، اور ملٹی ریجن کی تعیناتیوں تک پھیلائیں کیونکہ آپ کے ڈیٹا کا حجم اور دستیابی کے تقاضے بڑھتے ہیں۔ بنیادی ڈھانچہ میکانکس کو سنبھالتا ہے؛ آپ کی ذمہ داری یہ ہے کہ آپ فن تعمیر کو اتنی گہرائی سے سمجھیں کہ آپ کے کام کے بوجھ کے لیے صحیح تجارت کی جائے اور ان مفروضوں کو مسلسل جانچیں۔