עבודה עם קבוצות זמינות Always On


בדף הזה מוסבר מהן קבוצות זמינות Always-On ב-SQL Server ואיך Datastream תומך בהן בתרחישים של מעבר לגיבוי (failover) ושחזור נתונים.

סקירה כללית על קבוצות זמינות Always On

ב-SQL Server, קבוצות זמינות Always On הן פתרון לזמינות גבוהה שמאפשר לכם להכין את מסדי הנתונים שלכם לתרחישי תוכנית התאוששות מאסון (DR).

קבוצות זמינות Always On ממקסמות את זמינות מסד הנתונים לעסקים. קבוצות זמינות תומכות בסביבה משוכפלת עבור קבוצה נבחרת של מסדי נתונים, שנקראים מסדי נתונים של זמינות. כל קבוצה כוללת קבוצה אחת של מסדי נתונים ראשיים למשימות קריאה וכתיבה, ועד שמונה קבוצות של מסדי נתונים משניים תואמים. במסדי הנתונים המשניים אפשר לאפשר גישה לקריאה בלבד או פעולות גיבוי.

מידע נוסף על קבוצות זמינות Always On זמין במאמר What is an Always On availability group? (מהי קבוצת זמינות Always On?) במסמכי התיעוד של SQL Server.

למידע על הדרישות המוקדמות של קבוצת זמינות Always On למופע של SQL Server, אפשר לעיין במסמכי התיעוד של SQL Server.

הגדרת Datastream לשימוש בקבוצות זמינות Always On

‫Datastream תומך במצב זמינות של אישור סינכרוני עם שיטת ה-CDC של טבלאות השינויים. במצב הזה, מסד הנתונים המשני נשאר מסונכרן עם מסד הנתונים הראשי התואם עד שהסנכרון של הנתונים נפסק. אישור העסקה נשלח ללקוח רק כשהעותק המשני כותב את הרשומות של יומן העסקאות הנכנסות לדיסק.

מידע על מצבי זמינות מופיע במאמר ההבדלים בין מצבי זמינות לקבוצת זמינות Always On.

כדי להגדיר את מופע SQL Server לשימוש בקבוצות זמינות של Always On, צריך להפעיל את SQL Server Agent כדי לתעד יומנים כשמתבצעת העברה אוטומטית לגיבוי (failover), ואז להריץ משימת ניקוי. לפני שעושים את זה, צריך לשנות את שלבי העבודה של סוכן ה-CDC כדי לבדוק אם העותק הנוכחי הוא באמת העותק הראשי. הפעולה הזו מתבצעת באמצעות הפונקציה sys.fn_hadr_is_primary_replica.

משתמשים בפקודות הבאות כדי להגדיר את המכונה:

  -- Check if the current replica is a primary for the corresponding database.
  USE [DATABASE_NAME];
  DECLARE @DatabaseName SYSNAME = DB_NAME();
  IF (SELECT sys.fn_hadr_is_primary_replica(@DatabaseName)) = 1
  BEGIN
  -- If the replica isn't a primary, the code block that follows is skipped
  EXECUTE sys.sp_cdc_add_job @job_type = 'capture';
  EXECUTE sys.sp_cdc_add_job @job_type = 'cleanup';
  END

מגבלות ידועות

המגבלות הידועות על השימוש ב-Datastream עם קבוצות זמינות Always On כוללות:

  • הזרמת נתונים לא תומכת בפענוח DNS פרטי שמבוסס על כתובות IP של מאזינים. צריך להחליף ידנית את כתובות ה-IP של העותקים.
  • אחרי מעבר לגיבוי בעקבות כשל בקבוצת זמינות, צריך לוודא באופן ידני שעבודות הלכידה והניקוי של SQL Server Agent פועלות בשרת הראשי החדש. אם לא תעשו זאת, יכול להיות שיהיה אובדן נתונים אם יתבצע קיטוע של יומני העסקאות לפני ש-Datastream יוכל לקרוא את השינויים.
  • אם העותק נוצר לפני המקור הראשי, צריך להוסיף את התווית always_on_availability: true למקור הנתונים כדי למנוע בעיות בשלמות הנתונים. מידע על הוספת תוויות למקור הנתונים זמין במאמר הגדרת מקור הנתונים.

המאמרים הבאים