ניהול רפליקות לקריאה

בדף הזה מוסבר איך לנהל עותקים לקריאה. הפעולות האלה כוללות השבתה והפעלה של רפליקציה, קידום של עותק, הגדרה של רפליקציה מקבילה ובדיקה של סטטוס הרפליקציה.

מידע נוסף על אופן הפעולה של רפליקציה זמין במאמר רפליקציה ב-Cloud SQL.

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

השבתת השכפול

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

השבתת השכפול לא מפסיקה את פעולת מכונת הרפליקה, אלא הופכת אותה למכונה לקריאה בלבד שלא משוכפלת יותר מהמכונה הראשית שלה. החיוב על המופע יימשך. ברפליקה המושבתת, אפשר להפעיל מחדש את השכפול, למחוק את הרפליקה או להפוך את הרפליקה למופע עצמאי.

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

כדי להשבית את השכפול:

המסוף

  1. נכנסים לדף Cloud SQL Instances במסוף Google Cloud .

    כניסה לדף Cloud SQL Instances

  2. לוחצים על השם של מכונת העתקה כדי לבחור אותה.
  3. בסרגל הלחצנים, לוחצים על השבתת השכפול.
  4. לוחצים על OK.

gcloud

gcloud sql instances patch REPLICA_NAME \
--no-enable-database-replication

REST v1

כדי להריץ את פקודת ה-cURL הזו בשורת הפקודה, צריך לקבל אסימון גישה באמצעות הפקודה gcloud auth print-access-token. אפשר גם להשתמש ב- APIs Explorer בדף Instances:patch כדי לשלוח את בקשת ה-API בארכיטקטורת REST.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • replica-name: השם של מכונת הרפליקה

ה-method של ה-HTTP וכתובת ה-URL:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name

תוכן בקשת JSON:

{
  "settings":
  {
    "databaseReplicationEnabled": "False"
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

REST v1beta4

כדי להריץ את פקודת ה-cURL הזו בשורת הפקודה, צריך לקבל אסימון גישה באמצעות הפקודה gcloud auth print-access-token. אפשר גם להשתמש ב- APIs Explorer בדף Instances:patch כדי לשלוח את בקשת ה-API בארכיטקטורת REST.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • replica-name: השם של מכונת הרפליקה

ה-method של ה-HTTP וכתובת ה-URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name

תוכן בקשת JSON:

{
  "settings":
  {
    "databaseReplicationEnabled": "False"
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

הפעלת השכפול

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

כדי להפעיל שכפול:

המסוף

  1. נכנסים לדף Cloud SQL Instances במסוף Google Cloud .

    כניסה לדף Cloud SQL Instances

  2. לוחצים על השם של מכונת העתקה כדי לבחור אותה.
  3. לוחצים על הפעלת השכפול.
  4. לוחצים על אישור.

gcloud

gcloud sql instances patch REPLICA_NAME \
--enable-database-replication

REST v1

כדי להריץ את פקודת ה-cURL הזו בשורת הפקודה, צריך לקבל אסימון גישה באמצעות הפקודה gcloud auth print-access-token. אפשר גם להשתמש ב- APIs Explorer בדף Instances:patch כדי לשלוח את בקשת ה-API בארכיטקטורת REST.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • replica-name: השם של מכונת הרפליקה

ה-method של ה-HTTP וכתובת ה-URL:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name

תוכן בקשת JSON:

{
  "settings":
  {
    "databaseReplicationEnabled": "True"
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

REST v1beta4

כדי להריץ את פקודת ה-cURL הזו בשורת הפקודה, צריך לקבל אסימון גישה באמצעות הפקודה gcloud auth print-access-token. אפשר גם להשתמש ב- APIs Explorer בדף Instances:patch כדי לשלוח את בקשת ה-API בארכיטקטורת REST.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • replica-name: השם של מכונת הרפליקה

ה-method של ה-HTTP וכתובת ה-URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name

תוכן בקשת JSON:

{
  "settings":
  {
    "databaseReplicationEnabled": "True"
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

קידום של עותק

קידום של רפליקת קריאה מפסיק את הרפליקציה וממיר את המכונה למכונה ראשית עצמאית של Cloud SQL עם יכולות קריאה וכתיבה.

כשמשדרגים רפליקות לקריאה, הן מוגדרות אוטומטית עם גיבויים, אבל הן לא מוגדרות אוטומטית כמופעים של זמינות גבוהה (HA). אפשר להפעיל זמינות גבוהה אחרי קידום הרפליקה, בדיוק כמו במקרים של מופעים שאינם רפליקות. הגדרת רפליקה לקריאה לצורך זמינות גבוהה מתבצעת באותו אופן כמו הגדרה של מופע ראשי. מידע נוסף על הגדרת המופע לזמינות גבוהה

לפני שמקדמים רפליקה לקריאה, אם השרת הראשי עדיין זמין ומשרת לקוחות, צריך לבצע את הפעולות הבאות:

  1. מפסיקים את כל פעולות הכתיבה למופע הראשי.
  2. בודקים את סטטוס הרפליקציה של העותק. אחת האפשרויות היא להשתמש ב לוח הבקרה Always On Availability Group ב-SQL Server Management Studio‏ (SSMS).
  3. מוודאים שההעתק משוכפל, ואז בודקים את השהיית השכפול, למשל כמו שמופיע בדוח של המדד seconds_behind_master.

אחרת, יכול להיות שמופע חדש שקודם לא יכלול חלק מהעסקאות שאושרו במופע הראשי.

כדי לקדם רפליקה למופע עצמאי:

המסוף

  1. נכנסים לדף Cloud SQL Instances במסוף Google Cloud .

    כניסה לדף Cloud SQL Instances

  2. לוחצים על השם של מכונת העתקה כדי לבחור אותה.
  3. לוחצים על קידום העותק.
  4. לוחצים על אישור.

gcloud

gcloud sql instances promote-replica REPLICA_NAME
  

REST v1

כדי להריץ את פקודת ה-cURL הזו בשורת הפקודה, צריך לקבל אסימון גישה באמצעות הפקודה gcloud auth print-access-token.

אפשר גם להשתמש ב- APIs Explorer בדף Instances:promoteReplica כדי לשלוח את בקשת API בארכיטקטורת REST.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • replica-name: השם של מכונת הרפליקה

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name/promoteReplica

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

REST v1beta4

כדי להריץ את פקודת ה-cURL הזו בשורת הפקודה, צריך לקבל אסימון גישה באמצעות הפקודה gcloud auth print-access-token.

אפשר גם להשתמש ב- APIs Explorer בדף Instances:promoteReplica כדי לשלוח את בקשת API בארכיטקטורת REST.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • replica-name: השם של מכונת הרפליקה

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name/promoteReplica

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

מוודאים שהמופע המקודם מוגדר בצורה נכונה. בפרט, כדאי להגדיר את המופע לזמינות גבוהה אם יש צורך בכך.

בדיקת סטטוס הרפליקציה

בשלב הזה, צריך להשתמש בשאילתות T-SQL או ב-SSMS כדי לעקוב אחרי סטטוס השכפול. למידע נוסף, קראו את המאמרים הבאים:

פתרון בעיות

שגיאה פתרון בעיות
השכפול של העותק לקריאה לא התחיל בזמן היצירה. סביר להניח שיש שגיאה ספציפית יותר בקובצי היומן. בודקים את היומנים ב-Cloud Logging כדי למצוא את השגיאה בפועל.
אי אפשר ליצור עותק לקריאה – השגיאה invalidFlagValue. אחד מהדגלים בבקשה לא תקין. יכול להיות שזה דגל שציינתם באופן מפורש או דגל שהוגדר לו ערך ברירת מחדל.

קודם כול, בודקים שהערך של הדגל max_connections גדול מהערך בשרת הראשי או שווה לו.

אם הדגל max_connections מוגדר בצורה מתאימה, בודקים את היומנים ב-Cloud Logging כדי למצוא את השגיאה בפועל.

לא ניתן ליצור עותק לקריאה – שגיאה לא ידועה. סביר להניח שיש שגיאה ספציפית יותר בקובצי היומן. בודקים את היומנים ב-Cloud Logging כדי למצוא את השגיאה בפועל.

אם השגיאה היא set Service Networking service account as servicenetworking.serviceAgent role on consumer project, אפשר ליצור באופן ידני את חשבון השירות הנדרש על ידי ביצוע ההוראות במאמר יצירה והקצאה של תפקידים לסוכני שירות.

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

מפעילים מחדש את מופע הרפליקה כדי לפנות את המקום הזמני בזיכרון.

השכפול הופסק. הגעתם למגבלת האחסון המקסימלית, ולא הפעלתם את האפשרות להגדלת נפח האחסון באופן אוטומטי.

עורכים את המופע כדי להפעיל את automatic storage increase.

ההשהיה בשכפול גבוהה באופן עקבי. עומס הכתיבה גבוה מדי בשביל העותק. השהיית שכפול מתרחשת כשהשרשור של SQL בעותק לא מצליח לעמוד בקצב של שרשור הקלט/פלט. סוגים מסוימים של שאילתות או עומסי עבודה עלולים לגרום להשהיה גבוהה זמנית או קבועה בשכפול של סכימה נתונה. חלק מהסיבות האופייניות לעיכוב בשכפול:
  • שאילתות איטיות בעותק המשוכפל. צריך לאתר את הבעיות ולתקן אותן.
  • שאילתות כמו DELETE ... WHERE field < 50000000 גורמות לפיגור בשכפול עם שכפול מבוסס-שורות, כי מספר עצום של עדכונים מצטבר בעותק המשוכפל.

הנה כמה פתרונות אפשריים:

  • עורכים את המופע כדי להגדיל את הגודל של העותק המשוכפל.
  • הפחתת העומס על מסד הנתונים.
  • הפניית תנועת קריאה אל העותק לקריאה בלבד.
  • יוצרים אינדקס לטבלאות.
  • זיהוי ותיקון של שאילתות כתיבה איטיות.
  • יוצרים את העותק המשוכפל מחדש.
יצירת העותק נכשלה בגלל פסק זמן. עסקאות ארוכות טווח שלא בוצעו במופע הראשי עלולות לגרום לכשל ביצירת רפליקה לקריאה.

אחרי שמפסיקים את כל השאילתות הפעילות, יוצרים מחדש את העותק.

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