Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL Server

บรรลุความพร้อมใช้งานอย่างต่อเนื่องด้วย SQL Server Mirroring

โซลูชันการมิเรอร์ฐานข้อมูลช่วยสร้างระบบการจัดการฐานข้อมูลที่มีความพร้อมใช้งานสูงใน SQL Server ซึ่งค่อนข้างง่ายและเหมาะสำหรับฐานข้อมูลขนาดกลางและระดับล่าง

ข้อกำหนดของระบบการจัดการฐานข้อมูลที่มีความพร้อมใช้งานสูงกำลังกลายเป็นเรื่องเร่งด่วนมากขึ้น ซึ่งบางครั้งก็เป็นปัจจัยสำคัญสำหรับองค์กรและบริษัทต่างๆ อย่างไรก็ตาม เพื่อให้มีความพร้อมใช้งานสูง (ใช้งานเกือบตลอดเวลา) ไม่ใช่เรื่องง่าย เนื่องจากมีปัจจัยหลายประการที่ส่งผลต่อประสิทธิภาพของระบบอยู่เสมอ:ปัญหาฮาร์ดแวร์ โครงสร้างพื้นฐานเครือข่าย ข้อผิดพลาด ระบบปฏิบัติการ ข้อผิดพลาดของซอฟต์แวร์แอปพลิเคชัน ไวรัส บทความนี้แนะนำโซลูชันเพื่อช่วยให้บรรลุความพร้อมใช้งานสูง (HA - ความพร้อมใช้งานสูง) บนระบบจัดการฐานข้อมูลที่ใช้อยู่ในปัจจุบัน:SQL Server .

โซลูชัน HA บน SQL Server

คลัสเตอร์ล้มเหลว

โซลูชันนี้ใช้ฮาร์ดไดรฟ์ที่ใช้ร่วมกัน - โดยปกติจะเป็น SAN เพื่อเก็บฐานข้อมูล มี ' อินสแตนซ์ มากมาย ' ของ SQL Server ที่ติดตั้งไว้ แต่ละอินสแตนซ์จะเป็นโหนด แต่ในครั้งเดียวมีเพียงโหนดเดียวเท่านั้นที่สามารถควบคุมฐานข้อมูลได้ เมื่อโหนดนี้มีปัญหา โหนดอื่นจะเข้ามาแทนที่เพื่อจัดการฐานข้อมูล

บันทึกการจัดส่ง

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

บรรลุความพร้อมใช้งานอย่างต่อเนื่องด้วย SQL Server Mirroring รูปภาพ 1 :การตั้งค่า SQL Server พร้อมใช้งานเสมอ

การจำลอง

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

การมิเรอร์ข้อมูลใน SQL Server

การมิเรอร์ฐานข้อมูล (DM) เป็นโซลูชันใหม่สำหรับการสร้างฐานข้อมูลที่มีความพร้อมใช้งานสูงใน SQL Server DM เอาชนะข้อเสียของวิธีแก้ปัญหาก่อนหน้านี้ เช่น:

• เมื่อเปรียบเทียบกับคลัสเตอร์ล้มเหลว DM ไม่ต้องการฮาร์ดแวร์พิเศษ เช่น SAN ซึ่งช่วยลดต้นทุนในการกำหนดค่า

• เปรียบเทียบกับการขนส่งบันทึก DM สามารถสลับไปใช้เครื่องมิเรอร์ได้โดยอัตโนมัติเมื่อเกิดข้อผิดพลาดโดยที่ผู้ดูแลระบบไม่ต้องดำเนินการ การจัดส่งบันทึกต้องมีการกำหนดค่าด้วยตนเองด้วย T-SQL ดังนั้น DM จึงถูกเรียกว่า 'hot standby' ซึ่งสามารถคำนวณเวลาการหยุดชะงัก (เวลาหยุดทำงาน) ได้ในหน่วยวินาที และการจัดส่งบันทึกเรียกว่า 'warm standby' เนื่องจากเวลาในการหยุดชะงักสามารถเป็นนาทีหรือมากกว่าได้

• เปรียบเทียบกับการจำลองแบบ , DM นั้นเหนือกว่าเพราะปกป้องฐานข้อมูลทั้งหมด และการจำลองจะปกป้องเฉพาะบางส่วนของฐานข้อมูล เช่น ตารางเช่น ต้นแบบ

อย่างไรก็ตาม DM ใช้ได้เฉพาะใน Enterprise / Developer เท่านั้น เวอร์ชันของ SQL Server 2005 SP1 / 2008

1. โครงสร้างของ DM ใน SQL Server

DM ใน SQL Server ต้องมี 3 อินสแตนซ์หลัก: 1 อินสแตนซ์ (บทบาทหลัก) เพื่อจัดการฐานข้อมูล และ 1 อินสแตนซ์เพิ่มเติม (มิเรอร์) เพื่อให้แน่ใจว่ามีการสำรองฐานข้อมูล อินสแตนซ์ของพยานเชื่อมต่อกับอินสแตนซ์หลักและอินสแตนซ์ย่อยสองตัวเพื่อตรวจสอบและรับรองความพร้อมใช้งานของฐานข้อมูล

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

บรรลุความพร้อมใช้งานอย่างต่อเนื่องด้วย SQL Server Mirroring รูปภาพ 2 :การตั้งค่า SQL Server พร้อมใช้งานเสมอ

เมื่อไม่มีเซิร์ฟเวอร์พยาน: กระบวนการแปลงอัตโนมัติจะไม่ทำงานหากไม่มีผลกระทบของผู้ดูแลระบบ

ใน SQL Server มีแนวคิดของ ' endPoint ' ที่สามารถตีความได้ว่าเป็น 'จุดเชื่อมต่อ' ทำให้อินสแตนซ์ของ SQL Server สามารถสื่อสารกันผ่าน TCP ( diagram 2 ).

จุดสิ้นสุดแต่ละจุดจะถูกระบุด้วยที่อยู่และพอร์ตที่เกี่ยวข้อง ตามทฤษฎี ที่อยู่จะต้องเป็นที่อยู่โดเมนแบบเต็ม แต่จริงๆ แล้วสามารถใช้ได้ด้วยวิธีใดวิธีหนึ่งจากสี่วิธี:

- กำหนดผ่านชื่อเซิร์ฟเวอร์ ตัวอย่าง:TCP:// หลัก:7024

- กำหนดผ่านชื่อโดเมน ตัวอย่าง:TCP://PRINCIPAL.DELTAX.COM:7024

- กำหนดผ่าน IPv4 ตัวอย่าง:TCP://192.168.1.3:7024

- กำหนดผ่าน IPv6

หมายเหตุ: ในกรณีที่อินสแตนซ์ของเซิร์ฟเวอร์ SQL ทำงานบนเครื่องเดียวกัน พอร์ต TCP จะต้องแตกต่างกัน

<แข็งแกร่ง>2. แลกเปลี่ยนข้อมูลระหว่างเซิร์ฟเวอร์หลักและเซิร์ฟเวอร์รอง

บรรลุความพร้อมใช้งานอย่างต่อเนื่องด้วย SQL Server Mirroring รูปภาพ 3 :การตั้งค่า SQL Server พร้อมใช้งานเสมอ

โหมดความเร็วสูง (ประสิทธิภาพสูง):

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

ด้วยการไม่รอให้มิเรอร์เซิร์ฟเวอร์อัปเดตการเปลี่ยนแปลง เซิร์ฟเวอร์หลักจึงมีความเร็วในการเข้าถึงที่เร็วขึ้น และหลีกเลี่ยงการโหลดที่ไม่จำเป็น

กระบวนการนี้สามารถอธิบายได้ในรูปแบบต่อไปนี้:

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

โหมดความปลอดภัยสูง (ความปลอดภัยสูง):

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

โหมดความปลอดภัยสูงต้องใช้เซิร์ฟเวอร์พยานเพื่อให้แน่ใจว่าสแตนด์บายแบบร้อน - สแตนด์บายแบบร้อน

<แข็งแกร่ง>3. การกำหนดค่า DM:

การกำหนดค่า DM บน SQL Server ประกอบด้วย 3 ขั้นตอนพื้นฐาน:

- สำรอง (สำรอง) ฐานข้อมูลทั้งหมดบนเซิร์ฟเวอร์หลัก จากนั้นกู้คืน (กู้คืน) บนเซิร์ฟเวอร์มิเรอร์

- สร้างอุปกรณ์ปลายทางที่เกี่ยวข้องเพื่อให้เซิร์ฟเวอร์หลัก มิเรอร์ และพยานทำงานร่วมกัน

- สร้างเซสชัน (เซสชันการมิเรอร์ฐานข้อมูล)

บรรลุความพร้อมใช้งานอย่างต่อเนื่องด้วย SQL Server Mirroring รูปภาพ 4 :การตั้งค่า SQL Server พร้อมใช้งานเสมอ

การกำหนดค่า DM สามารถทำได้โดยใช้อินเทอร์เฟซของ SQL Server Management Studio (SSMS) หรือกำหนดค่าด้วย T-SQL ได้

การกำหนดค่าด้วยอินเทอร์เฟซของ SQL Server Management Studio นั้นค่อนข้างง่าย หลังจากกู้คืนข้อมูลบนเซิร์ฟเวอร์มิเรอร์สำเร็จแล้ว เพียงคลิกขวาที่ฐานข้อมูลแล้วเลือก ' การมิเรอร์ ' จากนั้นทำตามขั้นตอน .

ผลลัพธ์จะเป็นการเริ่มต้นเซสชัน DM

การกำหนดค่า SSMS ช่วยให้สามารถลบการดำเนินการส่วนใหญ่ได้เมื่อดำเนินการกับ T-SQL แต่ถ้าคุณต้องการ คุณยังคงสามารถใช้ T-SQL เพื่อให้เกิดความยืดหยุ่นสูงสุดได้

การกำหนดค่าบน T-SQL สามารถใช้ 2 วิธีในการตรวจสอบสิทธิ์ปลายทางระหว่างกัน:ตรวจสอบโดยการเข้าสู่ระบบหรือตรวจสอบสิทธิ์ด้วยใบรับรอง รหัส T-SQL เสร็จสมบูรณ์แล้ว ดังนั้นการกำหนดค่า DM จึงค่อนข้างยาว ดังนั้นเราจึงแนะนำเฉพาะขั้นตอนทั่วไปบางขั้นตอนเท่านั้น

การกำหนดค่าด้วยการเข้าสู่ระบบ

สมมติว่าเราใช้บัญชี Windows เพื่อเข้าสู่ระบบ SQL Server ในกรณีที่ใช้บัญชี SQL Server ในลักษณะเดียวกัน

สร้างการเข้าสู่ระบบ [PRICIPAL-SRVAAdministrator]
จากหน้าต่าง
ไป

สร้างจุดสิ้นสุด:

สร้างพันธมิตรจุดสิ้นสุด
สถานะ =เริ่มต้นแล้ว
เป็น TCP (LISTENER_PORT =5022)
สำหรับฐานข้อมูล_มิเรอร์ (
การรับรองความถูกต้อง =การเจรจาต่อรองของ Windows
การเข้ารหัส =รองรับ
บทบาท =ทั้งหมด)
ไป

โปรดทราบว่าการสร้างจุดสิ้นสุดด้วย ROLE =ALL จำเป็นต้องดำเนินการทั้งบนเซิร์ฟเวอร์หลักและมิเรอร์ บนเซิร์ฟเวอร์พยาน คุณแทนที่ด้วย ROLE =WITNESS .

บรรลุความพร้อมใช้งานอย่างต่อเนื่องด้วย SQL Server Mirroring รูปภาพ 5 :การตั้งค่า SQL Server พร้อมใช้งานเสมอ

การกำหนดค่าตามใบรับรอง:

แทนที่จะใช้บัญชีเข้าสู่ระบบเพื่อให้จุดสิ้นสุดแต่ละจุดระบุซึ่งกันและกัน คุณสามารถใช้โซลูชันอื่นเพื่อสร้างใบรับรองได้ - ใบรับรอง

- สร้างการเข้ารหัสคีย์หลัก (จำเป็นสำหรับการส่งออกใบรับรอง):

tếo người dùng key xác thực từ mết khẩu ='abc123 !!';

- สร้างใบรับรอง:

สร้างใบรับรอง PRINCIPAL_cert
โดยมีหัวเรื่อง ='ใบรับรองหลัก'
start_date ='2007/11/01',
expiry_date ='2020/11/01';

บรรลุความพร้อมใช้งานอย่างต่อเนื่องด้วย SQL Server Mirroring รูปภาพ 6 :การตั้งค่า SQL Server พร้อมใช้งานเสมอ - สร้างจุดสิ้นสุดที่สอดคล้องกับใบรับรอง:

สร้างสถานะปลายทาง endpoint_mirroring state =เริ่มต้นแล้ว
เป็น tcp (listener_port =7024, Listener_ip =ทั้งหมด)
สำหรับ Database_mirroring (การรับรองความถูกต้อง =ใบรับรอง PRINCIPAL_cert, การเข้ารหัส =ปิดใช้งาน, บทบาท =ทั้งหมด);

- ส่งออกใบรับรองเป็นไฟล์แยกต่างหาก:

สำรองใบรับรอง PRINCIPAL_cert ไปยังไฟล์ ='c:PRINCIPAL_cert.cer';
ทำเช่นเดียวกันบนเซิร์ฟเวอร์มิเรอร์และพยาน โดยใส่ใจกับการเปลี่ยนบทบาท =พยาน เมื่อจำเป็น หลังจากสร้างจุดสิ้นสุดและส่งออกใบรับรองบนทั้ง 3 อินสแตนซ์ ให้กลับสู่เซิร์ฟเวอร์หลัก:

- สร้างการเข้าสู่ระบบสำหรับเซิร์ฟเวอร์มิเรอร์:

สร้างการเข้าสู่ระบบ MIRROR_login ด้วย PASSWORD ='abc123 !!';
ไป

- สร้างผู้ใช้ที่สอดคล้องกับการเข้าสู่ระบบนั้น

สร้างผู้ใช้ MIRROR_user จากการเข้าสู่ระบบ MIRROR_login;
ไป

- สร้างใบรับรองจากไฟล์ .cer ของเซิร์ฟเวอร์:

สร้างใบรับรอง MIRROR_cert
การอนุญาต MIRROR_user
จากไฟล์ ='c:MIRROR_cert.cer';
ไป

- การให้สิทธิ์ในการเชื่อมต่อกับจุดสิ้นสุดสำหรับมิเรอร์การเข้าสู่ระบบของเซิร์ฟเวอร์:

ให้สิทธิ์ CONNECT ON Endpoint ::endpoint_mirroring ถึง [MIRROR_login];
ไป

บรรลุความพร้อมใช้งานอย่างต่อเนื่องด้วย SQL Server Mirroring image 7 :การตั้งค่า SQL Server พร้อมใช้งานเสมอ ทำสิ่งเดียวกันนี้กับใบรับรองเซิร์ฟเวอร์พยาน เช่นเดียวกับบนเซิร์ฟเวอร์มิเรอร์และพยาน เพื่อให้คอมพิวเตอร์ 3 เครื่องสามารถระบุและรับรองความถูกต้องซึ่งกันและกันได้

หลังจากสร้างจุดสิ้นสุดแล้ว คุณสามารถตรวจสอบได้ด้วยการสืบค้น:

เลือกชื่อ state_desc, Role_desc
จาก sys.database_mirroring_endpoint

งานสุดท้ายคือการเริ่มต้นเซสชันสำหรับ DM:

* บนเซิร์ฟเวอร์หลัก:

แก้ไขฐานข้อมูล AdventureWorks
SET PARTNER ='TCP://mirror-srv.deltax.com:5022'
ไป

* บนเซิร์ฟเวอร์มิเรอร์:

แก้ไขฐานข้อมูล AdventureWorks
SET PARTNER ='TCP://pricipal-srv.deltax.com:5022'
ไป

* บนเซิร์ฟเวอร์หลัก ให้ตั้งค่าเซิร์ฟเวอร์พยาน:

แก้ไขฐานข้อมูล AdventureWorks
ตั้งพยาน ='TCP://witness-srv.deltax.com:5022'
ไป

หลังจากที่ระบบทำงานแล้ว สามารถตรวจสอบได้ด้วย Database Mirroring Monitor เครื่องมือ :

บรรลุความพร้อมใช้งานอย่างต่อเนื่องด้วย SQL Server Mirroring image 8 :การตั้งค่า SQL Server พร้อมใช้งานเสมอ

<แข็งแกร่ง>4. มิดเดิลแวร์การเขียนโปรแกรม:

กล่าวกันว่าการใช้ DM นั้นเกือบจะโปร่งใสสำหรับการเชื่อมต่อฐานข้อมูลจากฝั่งมิดเดิลแวร์ หากคุณใช้ไลบรารี ADO.NET เพียงแก้ไข ConnectionString เพื่อเพิ่ม ' พันธมิตรที่ล้มเหลว ' ไปยังเซิร์ฟเวอร์มิเรอร์ ตัวอย่างเช่น:

แหล่งข้อมูล =pricipal.database.com; พันธมิตรที่ล้มเหลว =mirror.database.com; แคตตาล็อกเริ่มต้น =AdventureWorks;
การรักษาความปลอดภัยแบบรวม =True;

นอกจากนี้ ADO.NET ยังสร้าง ' กลุ่มการเชื่อมต่อ ' ซึ่งช่วยให้สามารถแคชการเชื่อมต่อที่ได้เริ่มต้นขึ้น ดังนั้นในกรณีที่เกิดปัญหาที่นำไปสู่การสลับเซิร์ฟเวอร์ คุณจะต้องดำเนินการเพิ่มเติมอย่างจริงจัง ลบแคชนี้

SqlConnection.ClearPool (conn);

บทส่งท้าย

บรรลุความพร้อมใช้งานอย่างต่อเนื่องด้วย SQL Server Mirroring image 9 :การตั้งค่า SQL Server พร้อมใช้งานเสมอ DM ใน SQL Server ค่อนข้างเรียบง่าย กำหนดค่า ใช้งาน และตรวจสอบได้ง่าย แต่ความสามารถค่อนข้างจำกัด เหมาะสำหรับฐานข้อมูลขนาดกลางและระดับล่างเท่านั้น และสำหรับฐานข้อมูลขนาดใหญ่ที่มีข้อกำหนดที่เข้มงวดเพื่อความต่อเนื่อง แนวทางที่เสนอยังไม่ได้รับการตอบสนอง แต่จำเป็นต้องมีโซลูชันระบบปฏิบัติการโดยรวม ระบบฮาร์ดแวร์ เครือข่าย

บทความนี้หวังว่าจะช่วยให้คุณเห็นภาพรวมของวิธีสร้างระบบการจัดการฐานข้อมูลที่มีความพร้อมใช้งานสูงใน SQL Server

อ้างอิง:http://technet.microsoft.com/en-us/library/cc917680.aspx

โชคดีนะ

คุณเพิ่งอ่านบทความ "การตั้งค่า SQL Server พร้อมใช้งานเสมอ จบแล้ว " แก้ไขโดย TipsMake ทีม เราหวังว่าบทความนี้จะให้เคล็ดลับและเทคนิคที่เป็นประโยชน์มากมายแก่คุณ คุณสามารถค้นหาบทความที่คล้ายกันเกี่ยวกับเคล็ดลับและคำแนะนำได้ ขอบคุณที่อ่านและติดตามเราเป็นประจำ