בדף הזה מוסבר איך לנהל רפליקות לקריאה בלבד. הפעולות האלה כוללות השבתה והפעלה של רפליקציה, קידום של רפליקה, הגדרה של רפליקציה מקבילה ובדיקה של סטטוס הרפליקציה.
למידע נוסף על אופן הפעולה של הרפליקציה, ראו רפליקציה ב-Cloud SQL.
הדף הזה רלוונטי לרפליקות של מכונה ב-Cloud SQL. כדי להגדיר מכונה של Cloud SQL שתפעל כמפרסם למנוי חיצוני, קראו את המאמר הגדרת רפליקות חיצוניות.
השבתת הרפליקציה
כברירת מחדל, הרפליקה מתחילה כשהרפליקציה מופעלת. עם זאת, אתם יכולים להשבית את הרפליקציה, למשל כדי לנפות באגים או לנתח את המצב של מכונה. כשתהיו מוכנים, תוכלו להפעיל מחדש את הרפליקציה באופן מפורש. השבתה או הפעלה מחדש של הרפליקציה לא מפעילה מחדש את מכונת הרפליקה.
השבתת הרפליקציה לא עוצרת את מכונת הרפליקה, אלא הופכת אותה למכונה לקריאה בלבד שלא משכפלת יותר מהמכונה הראשית שלה. החיוב על המכונה יימשך. ברפליקה המושבתת, אפשר להפעיל מחדש את הרפליקציה, למחוק את הרפליקה או לקדם את הרפליקה למכונה עצמאית.
כשמשביתים את הרפליקציה לפרק זמן ארוך, יכול להיות שדרישות האחסון בדיסק יגדלו. לדוגמה, יכול להיות שהמכונה תצבור יומני טרנזקציות כדי לאפשר לכם להמשיך את הרפליקציה כשתפעילו אותה מחדש. כדי להימנע מהגדלת דרישות האחסון בדיסק, במקום להשבית את הרפליקציה לפרק זמן ארוך, כדאי לקדם את הרפליקה או ליצור שכפול של המכונה הראשית.
כדי להשבית את הרפליקציה:
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- לוחצים על השם של מכונת הרפליקה.
- בסרגל הלחצנים, לוחצים על Disable replication.
- לוחצים על 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 שדומה לזו:
הפעלת הרפליקציה
אם רפליקה לא שוכפלה במשך זמן רב, ייקח לה יותר זמן להדביק את הפער מול המכונה הראשית. במקרה כזה, צריך למחוק את הרפליקה וליצור אחת חדשה.
כדי להפעיל את הרפליקציה:
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- לוחצים על השם של מכונת הרפליקה.
- לוחצים על Enable replication.
- לוחצים על אישור.
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). אפשר להפעיל זמינות גבוהה אחרי שמקדמים את הרפליקה, בדיוק כמו שמפעילים אותה בכל מכונה שהיא לא רפליקה. ההגדרה של רפליקה לקריאה בלבד לזמינות גבוהה מתבצעת באותו אופן כמו במכונה ראשית. מידע נוסף על הגדרת המכונה לזמינות גבוהה
לפני שמקדמים עותק לקריאה בלבד, אם המכונה הראשית עדיין זמינה ומשרתת לקוחות, צריך לבצע את הפעולות הבאות:
- מפסיקים את כל פעולות הכתיבה למכונה הראשית.
- בודקים את סטטוס הרפליקציה של הרפליקה. אחת מהאפשרויות היא להשתמש במרכז הבקרה Always On Availability Group ב-SQL Server Management Studio (SSMS).
- מוודאים שהרפליקה משוכפלת, ואז בודקים את השהיית השכפול, למשל כפי שדווחה על ידי המדד
seconds_behind_master. - משתמשים בפרוצדורה המאוחסנת
sp_help_revloginכדי לייצא את כל פרטי ההתחברות שנוצרו במכונה הראשית אחרי שנוצרה הרפליקה, ויוצרים אותם מחדש ברפליקה.
אחרת, יכול להיות שטרנזקציות מסוימות שבוצעו במכונה הראשית לא יופיעו במכונה שקודמה.
כדי לקדם רפליקה למכונה עצמאית:
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- לוחצים על השם של מכונת הרפליקה.
- לוחצים על Promote replica.
- לוחצים על אישור.
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. | אחד מהדגלים בבקשה לא תקין. יכול להיות שזה דגל שציינתם במפורש או דגל שהוגדר לערך ברירת מחדל.
קודם כל, בודקים שהערך של הדגל אם הדגל |
| לא ניתן ליצור עותק לקריאה בלבד – שגיאה לא ידועה. | סביר להניח שיש שגיאה ספציפית יותר בקובצי היומן.
בודקים את היומנים ב-Cloud Logging כדי למצוא את השגיאה בפועל.
אם השגיאה היא |
| הדיסק מלא. | גודל הדיסק של המכונה הראשית יכול להתמלא במהלך יצירת הרפליקה. עורכים את המכונה הראשית כדי לשדרג אותה לגודל דיסק גדול יותר. |
| מופע הרפליקה משתמש ביותר מדי זיכרון. | הרפליקה משתמשת בזיכרון זמני כדי לשמור במטמון פעולות קריאה שמתבקשות לעיתים קרובות, מה שעלול לגרום לה להשתמש ביותר זיכרון מאשר המכונה הראשית.
מפעילים מחדש את מכונת הרפליקה כדי לפנות את שטח הזיכרון הזמני. |
| השכפול הופסק. | הגעתם למגבלת האחסון המקסימלית, וההגדלה האוטומטית של נפח האחסון לא מופעלת.
עורכים את המכונה כדי להפעיל את |
| השהיית השכפול גבוהה באופן עקבי. | עומס הכתיבה גבוה מדי והרפליקה לא יכולה לטפל בו. השהיית שכפול מתרחשת כשה-SQL thread ברפליקה לא מצליח לעמוד בקצב של ה-IO thread. סוגים מסוימים של שאילתות או עומסי עבודה יכולים לגרום לעיכוב זמני או קבוע ברפליקציה של סכימה מסוימת. חלק מהסיבות הנפוצות לעיכוב ברפליקציה הן:
פתרונות אפשריים:
|
| יצירת הרפליקה נכשלת בגלל זמן קצוב לתפוגה. | טרנזקציות ארוכות שלא בוצעו במכונה הראשית יכולות לגרום לכך שהיצירה של רפליקה לקריאה בלבד תיכשל.
יוצרים מחדש את הרפליקה אחרי שעוצרים את כל השאילתות שפועלות. |