กลุ่มความพร้อมใช้งานสามารถให้การเข้าแทนที่ที่ราบรื่น (โดยไม่มีความล้มเหลวในการค้นหา)?


9

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

มีวิธีใดที่จะทำให้สิ่งนี้ลดลงเป็น 0 วินาทีและป้องกันไม่ให้แบบสอบถามล้มเหลวในระหว่างการเปลี่ยนสถานะการเฟลโอเวอร์?

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

ปัจจุบันฉันมีเซิร์ฟเวอร์ 2 ตัวที่ตั้งค่าไว้ในกลุ่มความพร้อมใช้งาน


1
ตรวจสอบคำถามนี้ (และคำตอบ): dba.stackexchange.com/questions/25124/…
Max Vernon

Oracle RAC เท่านั้นที่สามารถทำได้
Richard Brown

หรือคุณควรใช้ linux loadballancer ในการตั้งค่าที่เหมาะสมหน้าเซิร์ฟเวอร์ sql เช่น HAproxy
kakaz

คำตอบ:


9

ไม่ไม่มีวิธีที่จะทำการล้มเหลวแบบ zero-downtime กับ AlwaysOn (หรือใน SQL Server โดยทั่วไปเท่าที่ฉันทราบ) ในการทำเช่นนั้น SQL Server ที่คุณเชื่อมต่อจะต้องทำการโอนสถานะไปยังโหนดกลางแบบสอบถามอื่นและเนื่องจากความล้มเหลวจำนวนมากไม่คาดคิดนั่นจึงเป็นไปไม่ได้

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


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

การอ่านกับอุปกรณ์รองจะเกิดขึ้นเฉพาะเมื่อคุณกำหนดค่าไคลเอ็นต์ให้เชื่อมต่อกับอุปกรณ์รอง
Max Vernon

1
ฉันเห็นแล้วว่าต้องมีแอปไคลเอนต์ที่ฉลาดกว่า
John

@JohnHughes: ตรวจสอบเอกสารนี้ไมโครซอฟท์ (ตรงกลางของหน้า 5): tinyurl.com/9dtvndvและโพสต์บล็อกนี้: tinyurl.com/8cyr9za คุณไม่จำเป็นต้องมีแอพที่ชาญฉลาดขึ้น - เมื่อคุณเปิดใช้งานคุณสมบัติคุณสามารถระบุว่าแอปพลิเคชันใด ๆ สามารถเชื่อมต่อกับรองที่อ่านได้ แต่การพยายามทำธุรกรรม DDL / DML จะล้มเหลว หากคุณกำลังใช้ไคลเอ็นต์เนทีฟที่ใหม่กว่าคุณสามารถระบุ "ReadIntent" ซึ่งหมายความว่าไคลเอนต์ที่ใหม่กว่าจะอ่านจากลูกค้ารายที่สองของคุณในขณะที่ลูกค้าเก่าจะทำธุรกรรมทั้งหมดกับธุรกิจหลักของคุณต่อไป ตัวเลือก แต่จำเป็นต้องอ่านบางส่วน
SqlRyan

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