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

High Availability - ความพร้อมใช้งานสูงของ MS SQL Server

High Availability (HA) คือโซลูชัน/กระบวนการ/เทคโนโลยีที่รับประกันว่าแอปพลิเคชัน/ฐานข้อมูลเข้าถึงได้ 24/7 ในทุกสถานการณ์ ไม่ว่าจะเป็นแบบวางแผนไว้หรือไม่คาดคิด

พื้นฐานแล้วมี 5 ตัวเลือกในการตั้งค่าความพร้อมใช้งานฐานข้อมูลใน MS SQL Server:

  1. Replication
  2. Log Shipping
  3. Mirroring
  4. Clustering
  5. AlwaysON Availability Groups

Replication

ข้อมูลต้นฉบับจะถูกคัดลอกไปยังปลายทางผ่านงาน replication (agent/job) ใช้เทคโนโลยีระดับ object คำศัพท์ที่ต้องรู้:

  • Publisher (ผู้เผยแพร่) คือเซิร์ฟเวอร์ต้นทาง
  • Distributor (ผู้แจกจ่าย) เป็นตัวเลือก จัดเก็บข้อมูลที่คัดลอกไปยัง Subscriber (ผู้สมัครรับ)
  • Subscriber คือเซิร์ฟเวอร์ปลายทาง

Log Shipping

ข้อมูลต้นทางถูกคัดลอกไปยังปลายทางผ่านงาน backup Transaction Log ใช้เทคโนโลยีระดับฐานข้อมูล คำศัพท์:

  1. Primary Server (เซิร์ฟเวอร์หลัก) คือเซิร์ฟเวอร์ต้นทาง
  2. Secondary Server (เซิร์ฟเวอร์รอง) คือเซิร์ฟเวอร์ปลายทาง
  3. Monitor Server (เซิร์ฟเวอร์ตรวจสอบ) เป็นตัวเลือก ตรวจสอบสถานะ Log Shipping

Mirroring

ข้อมูลหลักถูกคัดลอกไปยัง secondary ผ่านธุรกรรมเครือข่ายด้วยความช่วยเหลือของ endpoint และ port number ใช้เทคโนโลยีระดับฐานข้อมูล คำศัพท์:

  1. Principal Server (เซิร์ฟเวอร์หลัก) คือเซิร์ฟเวอร์ต้นทาง
  2. Mirror Server (เซิร์ฟเวอร์กระจก) คือเซิร์ฟเวอร์ปลายทาง
  3. Witness Server (เซิร์ฟเวอร์สाक्षี) เป็นตัวเลือก ใช้สำหรับโซลูชัน failover อัตโนมัติ

Clustering

ข้อมูลจัดเก็บในที่เก็บร่วม ใช้โดยทั้ง primary และ secondary servers ใช้เทคโนโลยีระดับ instance ต้องตั้งค่า Windows Clustering บน shared storage นี้ คำศัพท์:

  1. Active Node คือโหนดที่ SQL Services ทำงาน
  2. Passive Node คือโหนดที่ SQL Services ไม่ทำงาน

AlwaysON Availability Groups

ข้อมูลหลักจะถูกถ่ายโอนไปยัง secondary ผ่านธุรกรรม ใช้เทคโนโลยีระดับกลุ่มฐานข้อมูล ตั้งค่า Windows Clustering ไม่ต้องการ shared storage คำศัพท์:

  1. Primary Replica คือเซิร์ฟเวอร์ต้นทาง
  2. Secondary Replica คือเซิร์ฟเวอร์ปลายทาง

ขั้นตอนการตั้งค่า High Availability สำหรับ Mirroring และ Log Shipping

ด้านล่างคือขั้นตอนตั้งค่า HA (Mirroring และ Log Shipping) ยกเว้น Clustering, AlwaysON Availability Groups และ Replication

ขั้นตอนที่ 1

- รับ full backup และ T-log backup ของฐานข้อมูลต้นทาง

ตัวอย่าง: เพื่อตั้งค่า Mirroring / Log Shipping สำหรับฐานข้อมูล TestDB บน TESTINSTANCE เป็น primary SQL Server และ DEVINSTANCE เป็น secondary ใช้คิวรี่ด้านล่างเพื่อ backup บนเซิร์ฟเวอร์ต้นทาง (TESTINSTANCE)

Backup database TestDB to disk = 'D:testdb_full.bak'
GO
Backup log TestDB to disk = 'D:testdb_log.trn'

High Availability - ความพร้อมใช้งานสูงของ MS SQL Server

คิวรี่ดึง backup

ขั้นตอนที่ 2

- คัดลอกไฟล์ backup ไปยังเซิร์ฟเวอร์ปลายทาง

ในกรณีนี้เรามีเซิร์ฟเวอร์ทางกายภาพเดียวแต 2 instance จึงไม่ต้องคัดลอก แต่ถ้า 2 instance อยู่คนละเซิร์ฟเวอร์ ให้คัดลอกไฟล์ทั้ง 2 ไปยังที่ตั้งบน secondary server ที่ DEVINSTANCE ติดตั้ง

High Availability - ความพร้อมใช้งานสูงของ MS SQL Server

คัดลอกไฟล์ backup ไปยังเซิร์ฟเวอร์ปลายทาง

ขั้นตอนที่ 3

- กู้คืนฐานข้อมูลด้วยไฟล์ backup บนเซิร์ฟเวอร์ปลายทาง โดยเลือก NORECOVERY

ตัวอย่าง: เชื่อมต่อ SQL Server DEVINSTANCE เปิด New Query เขียนโค้ดด้านล่างเพื่อ restore ฐานข้อมูลชื่อ TestDB เหมือนต้นทาง สำหรับ Log Shipping อาจใช้ชื่อต่างได้ ใช้ตัวเลือก norecovery

Restore database TestDB from disk = 'D:TestDB_full.bak'
with move 'TestDB' to 'D:DATATestDB_DR.mdf',
move 'TestDB_log' to 'D:DATATestDB_log_DR.ldf',
norecovery
GO
Restore database TestDB from disk = 'D:TestDB_log.trn' with norecovery

High Availability - ความพร้อมใช้งานสูงของ MS SQL Server

กู้คืนฐานข้อมูลด้วยไฟล์ backup

Refresh โฟลเดอร์ฐานข้อมูลบน DEVINSTANCE จะเห็นฐานข้อมูล TestDB กู้คืนแล้วพร้อมสถานะ recovering

High Availability - ความพร้อมใช้งานสูงของ MS SQL Server

สถานะการกู้คืนฐานข้อมูล

ขั้นตอนที่ 4

- ตั้งค่า HA (Log Shipping / Mirroring) ตามด้านล่าง

ตัวอย่าง: คลิกขวาที่ฐานข้อมูล TestDB บน TESTINSTANCE (primary) เลือก Properties

High Availability - ความพร้อมใช้งานสูงของ MS SQL Server

กำหนดค่า Log Shipping / Mirroring

ขั้นตอนที่ 5

- เลือก Mirroring หรือ Transaction Log Shipping ตามต้องการ และทำตามขั้นตอนของระบบเพื่อเสร็จสิ้นการตั้งค่า