คลัสเตอร์ฐานข้อมูลและการทำโหลดบาลานซ์


149

การจัดกลุ่มฐานข้อมูลคืออะไร หากคุณอนุญาตให้ฐานข้อมูลเดียวกันอยู่บนเซิร์ฟเวอร์ 2 เครื่องจะเก็บข้อมูลไว้ระหว่างการซิงค์อย่างไร และสิ่งนี้แตกต่างจาก load balancing จากมุมมองเซิร์ฟเวอร์ฐานข้อมูลอย่างไร

คำตอบ:


132

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

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

  • การจำลองแบบหลักต้นแบบ (หรือหลายหลัก): เซิร์ฟเวอร์ใด ๆ สามารถปรับปรุงฐานข้อมูล โดยปกติจะได้รับการดูแลโดยโมดูลที่แตกต่างกันภายในฐานข้อมูล (หรือซอฟต์แวร์ที่ต่างกันทั้งหมดที่ทำงานอยู่ด้านบนของพวกเขาในบางกรณี)

    ข้อเสียคือมันทำได้ยากมากและบางระบบสูญเสียคุณสมบัติ ACID เมื่ออยู่ในโหมดการจำลองแบบนี้

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

  • การเรพลิเคท master-slave: มีเพียงข้อมูลสำเนาที่เชื่อถือได้เพียงสำเนาเดียวเท่านั้นซึ่งถูกพุชไปยังเซิร์ฟเวอร์ทาส

    ข้อเสียคือมันทนต่อความผิดพลาดน้อยกว่าหากนายเสียชีวิตไม่มีการเปลี่ยนแปลงในทาสอีกต่อไป

    อัพไซด์คือมันทำได้ง่ายกว่ามัลติมาสเตอร์และมันมักจะรักษาคุณสมบัติของกรด

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


1
อ่าลืมเกี่ยวกับการจำลองแบบ :) ใช่คุณสามารถบรรลุภาระการโหลดด้วยวิธีการรวมกันกับตรรกะระดับแอพลิเคชัน :) +1
จิมมี่จันทรา

1
Postgresql เอกสารอ้างอิงถึง "กลุ่มฐานข้อมูล" ที่แตกต่างกัน: "ก่อนที่คุณจะทำอะไรคุณต้องเริ่มต้นพื้นที่จัดเก็บฐานข้อมูลบนดิสก์เราเรียกสิ่งนี้ว่ากลุ่มฐานข้อมูล (SQL ใช้คลัสเตอร์คำศัพท์) คลัสเตอร์ฐานข้อมูลคือชุดของ ฐานข้อมูลที่จัดการโดยอินสแตนซ์เดียวของเซิร์ฟเวอร์ฐานข้อมูลที่ใช้งานอยู่ " postgresql.org/docs/8.3/static/creating-cluster.html
Donato

1
คุณสมบัติของกรดหมายถึงอะไรหรือว่าอะไรที่คุณหลวมถ้าคุณไม่เก็บรักษาไว้
TheStoryCoder

@ TheStoryCoder ในวิทยาการคอมพิวเตอร์, กรด (Atomicity, Consistency, Isolation, Durability) เป็นชุดของคุณสมบัติของการทำธุรกรรมฐานข้อมูลที่มีวัตถุประสงค์เพื่อรับประกันความถูกต้องแม้ในกรณีที่มีข้อผิดพลาดไฟฟ้าขัดข้อง ฯลฯ ในบริบทของฐานข้อมูลลำดับของฐานข้อมูล การดำเนินการที่เป็นไปตามคุณสมบัติ ACID (และสามารถรับรู้ว่าเป็นการดำเนินการทางตรรกะเดียวกับข้อมูล) เรียกว่าการทำธุรกรรม ตัวอย่างเช่นการโอนเงินจากบัญชีธนาคารหนึ่งไปยังอีกบัญชีหนึ่งแม้จะเกี่ยวข้องกับการเปลี่ยนแปลงหลายอย่างเช่นการเดบิตบัญชีหนึ่งและเครดิตอื่นเป็นธุรกรรมเดียว
fizampou

17

จากมุมมองของ SQL Server:

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

คุณสามารถมีคลัสเตอร์ที่ใช้งานอยู่ แต่จะต้องใช้อินสแตนซ์หลายตัวของ SQL Server ที่ทำงานบนแต่ละโหนด (เช่นอินสแตนซ์ 1 บนโหนด A ไม่ผ่านอินสแตนซ์ 2 บนโหนด B และอินสแตนซ์ 1 บนโหนด B ล้มเหลวไปจนถึงอินสแตนซ์ 2 บนโหนด A)

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


9

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

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


6

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

เท่าที่เกี่ยวข้องกับการซิงโครไนซ์ข้อมูลมีเซิร์ฟเวอร์การจัดการที่โหนดข้อมูลทั้งหมดเชื่อมต่อพร้อมกับโหนด SQL เพื่อให้บรรลุนี้ (พูดถึงเฉพาะเกี่ยวกับ MySQL)

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.