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