בדף הזה מוסבר איך ליצור העתק לקריאה של מכונת Cloud SQL.
רפליקה לקריאה היא עותק של המופע הראשי שמשקף שינויים במופע הראשי כמעט בזמן אמת, בנסיבות רגילות. אפשר להשתמש בעותק לקריאה כדי להפחית את העומס על המכונה הראשית שנוצר מבקשות קריאה או מתעבורת נתונים של ניתוח נתונים.
בנוסף, עבור תוכנית התאוששות מאסון (DR), אפשר לבצע העברה אזורית. אם הרפליקה היא רפליקה בין אזורים, אפשר לבצע מעבר לגיבוי בענן לאזור אחר. במילים אחרות, אפשר להפוך רפליקה למופע עצמאי (במקרה כזה, רפליקות קיימות לא יתייחסו למופע הזה כאל מופע ראשי).
מידע נוסף על אופן הפעולה של רפליקציה זמין במאמר רפליקציה ב-Cloud SQL.
לפני שמתחילים
אם אתם יוצרים את העותק הראשון של המופע הזה, אתם צריכים לוודא שהמופע עומד בדרישות של מופעים ראשיים. מידע נוסף
יצירת עותק לקריאה
בהמשך מפורטים השלבים ליצירת עותק לקריאה.
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- מחפשים את המופע שרוצים ליצור לו העתק, ואז פותחים את התפריט
more actionsלצד כרטיס המוצר. - בוחרים באפשרות יצירת עותק לקריאה.
אם האפשרות הזו לא מופיעה, סימן שהמופע הוא העתק. אי אפשר ליצור העתק של העתק.
בקטע Customize your instance בדף, מעדכנים את ההגדרות של העותק. כדי להציג את קבוצות ההגדרות, לוחצים על הצגת אפשרויות ההגדרה. לאחר מכן, מרחיבים את הקבוצות הרצויות כדי לבדוק את ההגדרות ולהתאים אותן אישית. סיכום של כל האפשרויות שבחרתם יופיע בצד שמאל. התאמה אישית של ההגדרות האלה היא אופציונלית. ערכי ברירת מחדל מוקצים בכל מקרה שבו לא בוצעו התאמות אישיות.
מידע נוסף על כל הגדרה מופיע בדף מידע על הגדרות של מופעים.
לדוגמה, כדי לאפשר לשירותים אחרים, כמו BigQuery, לגשת לנתונים ב-Cloud SQL ולשלוח שאילתות לגבי הנתונים האלה דרך חיבור פנימי, מרחיבים את הקבוצה Connections ומבטלים את הסימון בתיבת הסימון Public IP. Google Cloud
- לוחצים על יצירת העתק.
מערכת Cloud SQL יוצרת גיבוי, אם צריך, ואז יוצרת את העותק המשוכפל. אתם חוזרים לדף המופע של השרת הראשי.
gcloud
יוצרים את העותק:
gcloud sql instances create REPLICA_NAME \ --master-instance-name=MASTER_INSTANCE_NAME
אם צריך, אפשר לציין גודל אחר של רמת מחיר באמצעות הפרמטר --tier. בנוסף, אם יוצרים העתק ממופע ראשי, והמהדורה של Cloud SQL עבור המופע היא Enterprise או Enterprise Plus, גרסה 16 ואילך, לא צריך לציין ערך לפרמטר הזה. ההעתק משכפל את סוג המכונה מהמופע הראשי.
אפשר לציין אזור אחר באמצעות הפרמטר --region.
אם למופע הראשי יש רק כתובת IP פנימית, ואתם רוצים לאפשר לשירותים אחרים, כמו BigQuery, לגשת לנתונים ב-Cloud SQL ולבצע שאילתות על הנתונים האלה דרך חיבור פנימי, אתם צריכים להוסיף את הפרמטר --enable-google-private-path לפקודה. Google Cloud
צריך ליצור את העותק המשוכפל באותה רשת VPC שבה נמצאת המכונה הראשית. אפשר גם לציין allocated-ip-range-name ברשת ה-VPC הזו. אם לא מציינים טווח, העותק נוצר בטווח אקראי.
Terraform
כדי ליצור העתק לקריאה, משתמשים במשאב של Terraform.
REST v1
משתמשים בשיטה insert של משאב המכונות כדי ליצור את העותק לקריאה. המאפיינים 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
משתמשים בשיטה insert של משאב המכונות כדי ליצור את העותק לקריאה. המאפיינים 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 מופעל, משתמשים ב-gcloud CLI או ב-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: המזהה או מספר הפרויקט של פרויקט Google Cloud שמכיל את המופע.
- REGION_NAME: שם האזור של מכונת הרפליקה.
ALLOWED_PROJECTS: רשימה של מספרי פרויקטים או מזהי פרויקטים מותרים, מופרדים בפסיקים. אם פרויקט לא מופיע ברשימה הזו, אי אפשר להשתמש בו כדי ליצור מופע ולהפעיל בו את Private Service Connect.
Cloud SQL לא מעתיק את הפרויקטים המורשים למופע הראשי אל העותק המשוכפל. לכל העתק צריך ליצור נקודת קצה מסוג Private Service Connect. אם אתם משתמשים בשרת proxy ל-Cloud SQL Auth או במחברי שפות ל-Cloud SQL, אתם צריכים ליצור תחום DNS ורשומת DNS לרפליקות.
- AVAILABILITY_TYPE: הפעלת זמינות גבוהה של המכונה. לפרמטר הזה, מציינים אחד מהערכים הבאים:
-
REGIONAL: הפעלה של זמינות גבוהה. מומלץ למופעים בסביבת ייצור. המופע עובר לזמינות חלקית באזור אחר בתוך האזור שנבחר. ZONAL: לא מספקות יכולת מעבר לגיבוי (failover). זה ערך ברירת המחדל.
מידע נוסף על הגדרה והסרה של זמינות גבוהה למופעים זמין במאמרים הגדרת זמינות גבוהה למופע קיים והשבתת זמינות גבוהה למופע.
-
REST v1
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PRIMARY_INSTANCE_NAME: השם של המכונה הראשית.
- PROJECT_ID: המזהה או מספר הפרויקט של פרויקט Google Cloud שמכיל את המופע.
- REPLICA_INSTANCE_NAME: השם של מופע ההעתקה.
- REGION_NAME: שם האזור של מכונת הרפליקה.
- MACHINE_TYPE: סוג המכונה של המופע.
- AVAILABILITY_TYPE: הפעלת זמינות גבוהה של המכונה. לפרמטר הזה, מציינים אחד מהערכים הבאים:
-
REGIONAL: הפעלה של זמינות גבוהה. מומלץ למופעים בסביבת ייצור. המופע עובר לזמינות חלקית באזור אחר בתוך האזור שנבחר. ZONAL: לא מספקות יכולת מעבר לגיבוי (failover). זה ערך ברירת המחדל.
מידע נוסף על הגדרה והסרה של זמינות גבוהה למופעים זמין במאמרים הגדרת זמינות גבוהה למופע קיים והשבתת זמינות גבוהה למופע.
-
ALLOWED_PROJECTS: רשימה של מספרי פרויקטים או מזהי פרויקטים מותרים, מופרדים בפסיקים. אם פרויקט לא מופיע ברשימה הזו, אי אפשר להשתמש בו כדי ליצור מופע ולהפעיל בו את Private Service Connect.
Cloud SQL לא מעתיק את הפרויקטים המורשים למופע הראשי אל העותק המשוכפל. לכל העתק צריך ליצור נקודת קצה מסוג Private Service Connect. אם אתם משתמשים בשרת proxy ל-Cloud SQL Auth או במחברי שפה ל-Cloud SQL, אתם צריכים ליצור תחום 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: המזהה או מספר הפרויקט של פרויקט Google Cloud שמכיל את המופע.
- REPLICA_INSTANCE_NAME: השם של מופע ההעתקה.
- REGION_NAME: שם האזור של מכונת הרפליקה.
- MACHINE_TYPE: סוג המכונה של המופע.
- AVAILABILITY_TYPE: הפעלת זמינות גבוהה של המכונה. לפרמטר הזה, מציינים אחד מהערכים הבאים:
-
REGIONAL: הפעלה של זמינות גבוהה. מומלץ למופעים בסביבת ייצור. המופע עובר לזמינות חלקית באזור אחר בתוך האזור שנבחר. ZONAL: לא מספקות יכולת מעבר לגיבוי (failover). זה ערך ברירת המחדל.
מידע נוסף על הגדרה והסרה של זמינות גבוהה למופעים זמין במאמרים הגדרת זמינות גבוהה למופע קיים והשבתת זמינות גבוהה למופע.
-
ALLOWED_PROJECTS: רשימה של מספרי פרויקטים או מזהי פרויקטים מותרים, מופרדים בפסיקים. אם פרויקט לא מופיע ברשימה הזו, אי אפשר להשתמש בו כדי ליצור מופע ולהפעיל בו את Private Service Connect.
Cloud SQL לא מעתיק את הפרויקטים המורשים למופע הראשי אל העותק המשוכפל. לכל העתק צריך ליצור נקודת קצה מסוג Private Service Connect. אם אתם משתמשים בשרת proxy ל-Cloud SQL Auth או במחברי שפה ל-Cloud SQL, אתם צריכים ליצור תחום 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 for PostgreSQL מפעיל אותו אוטומטית בעותקי הקריאה. עם זאת, אם לא מפעילים את ה-flag הזה במופע הראשי, Cloud SQL ל-PostgreSQL לא מפעיל אותו בעותקי הקריאה. אי אפשר להשתמש בעותקים המשוכפלים לאימות מסד נתונים של IAM.
כדי להגדיר רפליקה לקריאה לאימות מסד נתונים ב-IAM:
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
- בכרטיס ההגדרה, מחפשים את הדגל
cloudsql.iam_authentication. אם הדגל לא מופיע ברשימה, אין צורך להפעיל אותו בעותק לקריאה. אם הדגל מופיע ברשימה, צריך להפעיל אותו בעותק לקריאה. אם צריך להפעיל את הדגל ב-read replica, ממשיכים לשלב הבא. - בתפריט הניווט של SQL, בוחרים באפשרות Replicas (רפליקות).
- לוחצים על השם של העותק שרוצים לערוך.
- לוחצים על Edit.
- בקטע Configuration options (אפשרויות הגדרה), מרחיבים את Flags (דגלים).
- בוחרים באפשרות + הוספה.
- מזינים
cloudsql.iam_authenticationבשם הדגל. מוודאים שהאפשרות On (מופעל) מסומנת בשביל הדגל הזה. - לוחצים על Save.
יצירת רפליקות מדורגות
בקטע הזה מוסבר איך ליצור ולנהל רפליקות מדורגות.
מידע על אופן הפעולה של שכפול מדורג זמין במאמר שכפול מדורג.
שלבים ליצירת העתק מדורג
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- לוחצים על הכרטיסייה Replicas (עותקים) של העותק שישמש כעותק אב לעותק שרוצים ליצור.
- לוחצים על יצירת העתק.
- בדף 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 ללא הגבלה, וכך גודל שטח הדיסק גדל ללא הגבלה. אם משתמשים בתכונות logical replication and decoding ב-Cloud SQL, משבצות השכפול נוצרות ומוסרות באופן אוטומטי. אפשר לזהות חריצי שכפול שלא נעשה בהם שימוש על ידי שליחת שאילתה לתצוגת המערכת pg_replication_slots וסינון לפי העמודה active. אפשר להשתמש בפקודה pg_drop_replication_slot כדי להסיר פלחים של WAL על ידי השמטה של משבצות שלא נעשה בהן שימוש.
|
| מופע הרפליקה משתמש ביותר מדי זיכרון. | העותק משתמש בזיכרון זמני כדי לשמור במטמון פעולות קריאה שמבוקשות לעיתים קרובות, מה שעלול לגרום לו להשתמש ביותר זיכרון מהמופע הראשי.
מפעילים מחדש את מופע הרפליקה כדי לפנות את המקום הזמני בזיכרון. |
| השכפול הופסק. | הגעתם למגבלת האחסון המקסימלית ולא הפעלתם את האפשרות להגדלת נפח האחסון באופן אוטומטי.
עורכים את המופע כדי להפעיל את |
| ההשהיה בשכפול גבוהה באופן עקבי. | עומס הכתיבה גבוה מדי בשביל העותק. השהיית שכפול
מתרחשת כשה-SQL thread בעותק לא מצליח לעמוד בקצב של ה-IO thread. סוגים מסוימים של שאילתות או עומסי עבודה עלולים לגרום לעיכובים זמניים או קבועים בשכפול של סכימה נתונה. חלק מהסיבות האופייניות לעיכוב בשכפול:
הנה כמה פתרונות אפשריים:
|
| שגיאות כשיוצרים מחדש אינדקסים ב-PostgreSQL 9.6. | קיבלתם שגיאה מ-PostgreSQL שמציינת שצריך לבנות מחדש אינדקס מסוים. אפשר לעשות את זה רק במופע הראשי. אם תיצרו מכונת רפליקה חדשה, השגיאה תחזור תוך זמן קצר.
אינדקסים של Hash
לא מועברים לרפליקות בגרסאות PostgreSQL מתחת ל-10.
אם אתם חייבים להשתמש באינדקסים של hash, אתם צריכים לשדרג ל-PostgreSQL 10 ומעלה. אחרת, אם אתם רוצים להשתמש גם בעותקים משוכפלים, אל תשתמשו באינדקסים של hash ב-PostgreSQL 9.6. |
| השאילתה במופע הראשי תמיד פועלת. | אחרי שיוצרים העתק, השאילתה SELECT * from pg_stat_activity where state = 'active' and pid = XXXX and username = 'cloudsqlreplica' אמורה לפעול באופן רציף במופע הראשי.
|
| יצירת העותק נכשלה בגלל פסק זמן. | עסקאות ארוכות טווח שלא בוצעו במופע הראשי עלולות לגרום לכך שיצירת העתק לקריאה תיכשל.
צריך ליצור מחדש את העותק אחרי שמפסיקים את כל השאילתות הפעילות. |
| אם למופע הראשי ולרפליקה יש גדלים שונים של vCPU, יכול להיות שיהיו בעיות בביצועי השאילתות, כי כלי האופטימיזציה של השאילתות לוקח בחשבון את הגדלים של ה-vCPU. |
כדי לפתור את הבעיה, מבצעים את השלבים הבאים:
אם מדובר בשאילתה ספציפית, צריך לשנות את השאילתה. לדוגמה, אפשר לשנות את סדר הצירופים כדי לראות אם הביצועים משתפרים. |