ค้นหาเว็บไซต์

การกำหนดค่ากลุ่มความพร้อมใช้งานสูงตลอดเวลาบน SQL Server


ในบทความนี้ เราจะแนะนำคุณเกี่ยวกับคำแนะนำทีละขั้นตอนเกี่ยวกับวิธีการติดตั้งและกำหนดค่ากลุ่มความพร้อมใช้งาน เปิดตลอดเวลา บน SQL Server ที่ทำงานบน Windows Server 2019 หารือเกี่ยวกับสถานการณ์จำลองเมื่อเกิดข้อผิดพลาด และอื่นๆ หัวข้อที่เกี่ยวข้อง.

Always On Availability Groups ให้ความพร้อมใช้งานสูงใน MIcrosoft SQL Server เปิดตลอดเวลาปรากฏในรุ่น MSSQL 2012

คุณลักษณะของกลุ่มความพร้อมใช้งานตลอดเวลาใน SQL Server

คุณสามารถใช้กลุ่มความพร้อมใช้งานของ SQL Server ทำอะไรได้บ้าง

  • ความพร้อมใช้งานสูงของ MS SQL และการเฟลโอเวอร์อัตโนมัติ

  • โหลดบาลานซ์ของแบบสอบถาม SELECT ระหว่างโหนด (แบบจำลองรองสามารถอ่านได้);

  • การสำรองข้อมูลจากแบบจำลองสำรอง

  • ความซ้ำซ้อนของข้อมูล แต่ละแบบจำลองจะเก็บสำเนาของฐานข้อมูลกลุ่มความพร้อมใช้งาน

เปิดตลอดเวลาขึ้นอยู่กับ Windows Server Failover Cluster (WSFC) WSFC ตรวจสอบโหนดกลุ่มความพร้อมใช้งานและจัดเตรียมการเฟลโอเวอร์โดยอัตโนมัติ ตั้งแต่ MS SQL Server 2017 เป็นต้นมา สามารถใช้ Always On ได้ ไม่มี WSFC และในโฮสต์ Linux ด้วยเช่นกัน เมื่อสร้างคลัสเตอร์บน Linux คุณสามารถใช้ Pacemaker แทน WSFC

เปิดตลอดเวลามีให้บริการในรุ่น มาตรฐาน แต่มีข้อจำกัดบางประการ:

  • มันถูกจำกัดไว้ที่ 2 แบบจำลอง (หลักและรอง);

  • ไม่สามารถใช้แบบจำลองรองเพื่ออ่านข้อมูลได้

  • ไม่สามารถใช้แบบจำลองรองในการสำรองข้อมูล MS SQL;

  • สนับสนุนเพียง 1 ฐานข้อมูลต่อกลุ่มความพร้อมใช้งาน

ไม่มีข้อจำกัดในรุ่น Enterprise
เรามาพิจารณาข้อกำหนดกัน

  • Always On Availability Group คือชุดของแบบจำลองและฐานข้อมูล

  • Replica คืออินสแตนซ์ SQL Server ในกลุ่มความพร้อมใช้งาน แบบจำลองอาจเป็นแบบหลักหรือรองก็ได้ แบบจำลองแต่ละอันอาจมีหนึ่งฐานข้อมูลขึ้นไป

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

หากแบบจำลองหลักล้มเหลว คลัสเตอร์จะลงคะแนนสำหรับแบบจำลองหลักใหม่ และเปิดตลอดเวลาจะทำให้แบบจำลองสำรองตัวใดตัวหนึ่งเป็นแบบจำลองหลัก เนื่องจากผู้ใช้เชื่อมต่อกับ Listener (ที่อยู่ IP ของคลัสเตอร์พิเศษและชื่อ DNS ที่สอดคล้องกัน) เมื่อทำงานกับ Always On จึงจะสามารถเรียกใช้การเขียนข้อความค้นหาได้อีกครั้ง Listener ยังรับผิดชอบในการสร้างสมดุลให้กับแบบสอบถาม SELECT ระหว่างแบบจำลองรอง

กำหนดค่า Windows Failover Cluster สำหรับ Always On Availability Group

ก่อนอื่น เราต้องกำหนดค่าคลัสเตอร์เฟลโอเวอร์บนโหนดทั้งหมดที่ใช้โดย Always On

นี่คือการกำหนดค่าของฉัน:

  • 2 เครื่องเสมือนที่ใช้ Windows Server 2019

  • 2 อินสแตนซ์ SQL Server 2019 Enterprise

  • ชื่อโฮสต์ของโหนดคือ testnode1 และ testnode2 ชื่ออินสแตนซ์ของ SQL Server คือ node1 และ node2

เพิ่มบทบาท Failover Clustering โดยใช้ Server Manager หรือติดตั้งผ่าน PowerShell:

Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools

การติดตั้งเป็นแบบอัตโนมัติ และคุณไม่จำเป็นต้องกำหนดค่าใดๆ เรียกใช้สแนปอิน Failover Cluster Manager (

FailoverClusters.SnapInHelper.msc

) และสร้างคลัสเตอร์ใหม่

เพิ่มชื่อโฮสต์ที่คุณต้องการเข้าร่วมในคลัสเตอร์ของคุณ

จากนั้นวิซาร์ดเสนอให้ทำการทดสอบ โดยเลือกรายการแรก

ระบุชื่อคลัสเตอร์ เลือกเครือข่าย และที่อยู่ IP ของคลัสเตอร์ ชื่อคลัสเตอร์จะปรากฏใน DNS โดยอัตโนมัติ คุณไม่จำเป็นต้องสร้างระเบียน DNS ด้วยตนเอง ในกรณีของฉัน ชื่อคลัสเตอร์คือ ClusterAG

ยกเลิกการเลือกตัวเลือก เพิ่มที่เก็บข้อมูลที่มีสิทธิ์ทั้งหมดไปยังคลัสเตอร์ เนื่องจากเราสามารถเพิ่มดิสก์ได้ในภายหลัง

มีเพียงสองโหนดในคลัสเตอร์ ดังนั้นคุณต้องกำหนดค่า โควรัมคลัสเตอร์ องค์ประชุมคลัสเตอร์เป็นผู้ลงคะแนนชี้ขาด ตัวอย่างเช่น ถ้าหนึ่งในโหนดคลัสเตอร์ไม่พร้อมใช้งาน คลัสเตอร์นั้นต้องตรวจหาว่าโหนดใดออนไลน์จริง ๆ และมองเห็นกันได้ โควรัมคลัสเตอร์ให้ความสอดคล้องของคลัสเตอร์ (คลัสเตอร์ -> การดำเนินการเพิ่มเติม -> กำหนดค่าการตั้งค่าโควรัมคลัสเตอร์)

เลือกตัวเลือกพยานองค์ประชุม

จากนั้นเลือกประเภทพยาน: พยานแชร์ไฟล์

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

เมื่อคุณกำหนดค่าคลัสเตอร์ คุณอาจเห็นข้อผิดพลาดต่อไปนี้:

There was an error configuring the file share witness. Unable to save property changes for File Share Witness. The system cannot find the file specified.

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

การกำหนดค่า Windows Failover Cluster พื้นฐานสิ้นสุดลงแล้ว

การกำหนดค่า Always On Availability Group บน MS SQL Server

หลังจากการติดตั้งอินสแตนซ์ SQL Server ทั่วไป คุณสามารถเปิดใช้งานและกำหนดค่า Always On Availability Groups เปิดใช้งานในคุณสมบัติของอินสแตนซ์ของ SQL Server Configuration Manager ดังที่คุณเห็นในภาพหน้าจอ SQL Server ตรวจพบว่าเป็นของคลัสเตอร์ WSFC ทำเครื่องหมายที่ เปิดใช้งานกลุ่มความพร้อมใช้งานเสมอ และเริ่มบริการอินสแตนซ์ MSSQL ใหม่ ทำเช่นเดียวกันกับตัวอย่างที่สอง

เคล็ดลับ ก่อนกำหนดค่า Always On ตรวจสอบให้แน่ใจว่าบริการ SQL Server ไม่ได้ทำงานภายใต้บัญชีระบบภายในเครื่อง ขอแนะนำให้ใช้บัญชีบริการที่จัดการโดยกลุ่มหรือบัญชีโดเมนปกติ มิฉะนั้น คุณจะไม่สามารถดำเนินการกำหนดค่าแบบเปิดตลอดเวลาได้

เรียกใช้ SQL Server Management Studio เชื่อมต่อกับโฮสต์ของคุณ คลิก Always On High Availability และเรียกใช้ New Availability Group Wizard

ใน SQL Server Management Studio 18.x สำหรับ SQL Server 2017 และ SQL Server 2019 บางการตั้งค่า Always On ปรากฏว่ามีให้ใช้งานใน T-SQL เท่านั้น ดังนั้นขอแนะนำให้ใช้ SSMS เวอร์ชันล่าสุด

ระบุชื่อสำหรับกลุ่มความพร้อมใช้งานตลอดเวลา และเลือก การตรวจหาความสมบูรณ์ของระดับฐานข้อมูล เมื่อใช้ตัวเลือกนี้ Always On จะสามารถตรวจจับได้เมื่อฐานข้อมูลไม่แข็งแรง

เลือกฐานข้อมูล SQL Server เพื่อเพิ่มลงในกลุ่มความพร้อมใช้งานตลอดเวลาของคุณ

คลิก เพิ่มแบบจำลอง และเชื่อมต่อเซิร์ฟเวอร์ SQL ที่สอง ดังนั้นคุณสามารถเพิ่มได้สูงสุด 8 เซิร์ฟเวอร์

  • บทบาทเริ่มต้น คือบทบาทจำลองตามเวลาที่สร้างกลุ่ม สามารถเป็นได้ทั้งระดับประถมศึกษาหรือมัธยมศึกษา

  • การย้ายเมื่อเกิดข้อผิดพลาดอัตโนมัติ - หากฐานข้อมูลไม่พร้อมใช้งาน เปิดตลอดเวลา จะย้ายบทบาทหลักไปยังแบบจำลองอื่น ตรวจสอบรายการนี้

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

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

    ApplicationIntent=readonly
  • ตัวจำลองรองที่ซิงโครไนซ์ที่จำเป็นในการคอมมิต คือจำนวนตัวจำลองรองที่ซิงโครไนซ์เพื่อทำธุรกรรมให้เสร็จสิ้น ตั้งค่าตามจำนวนของแบบจำลอง ฉันจะตั้งค่าเป็น 1

อย่าแก้ไขสิ่งใดในแท็บ จุดสิ้นสุด

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

ระบุชื่อ พอร์ต และที่อยู่ IP ของฟังกลุ่มความพร้อมใช้งาน

ปล่อยให้การตั้งค่า การกำหนดเส้นทางแบบอ่านอย่างเดียว ไม่เปลี่ยนแปลง

เลือกประเภทการซิงโครไนซ์แบบจำลอง ฉันปล่อยให้รายการแรก (การเพาะอัตโนมัติ) ทำเครื่องหมายไว้

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

ในกรณีของฉัน การทดสอบทั้งหมดประสบความสำเร็จ แต่ในขั้นตอนผลลัพธ์หลังการติดตั้ง วิซาร์ดแสดงข้อผิดพลาดของการสร้างตัวฟังกลุ่มความพร้อมใช้งาน ข้อผิดพลาด EVENTID 1194 ปรากฏในบันทึกเหตุการณ์ของคลัสเตอร์:

Cluster network name resource failed to create its associated computer object in the domain.

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

เมื่อวินิจฉัยปัญหาประสิทธิภาพ SQL แบบเปิดตลอดเวลาและต่ำในกลุ่มความพร้อมใช้งาน คุณควรศึกษาบันทึกคลัสเตอร์ของ Windows อย่างละเอียดนอกเหนือจากการใช้เครื่องมือวินิจฉัย SQL Server มาตรฐาน

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

ระบุที่อยู่ IP พอร์ต และชื่อ DNS ของผู้ฟัง

ตรวจสอบให้แน่ใจว่า Listener ปรากฏในส่วน Availability Group Listeners ของกลุ่ม Always On

ดังนั้น คุณได้เสร็จสิ้นการกำหนดค่าพื้นฐานของกลุ่มความพร้อมใช้งานตลอดเวลา

SQL Server เปิดตลอดเวลา: การตรวจสอบความสามารถในการทำงาน & ความล้มเหลว

มาดูแดชบอร์ดของกลุ่มความพร้อมใช้งาน (แสดงแดชบอร์ด)

ไม่เป็นไร กลุ่มถูกสร้างขึ้นและกำลังทำงานอยู่

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

สังเกตค่าใน ความพร้อมในการย้ายเมื่อเกิดข้อผิดพลาด ข้อมูลไม่สูญหาย หมายความว่าข้อมูลจะไม่สูญหาย

เชื่อมต่อกับโหนด 2

คลิกเสร็จสิ้น

ตรวจสอบให้แน่ใจว่า node2 กลายเป็นแบบจำลองหลัก (อินสแตนซ์หลัก) ในกลุ่มความพร้อมใช้งาน

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

ag1-listener-1,1445

เรียกใช้การแทรกอย่างง่าย เลือก และอัปเดตการสืบค้น SQL ไปยังฐานข้อมูลของคุณ

จากนั้นตรวจสอบการแทนที่อัตโนมัติของแบบจำลองหลัก เพียงแค่ฆ่ากระบวนการ sqlservr.exe บน TESTNODE2

ตรวจสอบสถานะกลุ่มความพร้อมใช้งานบนโหนดที่เหลือ: TESTNODE1\NODE1

คลัสเตอร์ได้เปลี่ยนโหนดทดสอบ 1 โดยอัตโนมัติ สถานะ ode1 เป็นสถานะหลักตั้งแต่ testnode2 ode2 ไม่พร้อมใช้งาน

ตรวจสอบสถานะการฟังเนื่องจากไคลเอนต์จะใช้ในการเชื่อมต่อ

ในกรณีของฉัน ฉันเชื่อมต่อกับผู้ฟังได้สำเร็จ แต่เมื่อพยายามเข้าถึงฐานข้อมูล ฉันได้รับข้อผิดพลาดนี้:

Unable to access database 'TestDatabase' because it lacks a quorum of nodes for high availability. Try the operation again later.

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

ตั้งค่าเป็น 0 แล้วลองเรียกใช้การค้นหาอีกครั้ง

Testnode1 คงสถานะอินสแตนซ์หลักไว้ ในขณะที่ testnode2 กลายเป็นสถานะรอง ข้อมูลที่เราเปลี่ยนแปลงใน testnode1 เมื่อปิด testnode2 ถูกซิงโครไนซ์สำเร็จหลังจากเปิดคอมพิวเตอร์

ดังนั้นเราจึงตรวจสอบให้แน่ใจว่าทุกอย่างทำงานอย่างถูกต้อง และข้อมูลจะพร้อมสำหรับการอ่าน/เขียนในกรณีที่เกิดความล้มเหลวขั้นวิกฤต

คุณสามารถกำหนดค่ากลุ่มความพร้อมใช้งานตลอดเวลาได้อย่างง่ายดาย หากคุณต้องการสร้างโซลูชันเฟลโอเวอร์ที่ใช้ SQL Server กลุ่มความพร้อมใช้งานจะจัดการได้ดี

บทความที่เกี่ยวข้อง