Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows Server

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

ในบทความนี้ เราจะแนะนำคุณทีละขั้นตอนเกี่ยวกับวิธีการติดตั้งและกำหนดค่า เปิดเสมอ กลุ่มความพร้อมใช้งานบน 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

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

การติดตั้งเป็นไปโดยอัตโนมัติ และคุณยังไม่ต้องกำหนดค่าอะไรเลย เรียกใช้ ตัวจัดการคลัสเตอร์ล้มเหลว สแนปอิน (FailoverClusters.SnapInHelper.msc ) และสร้างคลัสเตอร์ใหม่

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

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

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

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

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

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

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

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

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

มีเพียงสองโหนดในคลัสเตอร์ ดังนั้นคุณต้องกำหนดค่า Cluster Quorum . องค์ประชุมคลัสเตอร์เป็นการลงคะแนนเสียงชี้ขาด ตัวอย่างเช่น หากโหนดใดโหนดหนึ่งของคลัสเตอร์ไม่พร้อมใช้งาน คลัสเตอร์ต้องตรวจพบว่าโหนดใดที่ออนไลน์อยู่จริงและสามารถเห็นกันและกันได้ Cluster Quorum ให้ความสอดคล้องของคลัสเตอร์ (Cluster -> More Actions -> Configure Cluster Quorum Settings)

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

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

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

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

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

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

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

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

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 High Availability Group บน SQL Server

เคล็ดลับ ก่อนการกำหนดค่า 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 High Availability Group บน SQL Server

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

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

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

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

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

  • บทบาทเริ่มต้น เป็นบทบาทจำลองตามเวลาที่สร้างกลุ่ม จะเป็นระดับประถมศึกษาหรือมัธยมศึกษาก็ได้
  • เฟลโอเวอร์อัตโนมัติ – หากฐานข้อมูลไม่พร้อมใช้งาน Always On จะย้ายบทบาทหลักไปยังแบบจำลองอื่น ตรวจสอบรายการนี้;
  • โหมดความพร้อมใช้งาน อนุญาตให้เลือก Synchronous Commit หรือ Asynchronous Commit หากคุณเลือกโหมดซิงโครนัส ธุรกรรมที่มาถึงแบบจำลองหลักจะถูกส่งไปยังแบบจำลองรองอื่น ๆ ทั้งหมดด้วยโหมดซิงโครนัส แบบจำลองหลักเสร็จสิ้นการทำธุรกรรมหลังจากที่แบบจำลองอื่นได้เขียนลงบนดิสก์เท่านั้น ดังนั้น การสูญหายของข้อมูลจะถูกลบออกหากการจำลองหลักล้มเหลว ในโหมดอะซิงโครนัส การเขียนเรพลิกาหลักจะเปลี่ยนแปลงทันทีโดยไม่ต้องรอการตอบสนองของเรพลิกาอื่น
  • รองที่อ่านได้ เป็นพารามิเตอร์ที่อนุญาตให้เรียกใช้แบบสอบถาม SELECT กับแบบจำลองรอง หากค่าคือใช่ ไคลเอ็นต์จะสามารถเข้าถึงแบบอ่านอย่างเดียวได้แม้ว่าจะเชื่อมต่อโดยไม่มี ApplicationIntent=readonly .
  • จำเป็นรองที่ซิงโครไนซ์เพื่อคอมมิต คือจำนวนของแบบจำลองรองที่ซิงโครไนซ์เพื่อทำธุรกรรมให้เสร็จสิ้น ตั้งค่าตามจำนวนแบบจำลอง ฉันจะตั้งค่าเป็น 1

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

ห้ามแก้ไขสิ่งใดใน ปลายทาง แท็บ

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

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

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

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

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

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

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

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

ในกรณีของฉัน การทดสอบทั้งหมดประสบความสำเร็จ แต่ในขั้นตอนผลลัพธ์หลังการติดตั้ง วิซาร์ดแสดงข้อผิดพลาดในการสร้างตัวฟังกลุ่มความพร้อมใช้งาน ข้อผิดพลาด 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 .

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

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

ตรวจสอบให้แน่ใจว่าผู้ฟังปรากฏใน ผู้ฟังกลุ่มความพร้อมใช้งาน ของกลุ่ม Always On ของคุณ

ดังนั้น คุณได้ทำการกำหนดค่าพื้นฐานของกลุ่มความพร้อมใช้งาน Always On เรียบร้อยแล้ว

SQL Server เปิดตลอดเวลา:ตรวจสอบการทำงาน &เฟลโอเวอร์

มาดู Availability Group Dashboard (แสดงแดชบอร์ด) กัน

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

ไม่เป็นไร สร้างกลุ่มแล้วและใช้งานได้

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

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

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

สังเกตค่าใน Failover Readiness . ข้อมูลไม่สูญหาย หมายความว่าข้อมูลจะไม่สูญหาย

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

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

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

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

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

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

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

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

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

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

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

คลัสเตอร์ได้เปลี่ยนสถานะ 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 ไม่อนุญาตให้เชื่อมต่อกับฐานข้อมูล เนื่องจากเราเหลือแบบจำลองหลักเพียงตัวเดียว

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

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

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

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

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