MongoDB - การจำลองแบบ

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

ทำไมต้องจำลองแบบ?

  • เพื่อให้ข้อมูลของคุณปลอดภัย
  • ความพร้อมใช้งานของข้อมูลสูง (24 * 7)
  • การกู้คืนระบบ
  • ไม่มีการหยุดทำงานสำหรับการบำรุงรักษา (เช่นการสำรองข้อมูลการสร้างดัชนีการบดอัด)
  • อ่านมาตราส่วน (สำเนาเพิ่มเติมเพื่ออ่าน)
  • ชุดจำลองมีความโปร่งใสต่อแอปพลิเคชัน

การจำลองแบบทำงานอย่างไรใน MongoDB

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

  • ชุดการจำลองคือกลุ่มของโหนดตั้งแต่สองโหนดขึ้นไป (โดยทั่วไปต้องมีโหนดอย่างน้อย 3 โหนด)

  • ในชุดการจำลองโหนดหนึ่งเป็นโหนดหลักและโหนดที่เหลือเป็นโหนดรอง

  • ข้อมูลทั้งหมดจำลองจากโหนดหลักไปยังโหนดรอง

  • ในช่วงเวลาของการเฟลโอเวอร์หรือการบำรุงรักษาโดยอัตโนมัติการเลือกตั้งจะสร้างขึ้นสำหรับโหนดหลักและมีการเลือกโหนดหลักใหม่

  • หลังจากการกู้คืนโหนดที่ล้มเหลวโหนดนั้นจะเข้าร่วมชุดการจำลองอีกครั้งและทำงานเป็นโหนดรอง

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

คุณสมบัติชุดจำลอง

  • คลัสเตอร์ของโหนด N
  • โหนดใดโหนดหนึ่งสามารถเป็นโหนดหลักได้
  • การดำเนินการเขียนทั้งหมดไปที่ขั้นต้น
  • เฟลโอเวอร์อัตโนมัติ
  • การกู้คืนอัตโนมัติ
  • ฉันทามติการเลือกตั้งขั้นต้น

ตั้งค่าชุดการจำลอง

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

  • ปิดเครื่องแล้วรันเซิร์ฟเวอร์ MongoDB

  • เริ่มเซิร์ฟเวอร์ MongoDB โดยระบุ - replSet option ต่อไปนี้เป็นไวยากรณ์พื้นฐานของ --replSet -

mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"

ตัวอย่าง

mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0
  • มันจะเริ่มต้นอินสแตนซ์ mongod ด้วยชื่อ rs0 บนพอร์ต 27017

  • ตอนนี้เริ่มพรอมต์คำสั่งและเชื่อมต่อกับอินสแตนซ์ mongod นี้

  • ในไคลเอนต์ Mongo ให้ออกคำสั่ง rs.initiate() เพื่อเริ่มชุดการจำลองใหม่

  • ในการตรวจสอบการกำหนดค่าชุดข้อมูลจำลองให้ออกคำสั่ง rs.conf(). ในการตรวจสอบสถานะของชุดข้อมูลจำลองให้ออกคำสั่งrs.status().

เพิ่มสมาชิกใน Replica Set

ในการเพิ่มสมาชิกในชุดการจำลองให้เริ่มอินสแตนซ์ mongod บนเครื่องหลายเครื่อง ตอนนี้เริ่มต้นไคลเอนต์ mongo และออกคำสั่งrs.add().

ไวยากรณ์

ไวยากรณ์พื้นฐานของ rs.add() คำสั่งมีดังนี้ -

>rs.add(HOST_NAME:PORT)

ตัวอย่าง

สมมติว่าชื่ออินสแตนซ์ mongod ของคุณคือ mongod1.net และกำลังทำงานบนพอร์ต 27017. หากต้องการเพิ่มอินสแตนซ์นี้ในชุดข้อมูลจำลองให้ออกคำสั่งrs.add() ในลูกค้า Mongo

>rs.add("mongod1.net:27017")
>

คุณสามารถเพิ่มอินสแตนซ์ mongod ในการจำลองชุดเฉพาะเมื่อคุณเชื่อมต่อกับโหนดหลัก หากต้องการตรวจสอบว่าคุณเชื่อมต่อกับอุปกรณ์หลักหรือไม่ให้ออกคำสั่งdb.isMaster() ในลูกค้า mongo