בדף הזה מוסבר איך ליצור עותק לקריאה בלבד של מכונה ב-Cloud SQL.
רפליקה לקריאה היא עותק של המכונה הראשית שמשקף את השינויים במכונה הראשית כמעט בזמן אמת, בנסיבות רגילות. אתם יכולים להשתמש בעותק לקריאה בלבד כדי להפחית את העומס על המכונה הראשית שנוצר מבקשות קריאה או מתנועת ניתוח נתונים.
בנוסף, כדי להתאושש מאסון, אתם יכולים לבצע העברה אזורית. אם הרפליקה היא רפליקה חוצת-אזורים, אפשר לבצע יתירות כשל לאזור אחר. באופן ספציפי, אפשר לקדם רפליקה למכונה עצמאית (במקרה כזה, רפליקות קיימות לא יחשיבו את המכונה הזו כראשית).
למידע נוסף על אופן הפעולה של הרפליקציה, ראו רפליקציה ב-Cloud SQL.
לפני שמתחילים
אם אתם יוצרים את הרפליקה הראשונה של המכונה הזו, ודאו שהמכונה עומדת בדרישות למכונות ראשיות. מידע נוסף
יצירת עותק לקריאה בלבד
כך יוצרים עותק לקריאה בלבד:
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .
- מוצאים את המכונה שרוצים ליצור לה רפליקה ופותחים את התפריט
more actionsלצד הרשומה. - בוחרים באפשרות Create read replica.
אם האפשרות הזו לא מופיעה, המכונה היא רפליקה. אי אפשר ליצור רפליקה של רפליקה.
בקטע Customize your instance בדף, מעדכנים את ההגדרות של הרפליקה. כדי להתחיל, לוחצים על הצגת אפשרויות ההגדרה כדי להציג את קבוצות ההגדרות. אחר כך מרחיבים את הקבוצות הרצויות כדי לבדוק ולהתאים אישית את ההגדרות. בצד שמאל מופיע סיכום של כל האפשרויות שבחרתם. ההתאמה האישית של ההגדרות האלה היא אופציונלית. אם לא מבצעים התאמות אישיות, המערכת מקצה את ערכי ברירת המחדל.
מידע נוסף על כל הגדרה זמין בדף מידע על הגדרות המכונה.
לדוגמה, כדי לאפשר לשירותים אחרים של Cloud de Confiance by S3NS , כמו BigQuery, לגשת לנתונים ב-Cloud SQL ולבצע שאילתות על הנתונים האלה דרך חיבור פנימי, מרחיבים את הקבוצה Connections ומבטלים את הבחירה בתיבת הסימון Public IP.
- לוחצים על Create replica.
אם צריך, Cloud SQL יוצר גיבוי ואז יוצר את הרפליקה. המערכת תחזיר אתכם לדף המכונה של המכונה הראשית.
gcloud
יוצרים את הרפליקה:
gcloud sql instances create REPLICA_NAME \ --master-instance-name=MASTER_INSTANCE_NAME
אם צריך, אפשר לציין גודל שכבה אחר באמצעות הפרמטר --tier. בנוסף, אם אתם יוצרים רפליקה ממכונה ראשית, ומהדורת Cloud SQL של המכונה היא Enterprise או Enterprise Plus, גרסה 16 ואילך, אתם לא צריכים לציין ערך לפרמטר הזה. הרפליקה יורשת את סוג המכונה מהמכונה הראשית.
אפשר לציין אזור אחר באמצעות הפרמטר --region.
אם למכונה הראשית יש רק כתובת IP פנימית, ואתם רוצים לאפשר לשירותי Cloud de Confiance by S3NS אחרים, כמו BigQuery, לגשת לנתונים ב-Cloud SQL ולבצע שאילתות על הנתונים האלה באמצעות חיבור פנימי, הוסיפו את הפרמטר --enable-google-private-path לפקודה.
צריך ליצור את הרפליקה באותה רשת VPC שבה נמצא המכונה הראשית. אפשר גם לציין allocated-ip-range-name ברשת ה-VPC הזו. אם לא מצוין טווח, הרפליקה נוצרת בטווח אקראי.
Terraform
כדי ליצור רפליקה לקריאה בלבד, משתמשים במשאב של Terraform.
REST v1
משתמשים ב-method insert של המשאב instances כדי ליצור את הרפליקה לקריאה בלבד. המאפיינים region ו-databaseVersion חייבים להיות זהים לאלה של המאסטר.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- database-version: מחרוזת גרסה של Enum (לדוגמה, POSTGRES_12)
- primary-instance-name: השם של המכונה הראשית
- primary-instance-region: האזור של המכונה הראשית
- replica-region: האזור של המכונה המשוכפלת
- replica-name: השם של מכונת הרפליקה
- machine-type: מחרוזת של טיפוסים בני מנייה (enum) של סוג המכונה. לדוגמה: "db-custom-1-3840"
- private-network: הרשת המורשית שמוסיפים או בוחרים כדי ליצור חיבור פרטי.
אתם יכולים להשתמש בשדה sqlNetworkArchitecture כדי לאכוף את השימוש בארכיטקטורת הרשת החדשה במכונה בזמן היצירה, גם אם הפרויקט לא שודרג באופן מלא.
פרטים נוספים על ארכיטקטורת הרשת החדשה וההשלכות שלה מופיעים במאמרים
שדרוג מכונה לארכיטקטורת הרשת החדשה והקצאת טווח של כתובות IP.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances
תוכן בקשת JSON:
{
"masterInstanceName": "primary-instance-name",
"project": "project-id",
"databaseVersion": "database-version",
"name": "replica-name",
"region": "replica-region",
"settings":
{
"tier": "machine-type",
"settingsVersion": 0,
"ipConfiguration": {
object (IpConfiguration)
},
{
"ipv4Enabled": false,
"privateNetwork": private-network,
"requireSsl": boolean,
"authorizedNetworks": [
{
object (AclEntry)
}
],
"allocatedIpRange": string
}
},
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
REST v1beta4
משתמשים ב-method insert של המשאב instances כדי ליצור את הרפליקה לקריאה בלבד. המאפיינים region ו-databaseVersion חייבים להיות זהים לאלה של המאסטר.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- database-version: מחרוזת גרסה של Enum (לדוגמה, POSTGRES_12)
- primary-instance-name: השם של המכונה הראשית
- primary-instance-region: האזור של המכונה הראשית
- replica-region: האזור של המכונה המשוכפלת
- replica-name: השם של מכונת הרפליקה
- machine-type: מחרוזת של טיפוסים בני מנייה (enum) של סוג המכונה. לדוגמה: "db-custom-1-3840"
- private-network: הרשת המורשית שמוסיפים או בוחרים כדי ליצור חיבור פרטי.
אתם יכולים להשתמש בשדה sqlNetworkArchitecture כדי לאכוף את השימוש בארכיטקטורת הרשת החדשה במכונה בזמן היצירה, גם אם הפרויקט לא שודרג באופן מלא.
פרטים נוספים על ארכיטקטורת הרשת החדשה וההשלכות שלה מופיעים במאמרים
שדרוג מכונה לארכיטקטורת הרשת החדשה והקצאת טווח של כתובות IP.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances
תוכן בקשת JSON:
{
"masterInstanceName": "primary-instance-name",
"project": "project-id",
"databaseVersion": "database-version",
"name": "replica-name",
"region": "replica-region",
"settings":
{
"tier": "machine-type",
"settingsVersion": 0,
"ipConfiguration": {
object (IpConfiguration)
},
{
"ipv4Enabled": false,
"privateNetwork": private-network,
"requireSsl": boolean,
"authorizedNetworks": [
{
object (AclEntry)
}
],
"allocatedIpRange": string
}
},
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
יצירת עותק לקריאה בלבד של מכונה שמופעל בה Private Service Connect
כדי ליצור רפליקה לקריאה בלבד של מכונה שמופעל בה Private Service Connect, צריך להשתמש ב-ה-CLI של gcloud או ב-API. אתם יכולים ליצור את הרפליקה הזו באותו אזור או באזור שונה מהמכונה הראשית (רפליקה לקריאה בלבד בכמה אזורים).
הרפליקה לקריאה בלבד לא יכולה לשכפל ממכונה עם סוג קישוריות שונה. לדוגמה, מכונה שמופעל בה Private Service Connect יכולה לשכפל רק ממכונה אחרת של Private Service Connect. בנוסף, אי אפשר לשכפל ממכונה שתומכת בחיבורים של כתובות IP חיצוניות או ממכונה שמוגדרת עם גישה לשירותים פרטיים.
gcloud
כדי ליצור עותק לקריאה בלבד של מכונה, משתמשים בפקודה gcloud sql instances create:
gcloud sql instances create REPLICA_INSTANCE_NAME \ --master-instance-name=PRIMARY_INSTANCE_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --enable-private-service-connect \ --allowed-psc-projects=ALLOWED_PROJECTS \ --availability-type=AVAILABILITY_TYPE \ --no-assign-ip
מחליפים את הפרטים הבאים:
- REPLICA_INSTANCE_NAME: השם של מכונת הרפליקה.
- PRIMARY_INSTANCE_NAME: השם של המכונה הראשית.
- PROJECT_ID: המזהה או מספר הפרויקט ב- Cloud de Confiance שמכיל את המכונה.
- REGION_NAME: שם האזור של מכונת הרפליקה.
ALLOWED_PROJECTS: רשימה של מזהי פרויקטים או מספרי פרויקטים מותרים, מופרדים בפסיקים. אם פרויקט לא מופיע ברשימה הזו, אי אפשר להשתמש בו כדי ליצור מכונה ולהפעיל בה את Private Service Connect.
Cloud SQL לא מעתיק לרפליקה את הפרויקטים המורשים של המכונה הראשית. לכל רפליקה צריך ליצור נקודת קצה (endpoint) מסוג Private Service Connect. אם אתם משתמשים ב-Cloud SQL Auth Proxy או ב-Cloud SQL Language Connectors, צרו תחום DNS ורשומת DNS לרפליקות.
- AVAILABILITY_TYPE: הפעלת זמינות גבוהה למכונה. בפרמטר הזה, מציינים את אחד מהערכים הבאים:
-
REGIONAL: הפעלת זמינות גבוהה, מומלץ למכונות בסביבת הייצור. המכונה עוברת למצב של מעבר לגיבוי בעת כשל באזור אחר בתוך האזור שבחרתם. -
ZONAL: לא מספק יכולת יתירות כשל. זה ערך ברירת המחדל.
מידע נוסף על הגדרה והסרה של זמינות גבוהה למכונות זמין במאמרים הגדרת מכונה קיימת לזמינות גבוהה והשבתת זמינות גבוהה למכונה.
-
REST v1
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PRIMARY_INSTANCE_NAME: השם של המכונה הראשית.
- PROJECT_ID: המזהה או מספר הפרויקט ב- Cloud de Confiance שמכיל את המכונה.
- REPLICA_INSTANCE_NAME: השם של מכונת הרפליקה.
- REGION_NAME: שם האזור של מכונת הרפליקה.
- MACHINE_TYPE: סוג המכונה.
- AVAILABILITY_TYPE: הפעלת זמינות גבוהה למכונה. בפרמטר הזה, מציינים את אחד מהערכים הבאים:
-
REGIONAL: הפעלת זמינות גבוהה, מומלץ למכונות בסביבת הייצור. המכונה עוברת למצב של מעבר לגיבוי בעת כשל באזור אחר בתוך האזור שבחרתם. -
ZONAL: לא מספק יכולת יתירות כשל. זה ערך ברירת המחדל.
מידע נוסף על הגדרה והסרה של זמינות גבוהה למכונות זמין במאמרים הגדרת מכונה קיימת לזמינות גבוהה והשבתת זמינות גבוהה למכונה.
-
ALLOWED_PROJECTS: רשימה של מזהי פרויקטים או מספרי פרויקטים מותרים, מופרדים בפסיקים. אם פרויקט לא מופיע ברשימה הזו, אי אפשר להשתמש בו כדי ליצור מכונה ולהפעיל בה את Private Service Connect.
Cloud SQL לא מעתיק לרפליקה את הפרויקטים המורשים של המכונה הראשית. לכל רפליקה צריך ליצור נקודת קצה (endpoint) מסוג Private Service Connect. אם אתם משתמשים ב-Cloud SQL Auth Proxy או ב-Cloud SQL Language Connectors, אתם צריכים ליצור תחום DNS ורשומת DNS לרפליקות.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
תוכן בקשת JSON:
{
"masterInstanceName": "PRIMARY_INSTANCE_NAME",
"project": "PROJECT_ID",
"databaseVersion": "POSTGRES_13",
"name": "REPLICA_INSTANCE_NAME",
"region": "REGION_NAME",
"kind": "sql#instance",
"settings":
{
"tier": "MACHINE_TYPE",
"availabilityType": "AVAILABILITY_TYPE",
"settingsVersion": 0,
"ipConfiguration": {
"ipv4Enabled": false,
"pscConfig": {
"allowedConsumerProjects": [ALLOWED_PROJECTS],
"pscEnabled": true
}
},
"kind": "sql#settings",
"pricingPlan": "PER_USE",
"replicationType": "ASYNCHRONOUS",
"tier": "MACHINE_TYPE"
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/REPLICA_INSTANCE_NAME",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"operationType": "CREATE_REPLICA",
"name": "OPERATION_ID",
"targetId": "REPLICA_INSTANCE_NAME",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PRIMARY_INSTANCE_NAME: השם של המכונה הראשית.
- PROJECT_ID: המזהה או מספר הפרויקט ב- Cloud de Confiance שמכיל את המכונה.
- REPLICA_INSTANCE_NAME: השם של מכונת הרפליקה.
- REGION_NAME: שם האזור של מכונת הרפליקה.
- MACHINE_TYPE: סוג המכונה.
- AVAILABILITY_TYPE: הפעלת זמינות גבוהה למכונה. בפרמטר הזה, מציינים את אחד מהערכים הבאים:
-
REGIONAL: הפעלת זמינות גבוהה, מומלץ למכונות בסביבת הייצור. המכונה עוברת למצב של מעבר לגיבוי בעת כשל באזור אחר בתוך האזור שבחרתם. -
ZONAL: לא מספק יכולת יתירות כשל. זה ערך ברירת המחדל.
מידע נוסף על הגדרה והסרה של זמינות גבוהה למכונות זמין במאמרים הגדרת מכונה קיימת לזמינות גבוהה והשבתת זמינות גבוהה למכונה.
-
ALLOWED_PROJECTS: רשימה של מזהי פרויקטים או מספרי פרויקטים מותרים, מופרדים בפסיקים. אם פרויקט לא מופיע ברשימה הזו, אי אפשר להשתמש בו כדי ליצור מכונה ולהפעיל בה את Private Service Connect.
Cloud SQL לא מעתיק לרפליקה את הפרויקטים המורשים של המכונה הראשית. לכל רפליקה צריך ליצור נקודת קצה (endpoint) מסוג Private Service Connect. אם אתם משתמשים ב-Cloud SQL Auth Proxy או ב-Cloud SQL Language Connectors, אתם צריכים ליצור תחום DNS ורשומת DNS לרפליקות.
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances
תוכן בקשת JSON:
{
"masterInstanceName": "PRIMARY_INSTANCE_NAME",
"project": "PROJECT_ID",
"databaseVersion": "POSTGRES_13",
"name": "REPLICA_INSTANCE_NAME",
"region": "REGION_NAME",
"kind": "sql#instance",
"settings":
{
"tier": "MACHINE_TYPE",
"availabilityType": "AVAILABILITY_TYPE",
"settingsVersion": 0,
"ipConfiguration": {
"ipv4Enabled": false,
"pscConfig": {
"allowedConsumerProjects": [ALLOWED_PROJECTS],
"pscEnabled": true
}
},
"kind": "sql#settings",
"pricingPlan": "PER_USE",
"replicationType": "ASYNCHRONOUS",
"tier": "MACHINE_TYPE"
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE_NAME",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"operationType": "CREATE_REPLICA",
"name": "OPERATION_ID",
"targetId": "REPLICA_INSTANCE_NAME",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
הגדרת רפליקות לקריאה בלבד לאימות מסד נתונים באמצעות IAM
אם מפעילים את הדגלcloudsql.iam_authentication במכונה הראשית, Cloud SQL ל-PostgreSQL מפעיל אותו אוטומטית ברפליקות לקריאה בלבד. עם זאת, אם לא תפעילו את הדגל הזה במכונה הראשית, Cloud SQL ל-PostgreSQL לא יפעיל אותו ברפליקות לקריאה בלבד. אי אפשר להשתמש ברפליקות לאימות מסד נתונים של IAM.
כדי להגדיר עותק לקריאה בלבד לאימות של מסד נתונים ב-IAM:
-
נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .
- כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
- במשבצת Configuration, מחפשים את הדגל
cloudsql.iam_authentication. אם הדגל לא מופיע ברשימה, אין צורך להפעיל אותו ברפליקה לקריאה בלבד. אם הדגל מופיע ברשימה, צריך להפעיל אותו ברפליקה לקריאה בלבד. אם צריך להפעיל את הדגל ברפליקה לקריאה בלבד, ממשיכים לשלב הבא. - בתפריט הניווט של SQL, לוחצים על Replicas.
- לוחצים על שם הרפליקה שרוצים לערוך.
- לוחצים על Edit.
- בקטע Configuration options, מרחיבים את Flags.
- לוחצים על + הוספת פריט.
- מזינים את הערך
cloudsql.iam_authenticationבשם הדגל. מוודאים שהאפשרות מופעל נבחרה בדגל הזה. - לוחצים על Save.
יצירת רפליקות מדורגות
בקטע הזה מוסבר איך ליצור ולנהל רפליקות מדורגות.
במאמר רפליקות מדורגות מוסבר איך הן פועלות.
שלבים ליצירת רפליקה מדורגת
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .
- בכרטיסייה Replicas, לוחצים על הרפליקה שתשמש כהורה לרפליקה שרוצים ליצור.
- לוחצים על Create replica.
- בדף Create read replica, מעדכנים את מזהה המכונה ואת כל אפשרויות ההגדרה האחרות, כולל השם, האזור והתחום.
- לוחצים על יצירה.
מערכת Cloud SQL יוצרת רפליקה. המערכת תחזיר אתכם לדף המכונה של הרפליקה הראשית.
- חוזרים על שלבים 4 עד 6 לכל רפליקה מדורגת חדשה שרוצים ליצור.
gcloud
- יוצרים את הרפליקה החדשה על ידי ציון הרפליקה הראשית כמכונה הראשית באמצעות הדגל
--master-instance-name: - REPLICA_NAME: המזהה הייחודי של הרפליקה שיוצרים
- PARENT_REPLICA_NAME: השם של הרפליקה הראשית
- אחרי שיוצרים את הרפליקה המשורשרת, אפשר לראות שהשינויים שבוצעו במכונה הראשית משוכפלים בכל הרפליקות בשרשרת הרפליקות המשורשרות.
gcloud sql instances create REPLICA_NAME \ --master-instance-name=PARENT_REPLICA_NAME \
curl
- כדי ליצור רפליקה מתחת לרפליקת ההורה, עורכים את דוגמת הקוד הבאה ב-JSON ושומרים אותה בקובץ בשם
request.json:{ "masterInstanceName": "PARENT_REPLICA_NAME", "project": "PROJECT_ID", "name": "REPLICA_NAME", "region": "REPLICA_REGION", "settings": { "tier": "MACHINE_TYPE", } }
- מריצים את הפקודה הבאה:
curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" -d @request.json "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances"
פתרון בעיות
| שגיאה | פתרון בעיות |
|---|---|
| הרפליקה לקריאה בלבד לא התחילה לשכפל בזמן היצירה. | סביר להניח שיש שגיאה ספציפית יותר בקובצי היומן. בודקים את היומנים ב-Cloud Logging כדי למצוא את השגיאה בפועל. |
| לא ניתן ליצור עותק לקריאה בלבד – שגיאת invalidFlagValue. | אחד מהדגלים בבקשה לא תקין. יכול להיות שזה דגל שציינתם במפורש או דגל שהוגדר לערך ברירת מחדל.
קודם כל, בודקים שהערך של הדגל אם הדגל |
| לא ניתן ליצור עותק לקריאה בלבד – שגיאה לא ידועה. | סביר להניח שיש שגיאה ספציפית יותר בקובצי היומן.
בודקים את היומנים ב-Cloud Logging כדי למצוא את השגיאה בפועל.
אם השגיאה היא |
| הדיסק מלא. | גודל הדיסק של המכונה הראשית יכול להתמלא במהלך יצירת הרפליקה. עורכים את המכונה הראשית כדי לשדרג אותה לגודל דיסק גדול יותר. |
| המקום בכונן גדל באופן משמעותי. | אם יש משבצת שלא משמשת באופן פעיל למעקב אחרי נתונים, PostgreSQL שומר את מקטעי ה-WAL ללא הגבלת זמן, וכך המקום בכונן גדל ללא הגבלת זמן. אם אתם משתמשים בתכונות שכפול לוגי ופענוח ב-Cloud SQL, משבצות השכפול נוצרות ומוסרות באופן אוטומטי. כדי לזהות משבצות רפליקציה שלא בשימוש, אפשר לשלוח שאילתה לתצוגת המערכת pg_replication_slots ולסנן לפי העמודה active. אפשר להסיר משבצות שלא בשימוש כדי להסיר מקטעי WAL באמצעות הפקודה pg_drop_replication_slot.
|
| מופע הרפליקה משתמש ביותר מדי זיכרון. | הרפליקה משתמשת בזיכרון זמני כדי לשמור במטמון פעולות קריאה שמתבקשות לעיתים קרובות, מה שעלול לגרום לה להשתמש ביותר זיכרון מאשר המכונה הראשית.
מפעילים מחדש את מכונת הרפליקה כדי לפנות את שטח הזיכרון הזמני. |
| השכפול הופסק. | הגעתם למגבלת האחסון המקסימלית, וההגדלה האוטומטית של נפח האחסון לא מופעלת.
עורכים את המכונה כדי להפעיל את |
| השהיית השכפול גבוהה באופן עקבי. | עומס הכתיבה גבוה מדי והרפליקה לא יכולה לטפל בו. השהיית שכפול מתרחשת כשה-SQL thread ברפליקה לא מצליח לעמוד בקצב של ה-IO thread. סוגים מסוימים של שאילתות או עומסי עבודה יכולים לגרום לעיכוב זמני או קבוע ברפליקציה של סכימה מסוימת. חלק מהסיבות הנפוצות לעיכוב ברפליקציה הן:
פתרונות אפשריים:
|
| שגיאות במהלך בנייה מחדש של אינדקסים ב-PostgreSQL 9.6. | קיבלתם הודעת שגיאה מ-PostgreSQL שמודיעה שצריך לבנות מחדש אינדקס מסוים. אפשר לעשות את זה רק במכונה הראשית. אם תיצרו מכונת רפליקה חדשה, תקבלו שוב את אותה הודעת שגיאה.
בגרסאות PostgreSQL שמתחת ל-10, אינדקסים של גיבוב (hash) לא מופצים לרפליקות.
אם אתם חייבים להשתמש באינדקסי גיבוב, שדרגו ל-PostgreSQL 10 ואילך. אחרת, אם אתם רוצים להשתמש גם ברפליקות, אל תשתמשו באינדקסי גיבוב ב-PostgreSQL 9.6. |
| השאילתה במכונה הראשית תמיד פועלת. | אחרי שיוצרים רפליקה, השאילתה SELECT * from pg_stat_activity where state = 'active' and pid = XXXX and username = 'cloudsqlreplica' אמורה לפעול באופן רציף במכונה הראשית.
|
| יצירת הרפליקה נכשלת בגלל זמן קצוב לתפוגה. | טרנזקציות ארוכות שלא בוצעו במכונה הראשית יכולות לגרום לכך שהיצירה של רפליקה לקריאה בלבד תיכשל.
יוצרים מחדש את הרפליקה אחרי שעוצרים את כל השאילתות שפועלות. |
| אם למכונה הראשית ולרפליקה יש גדלים שונים של vCPU, יכולות להיות בעיות בביצועי השאילתות כי הכלי לאופטימיזציה של שאילתות מביא בחשבון את גודלי ה-vCPU. |
כדי לפתור את הבעיה:
אם מדובר בשאילתה ספציפית, צריך לשנות אותה. לדוגמה, אתם יכולים לשנות את סדר הצירופים כדי לבדוק אם הביצועים משתפרים. |