ในบทความนี้ เราจะแนะนำคุณทีละขั้นตอนเกี่ยวกับวิธีการติดตั้งและกำหนดค่า เปิดเสมอ กลุ่มความพร้อมใช้งานบน SQL Server ที่ทำงานบน Windows Server 2019 อภิปรายสถานการณ์ความล้มเหลว และหัวข้ออื่นๆ ที่เกี่ยวข้อง
เปิดกลุ่มความพร้อมใช้งานเสมอ ให้ความพร้อมใช้งานสูงใน Microsoft SQL Server Always On ปรากฏใน MSSQL รุ่นปี 2012
คุณสมบัติของ Always On Availability Groups ใน SQL Server
คุณสามารถใช้กลุ่มความพร้อมใช้งานของ SQL Server ทำอะไรได้บ้าง
- MS SQL ความพร้อมใช้งานสูงและเฟลโอเวอร์อัตโนมัติ
- การโหลดสมดุลของการสืบค้น SELECT ระหว่างโหนด (แบบจำลองสำรองอาจอ่านได้);
- สำรองข้อมูลจากแบบจำลองรอง
- ความซ้ำซ้อนของข้อมูล แบบจำลองแต่ละรายการจะเก็บสำเนาของฐานข้อมูลกลุ่มความพร้อมใช้งาน
Always On ขึ้นอยู่กับ Windows Server Failover Cluster (WSFC). WSFC ตรวจสอบโหนดกลุ่มความพร้อมใช้งานและจัดเตรียมการเฟลโอเวอร์อัตโนมัติ เริ่มตั้งแต่ MS SQL Server 2017 ใช้ Always On โดยไม่มี WSFC และใน Linux เจ้าภาพเช่นกัน เมื่อสร้างคลัสเตอร์บน Linux คุณสามารถใช้ Pacemaker แทน WSFC
Always On มีให้บริการใน มาตรฐาน รุ่น แต่มีข้อจำกัดบางประการ:
- จำกัดเพียง 2 แบบจำลอง (หลักและรอง);
- ไม่สามารถใช้แบบจำลองรองเพื่ออ่านข้อมูลได้
- ไม่สามารถใช้แบบจำลองสำรองในการสำรองข้อมูล MS SQL ได้
- รองรับเพียง 1 ฐานข้อมูลต่อกลุ่มความพร้อมใช้งาน
ไม่มีข้อจำกัดใน Enterprise ฉบับ
คุณสามารถอ่านเกี่ยวกับประเด็นการให้สิทธิ์ใช้งาน MS SQL Server ได้ที่นี่มาพิจารณาเงื่อนไขกัน
- กลุ่มความพร้อมใช้งานเสมอ เป็นชุดของแบบจำลองและฐานข้อมูล
- แบบจำลอง เป็นอินสแตนซ์ของ SQL Server ในกลุ่มความพร้อมใช้งาน แบบจำลองอาจเป็นหลักหรือรอง แต่ละแบบจำลองอาจมีฐานข้อมูลอย่างน้อยหนึ่งฐานข้อมูล
Always On อิงตาม WSFC แต่ละโหนดของกลุ่มความพร้อมใช้งานต้องเป็นสมาชิกของคลัสเตอร์ล้มเหลวของ Windows อินสแตนซ์ SQL Server แต่ละรายการสามารถมีกลุ่มความพร้อมใช้งานได้หลายกลุ่ม ความพร้อมใช้งานแต่ละกลุ่มอาจมีแบบจำลองรองสูงสุด 8 รายการ
หากแบบจำลองหลักล้มเหลว คลัสเตอร์จะลงคะแนนให้กับแบบจำลองหลักใหม่และเปิดตลอดเวลาจะทำให้แบบจำลองรองตัวใดตัวหนึ่งเป็นแบบจำลองหลัก เนื่องจากผู้ใช้เชื่อมต่อกับ ผู้ฟัง (ที่อยู่ IP ของคลัสเตอร์พิเศษและชื่อ DNS ที่เกี่ยวข้อง) เมื่อทำงานกับ Always On จะสามารถเรียกใช้คำสั่งเขียนอีกครั้งได้ Listener ยังรับผิดชอบในการปรับสมดุลการสืบค้น SELECT ระหว่างแบบจำลองรอง
กำหนดค่า Windows Failover Cluster สำหรับ Always On Availability Group
ก่อนอื่น เราต้องกำหนดค่าคลัสเตอร์เฟลโอเวอร์บนโหนดทั้งหมดที่ใช้โดย Always On
นี่คือการกำหนดค่าของฉัน:
- เครื่องเสมือน 2 เครื่องที่ใช้ Windows Server 2019
- อินสแตนซ์องค์กรของ SQL Server 2019 2 ตัว
- ชื่อโฮสต์ของโหนดคือ testnode1 และ testnode2 ชื่ออินสแตนซ์ของ SQL Server คือ node1 และ node2
เพิ่ม Failover Clustering บทบาทโดยใช้ Server Manager หรือติดตั้งผ่าน PowerShell:
Install-WindowsFeature –Name Failover-Clustering –IncludeManagementTools
การติดตั้งเป็นไปโดยอัตโนมัติ และคุณยังไม่ต้องกำหนดค่าอะไรเลย เรียกใช้ ตัวจัดการคลัสเตอร์ล้มเหลว สแนปอิน (FailoverClusters.SnapInHelper.msc
) และสร้างคลัสเตอร์ใหม่
เพิ่มชื่อโฮสต์ที่คุณต้องการเข้าร่วมคลัสเตอร์ของคุณ
จากนั้นวิซาร์ดเสนอให้ทำการทดสอบ โดยเลือกข้อแรก
ระบุชื่อคลัสเตอร์ เลือกเครือข่าย และที่อยู่ IP ของคลัสเตอร์ ชื่อคลัสเตอร์จะปรากฏใน DNS โดยอัตโนมัติ คุณไม่จำเป็นต้องสร้างระเบียน DNS ด้วยตนเอง ในกรณีของฉัน ชื่อคลัสเตอร์คือ ClusterAG .
ยกเลิกการเลือกตัวเลือก เพิ่มพื้นที่เก็บข้อมูลที่มีสิทธิ์ทั้งหมดไปยังคลัสเตอร์ เนื่องจากเราสามารถเพิ่มดิสก์ในภายหลังได้
มีเพียงสองโหนดในคลัสเตอร์ ดังนั้นคุณต้องกำหนดค่า Cluster Quorum . องค์ประชุมคลัสเตอร์เป็นการลงคะแนนเสียงชี้ขาด ตัวอย่างเช่น หากโหนดใดโหนดหนึ่งของคลัสเตอร์ไม่พร้อมใช้งาน คลัสเตอร์ต้องตรวจพบว่าโหนดใดที่ออนไลน์อยู่จริงและสามารถเห็นกันและกันได้ Cluster Quorum ให้ความสอดคล้องของคลัสเตอร์ (Cluster -> More Actions -> Configure Cluster Quorum Settings)
เลือกตัวเลือกการเป็นพยานองค์ประชุม
จากนั้นเลือกประเภทพยาน:ไฟล์แชร์พยาน
ระบุเส้นทาง 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 ตรวจพบว่าเป็นของคลัสเตอร์ WSFC เลือก เปิดใช้งานกลุ่มความพร้อมใช้งานเสมอ และรีสตาร์ทบริการอินสแตนซ์ MSSQL ทำเช่นเดียวกันสำหรับอินสแตนซ์ที่สอง
เคล็ดลับ ก่อนการกำหนดค่า Always On ตรวจสอบให้แน่ใจว่าบริการ SQL Server ไม่ได้ทำงานภายใต้บัญชีระบบภายในเครื่อง ขอแนะนำให้ใช้บัญชีบริการที่มีการจัดการแบบกลุ่มหรือบัญชีโดเมนปกติ มิเช่นนั้น คุณจะไม่สามารถกำหนดค่า Always-On ให้เสร็จสิ้นได้
เรียกใช้ SQL Server Management Studio เชื่อมต่อกับโฮสต์ของคุณ คลิก Always On High Availability และเรียกใช้ วิซาร์ดกลุ่มความพร้อมใช้งานใหม่
ใน SQL Server Management Studio 18.x สำหรับ SQL Server 2017 และ SQL Server 2019 การตั้งค่า Always On บางอย่างปรากฏขึ้นซึ่งมีให้ใช้งานใน T-SQL เท่านั้น ดังนั้นจึงขอแนะนำให้ใช้ SSMS เวอร์ชันล่าสุด
ระบุชื่อสำหรับกลุ่มความพร้อมใช้งาน Always On และเลือก การตรวจจับความสมบูรณ์ของระดับฐานข้อมูล . เมื่อใช้ตัวเลือกนี้ Always On จะสามารถตรวจจับได้เมื่อฐานข้อมูลไม่แข็งแรง
เลือกฐานข้อมูล SQL Server เพื่อเพิ่มในกลุ่มความพร้อมใช้งานตลอดเวลาของคุณ
คลิก เพิ่มแบบจำลอง และเชื่อมต่อเซิร์ฟเวอร์ SQL ที่สอง ดังนั้นคุณสามารถเพิ่มเซิร์ฟเวอร์ได้มากถึง 8 เซิร์ฟเวอร์
- บทบาทเริ่มต้น เป็นบทบาทจำลองตามเวลาที่สร้างกลุ่ม จะเป็นระดับประถมศึกษาหรือมัธยมศึกษาก็ได้
- เฟลโอเวอร์อัตโนมัติ – หากฐานข้อมูลไม่พร้อมใช้งาน Always On จะย้ายบทบาทหลักไปยังแบบจำลองอื่น ตรวจสอบรายการนี้;
- โหมดความพร้อมใช้งาน อนุญาตให้เลือก 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.
หมายความว่าคลัสเตอร์ไม่มีสิทธิ์เพียงพอในการสร้างผู้ฟัง เอกสารระบุว่าเพียงพอที่จะให้สิทธิ์ในการสร้างวัตถุประเภทคอมพิวเตอร์ให้กับวัตถุของคลัสเตอร์ของคุณ ทำได้ง่ายกว่าโดยใช้การมอบสิทธิ์ใน AD (หรือแบบด่วน แต่ตัวแปรที่ไม่ปลอดภัยคือการเพิ่มออบเจ็กต์ CLUSTERAG$ ลงในกลุ่ม Domain Admins ชั่วคราว)
เมื่อวินิจฉัยปัญหา Always-On และประสิทธิภาพของ SQL ต่ำในกลุ่มความพร้อมใช้งาน คุณควรศึกษาบันทึกของคลัสเตอร์ Windows อย่างละเอียด นอกเหนือจากการใช้เครื่องมือวินิจฉัย SQL Server มาตรฐานเนื่องจากฉันได้สร้างกลุ่มความพร้อมใช้งาน แต่ไม่ใช่ผู้ฟัง ฉันจึงเพิ่มด้วยตนเอง เปิดเมนูบริบทสำหรับกลุ่มความพร้อมของคุณแล้วคลิก เพิ่ม Listener .
ระบุที่อยู่ IP พอร์ต และชื่อ DNS ของผู้ฟัง
ตรวจสอบให้แน่ใจว่าผู้ฟังปรากฏใน ผู้ฟังกลุ่มความพร้อมใช้งาน ของกลุ่ม Always On ของคุณ
ดังนั้น คุณได้ทำการกำหนดค่าพื้นฐานของกลุ่มความพร้อมใช้งาน Always On เรียบร้อยแล้ว
SQL Server เปิดตลอดเวลา:ตรวจสอบการทำงาน &เฟลโอเวอร์
มาดู Availability Group Dashboard (แสดงแดชบอร์ด) กัน
ไม่เป็นไร สร้างกลุ่มแล้วและใช้งานได้
มาพยายามทำให้ node2 เป็นอินสแตนซ์หลักด้วยตนเอง คลิกขวาที่กลุ่มความพร้อมใช้งานและเลือก Failover .
สังเกตค่าใน Failover Readiness . ข้อมูลไม่สูญหาย หมายความว่าข้อมูลจะไม่สูญหาย
เชื่อมต่อกับโหนด2
คลิกเสร็จสิ้น
ตรวจสอบให้แน่ใจว่า node2 กลายเป็นแบบจำลองหลัก (อินสแตนซ์หลัก) ในกลุ่มความพร้อมใช้งาน
ตรวจสอบให้แน่ใจว่าผู้ฟังทำงานอย่างถูกต้อง ระบุชื่อ DNS ของผู้ฟังและพอร์ตที่คั่นด้วยเครื่องหมายจุลภาคใน SSMS:ag1-listener-1,1445
เรียกใช้การแทรก เลือก และอัปเดตการสืบค้น SQL ไปยังฐานข้อมูลของคุณอย่างง่าย
จากนั้นตรวจสอบการเฟลโอเวอร์อัตโนมัติของแบบจำลองหลัก เพียงฆ่ากระบวนการ sqlservr.exe บน TESTNODE2
ตรวจสอบสถานะกลุ่มความพร้อมใช้งานบนโหนดที่เหลือ:TESTNODE1\NODE1.
คลัสเตอร์ได้เปลี่ยนสถานะ testnode1\node1 เป็นสถานะหลักโดยอัตโนมัติ เนื่องจาก testnode2\node2 ไม่พร้อมใช้งาน
ตรวจสอบสถานะผู้ฟังเนื่องจากไคลเอ็นต์จะใช้เพื่อเชื่อมต่อ
ในกรณีของฉัน ฉันเชื่อมต่อกับผู้ฟังได้สำเร็จ แต่เมื่อพยายามเข้าถึงฐานข้อมูล ฉันได้รับข้อผิดพลาดนี้:
Unable to access database 'TestDatabase' because it lacks a quorum of nodes for high availability. Try the operation again later.
ข้อผิดพลาดปรากฏขึ้นเนื่องจาก ตัวสำรองที่ซิงโครไนซ์ที่จำเป็นสำหรับการคอมมิต ตัวเลือก. เนื่องจากเราตั้งค่าเป็น 1 เมื่อกำหนดค่า Always On ไม่อนุญาตให้เชื่อมต่อกับฐานข้อมูล เนื่องจากเราเหลือแบบจำลองหลักเพียงตัวเดียว
ตั้งค่าเป็น 0 แล้วลองเรียกใช้แบบสอบถามอีกครั้ง
Testnode1 ยังคงสถานะอินสแตนซ์หลักไว้ ในขณะที่ testnode2 กลายเป็นสถานะรอง ข้อมูลที่เราเปลี่ยนแปลงใน testnode1 เมื่อปิด testnode2 ถูกซิงโครไนซ์สำเร็จหลังจากเปิดคอมพิวเตอร์
ดังนั้นเราจึงตรวจสอบให้แน่ใจว่าทุกอย่างถูกต้องและข้อมูลจะพร้อมสำหรับการอ่าน/เขียนในกรณีที่เกิดความล้มเหลวร้ายแรง
คุณสามารถกำหนดค่ากลุ่มความพร้อมใช้งาน Always On ได้อย่างง่ายดาย หากคุณต้องการสร้างโซลูชันเฟลโอเวอร์ที่ใช้ SQL Server กลุ่มความพร้อมใช้งานจะจัดการได้ดี