MongoDB การจำลองแบบ: วิธีการสร้าง MongoDB ชุดแบบจำลอง

ความหมายของ MongoDB การจำลองแบบ?

การจำลองแบบหมายถึงกระบวนการเพื่อให้แน่ใจว่ามีข้อมูลเดียวกันอยู่บนเซิร์ฟเวอร์ Mongo DB มากกว่าหนึ่งเครื่อง บางครั้งสิ่งนี้จำเป็นเพื่อวัตถุประสงค์ในการเพิ่มความพร้อมของข้อมูล

เพราะถ้าหลักของคุณ MongoDB เซิร์ฟเวอร์ล่มไม่ว่าด้วยเหตุผลใดก็ตาม จะไม่มีการเข้าถึงข้อมูล แต่หากคุณมีข้อมูลที่ถูกจำลองไปยังเซิร์ฟเวอร์อื่นในช่วงเวลาปกติ คุณจะสามารถเข้าถึงข้อมูลจากเซิร์ฟเวอร์อื่นได้ แม้ว่าเซิร์ฟเวอร์หลักจะล้มเหลวก็ตาม

วัตถุประสงค์อีกประการหนึ่งของการจำลองแบบคือความเป็นไปได้ของการทำโหลดบาลานซ์ หากมีผู้ใช้จำนวนมากเชื่อมต่อกับระบบ แทนที่จะให้ทุกคนเชื่อมต่อกับระบบเดียว ผู้ใช้สามารถเชื่อมต่อกับเซิร์ฟเวอร์หลายเครื่องเพื่อให้มีการกระจายโหลดที่เท่าเทียมกัน

In MongoDBหลายรายการ MongoDB เซิร์ฟเวอร์จะถูกจัดกลุ่มเป็นชุดที่เรียกว่าชุดจำลอง ชุดจำลองจะมีเซิร์ฟเวอร์หลักซึ่งจะยอมรับการดำเนินการเขียนทั้งหมดจากไคลเอนต์ อินสแตนซ์อื่นๆ ทั้งหมดที่เพิ่มเข้าไปในชุดหลังจากนี้จะเรียกว่าอินสแตนซ์รองซึ่งสามารถใช้เป็นหลักสำหรับการดำเนินการอ่านทั้งหมด

วิธีสร้างชุดจำลองใน MongoDB การเพิ่มสมาชิกคนแรกโดยใช้ rs.initiate()

ตามที่กล่าวไว้ในส่วนก่อนหน้า เพื่อเปิดใช้งานการจำลองแบบ ก่อนอื่นเราต้องสร้างชุดแบบจำลองของ MongoDB ตัวอย่าง.

สมมติว่าตัวอย่างของเรา เรามีเซิร์ฟเวอร์ 3 เครื่องที่เรียกว่า ServerA, ServerB และ ServerC ในการกำหนดค่านี้ ServerA จะเป็นเซิร์ฟเวอร์หลักของเรา ส่วน ServerB และ ServerC จะเป็นเซิร์ฟเวอร์รองของเรา ภาพหน้าจอด้านล่างจะให้แนวคิดที่ดีกว่า

สร้างชุดจำลองใน MongoDB

ด้านล่างนี้เป็นขั้นตอนที่ต้องปฏิบัติตามเพื่อสร้าง MongoDB ชุดจำลองพร้อมกับการเพิ่มสมาชิกคนแรกในชุด

ขั้นตอน 1) ตรวจสอบให้แน่ใจว่าเพิ่มอินสแตนซ์ mongod.exe ทั้งหมดแล้ว

ตรวจสอบให้แน่ใจว่าอินสแตนซ์ mongod.exe ทั้งหมดที่จะถูกเพิ่มเข้ากับชุดเรพลิกาได้รับการติดตั้งบนเซิร์ฟเวอร์ที่แตกต่างกัน นี่คือเพื่อให้แน่ใจว่าแม้ว่าเซิร์ฟเวอร์ตัวหนึ่งล่ม เซิร์ฟเวอร์อื่นๆ จะยังใช้งานได้และด้วยเหตุนี้จึงเป็นอินสแตนซ์อื่นๆ ของ MongoDB จะสามารถใช้ได้

ขั้นตอน 2) อินสแตนซ์ mongo.exe ทั้งหมดเชื่อมต่อถึงกัน

ตรวจสอบให้แน่ใจว่าอินสแตนซ์ mongo.exe ทั้งหมดสามารถเชื่อมต่อถึงกันได้ จาก ServerA ให้ออกคำสั่ง 2 คำสั่งด้านล่าง

mongo –host ServerB –port 27017
mongo –host ServerC –port 27017

ในทำนองเดียวกัน ให้ทำสิ่งเดียวกันจากเซิร์ฟเวอร์ที่เหลือ

ขั้นตอน 3) เริ่มอินสแตนซ์ mongod.exe แรก

เริ่มต้นอินสแตนซ์ mongod.exe แรกด้วยตัวเลือก replSet ตัวเลือกนี้จัดให้มีการจัดกลุ่มสำหรับเซิร์ฟเวอร์ทั้งหมดซึ่งจะเป็นส่วนหนึ่งของชุดแบบจำลองนี้

mongo –replSet "Replica1"

โดยที่ “Replica1” คือชื่อของชุดการจำลองของคุณ คุณสามารถเลือกชื่อที่มีความหมายสำหรับชื่อชุดแบบจำลองของคุณได้

ขั้นตอน 4) เซิร์ฟเวอร์แรกถูกเพิ่มเข้ากับชุดเรพลิกา

ตอนนี้เมื่อเพิ่มเซิร์ฟเวอร์ตัวแรกลงในชุดจำลองแล้ว ขั้นตอนถัดไปคือการเริ่มต้นชุดจำลองโดยออกคำสั่งต่อไปนี้ rs.initiate ()

ขั้นตอน 5) ตรวจสอบชุดแบบจำลอง

ตรวจสอบชุดเรพลิกาโดยออกคำสั่ง rs.conf() เพื่อให้แน่ใจว่าเรพลิกาตั้งค่าอย่างถูกต้อง

ชุดแบบจำลอง: การเพิ่มรองโดยใช้ rs.add()

คุณสามารถเพิ่มเซิร์ฟเวอร์รองเข้ากับชุดเรพลิกาได้โดยใช้คำสั่ง rs.add คำสั่งนี้ใช้ชื่อของเซิร์ฟเวอร์สำรอง และเพิ่มเซิร์ฟเวอร์เข้ากับชุดการจำลองแบบ

ขั้นตอน 1) สมมติว่าคุณมี ServerA, ServerB และ ServerC ซึ่งจำเป็นต้องเป็นส่วนหนึ่งของชุดเรพลิกาของคุณและ ServerA ถูกกำหนดให้เป็นเซิร์ฟเวอร์หลักในชุดเรพลิกา

หากต้องการเพิ่ม ServerB และ ServerC ให้กับชุดเรพลิกาให้ออกคำสั่ง

rs.add("ServerB")
rs.add("ServerC")

ชุดแบบจำลอง: การกำหนดค่าใหม่หรือการลบออกโดยใช้ rs.remove()

หากต้องการลบเซิร์ฟเวอร์ออกจากชุดการกำหนดค่า เราจำเป็นต้องใช้คำสั่ง “rs.remove”

ขั้นตอน 1) ขั้นแรกให้ปิดระบบอินสแตนซ์ที่คุณต้องการลบออก เราสามารถทำได้โดยการออกคำสั่ง db.shutdownserver จาก mongo shell

ขั้นตอน 2) เชื่อมต่อกับเซิร์ฟเวอร์หลัก

ขั้นตอน 3) ใช้คำสั่ง rs.remove เพื่อลบเซิร์ฟเวอร์ที่จำเป็นออกจากชุดเรพลิกา ดังนั้น สมมติว่าถ้าคุณมีชุดเรพลิกาที่มี ServerA, ServerB และ ServerC และคุณต้องการลบ ServerC ออกจากชุดเรพลิกา ให้ออกคำสั่ง

rs.remove("ServerC")

การแก้ไขปัญหาชุดแบบจำลอง

ขั้นตอนต่อไปนี้เป็นวิธีเดียวกันกับที่ใช้ในการแก้ไขปัญหาเมื่อพบปัญหาในการใช้งานชุดจำลอง

  1. ตรวจสอบให้แน่ใจว่าอินสแตนซ์ mongo.exe ทั้งหมดสามารถเชื่อมต่อถึงกันได้ สมมติว่าคุณมีเซิร์ฟเวอร์ 3 เครื่องที่เรียกว่า ServerA, ServerB และ ServerC จากเซิร์ฟเวอร์ A ให้ออกคำสั่ง 2 คำสั่งด้านล่าง
mongo –host ServerB –port 27017
mongo –host ServerC –port 27017
  1. รันคำสั่ง rs.status คำสั่งนี้ให้สถานะของชุดเรพลิกา ตามค่าเริ่มต้น สมาชิกแต่ละคนจะส่งข้อความหากันที่เรียกว่าข้อความ “ฮาร์ทบีท” ซึ่งเพียงบ่งชี้ว่าเซิร์ฟเวอร์ยังมีชีวิตอยู่และทำงานอยู่ คำสั่ง "สถานะ" จะรับสถานะของข้อความเหล่านี้และแสดงว่ามีปัญหาใดๆ กับสมาชิกใดๆ ในชุดเรพลิกาหรือไม่
  2. ตรวจสอบขนาดของ Oplog – The Oplog เป็นคอลเลกชันใน MongoDB ที่เก็บประวัติการเขียนที่ทำกับ MongoDB ฐานข้อมูล MongoDB จากนั้นใช้ Oplog นี้เพื่อจำลองการเขียนไปยังสมาชิกอื่นๆ ในชุดแบบจำลอง หากต้องการตรวจสอบ Oplog ให้เชื่อมต่อกับอินสแตนซ์สมาชิกที่ต้องการและรันคำสั่ง rs.printReplicationInfo คำสั่งนี้จะแสดงขนาดของบันทึกและระยะเวลาที่สามารถเก็บธุรกรรมในไฟล์บันทึกก่อนที่จะเต็ม

สรุป

การจำลองแบบใน MongoDB อ้างถึงกระบวนการรับรองว่ามีข้อมูลเดียวกันอยู่บน Mongo DB Server มากกว่าหนึ่งเครื่อง สมาชิกจำนวนมาก (MongoDB อินสแตนซ์) สามารถเพิ่มลงในชุดแบบจำลองได้ ขึ้นอยู่กับข้อกำหนด