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

⚡ สรุปอย่างชาญฉลาด

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

  • 🗄️ แนวคิดหลัก: การจำลองข้อมูลจะคัดลอกข้อมูลเดียวกันไปยังเซิร์ฟเวอร์หลายเครื่อง เพื่อให้ข้อมูลยังคงใช้งานได้แม้ว่าเซิร์ฟเวอร์หลักจะล้มเหลวก็ตาม
  • ???? ระดับประถมศึกษาและมัธยมศึกษา: ชุดจำลอง (replica set) ประกอบด้วยสมาชิกหลักหนึ่งตัวที่รับการเขียน และสมาชิกสำรองที่ทำหน้าที่อ่านข้อมูล
  • 🚀 การสร้างชุด: คำสั่ง rs.initiate() จะเริ่มต้นชุดจำลอง (replica set) หลังจากที่อินสแตนซ์ mongod ตัวแรกถูกเรียกใช้งานด้วยตัวเลือก replSet
  • การเพิ่มสมาชิก: คำสั่ง rs.add() ใช้สำหรับเพิ่มเซิร์ฟเวอร์รอง ในขณะที่คำสั่ง rs.remove() ใช้สำหรับถอดสมาชิกออกจากโครงสร้างการกำหนดค่า
  • 🔧 การแก้ไขปัญหา: คำสั่ง rs.status() และ rs.printReplicationInfo() จะแสดงสถานะการทำงานของระบบ (heartbeat health) และขนาดของ Oplog เพื่อใช้ในการวินิจฉัย

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

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

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

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

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

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

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

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

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

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

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

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

ตรวจสอบให้แน่ใจว่าอินสแตนซ์ของ 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 ตัวเลือกนี้จะให้กลุ่มข้อมูลping สำหรับเซิร์ฟเวอร์ทั้งหมดที่จะเป็นส่วนหนึ่งของชุดจำลองนี้

mongo --replSet "Replica1"

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

ขั้นตอนที่ 4) เพิ่มเซิร์ฟเวอร์เครื่องแรกเข้าไปในชุดจำลอง

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

ขั้นตอนที่ 5) ตรวจสอบชุดจำลอง (Replica Set)

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

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

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

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

ในการเพิ่ม ServerB และ ServerC ลงในชุดจำลอง ให้ใช้คำสั่งต่อไปนี้:

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

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

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

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

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

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

rs.remove("ServerC")

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

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

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

คำถามที่พบบ่อย

ใช่แล้ว ผู้ช่วย AI สามารถสร้างตัวเลือกการเริ่มต้น mongod, การกำหนดค่า rs.initiate() และคำสั่ง rs.add() สำหรับชุดจำลองได้ โปรดตรวจสอบชื่อโฮสต์ พอร์ต และลำดับความสำคัญของสมาชิกก่อนนำการกำหนดค่าไปใช้กับเซิร์ฟเวอร์ที่ใช้งานจริงเสมอ

ใช่แล้ว เครื่องมือตรวจสอบที่ขับเคลื่อนด้วย AI สามารถอ่านค่า rs.status() และเมตริก Oplog เพื่อระบุเซิร์ฟเวอร์รองที่ทำงานช้ากว่าเซิร์ฟเวอร์หลักได้ โดยอาจแนะนำสาเหตุต่างๆ เช่น ความล่าช้าของเครือข่ายหรือดิสก์ทำงานช้า แต่ควรให้วิศวกรตรวจสอบก่อนดำเนินการใดๆ

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

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

สรุปโพสต์นี้ด้วย: