יצירת עותקים לקריאה

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

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

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

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

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

לפני שמתחילים

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

יצירת עותק לקריאה

כשיוצרים עותק לקריאה, חשוב לזכור את הנקודות הבאות:

  • אפשר ליצור עד 8 עותקים לקריאה לכל מופע ראשי.
  • אם לא מציינים מהדורה, ברירת המחדל היא מהדורת Cloud SQL Enterprise.
  • אם כשיוצרים רפליקה לקריאה או רפליקה מדורגת, המקור הוא מופע של מהדורת Cloud SQL Enterprise Plus, צריך לציין את המהדורה והרמה שרוצים להשתמש בהן.

בהמשך מפורטים השלבים ליצירת עותק לקריאה.

המסוף

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

    כניסה לדף Cloud SQL Instances

  2. מחפשים את המופע שרוצים ליצור לו רפליקה, ואז פותחים את התפריט more actions לצד כרטיס המוצר.
  3. בוחרים באפשרות יצירת עותק לקריאה.

    אם האפשרות הזו לא מופיעה, סימן שהמופע הוא העתק. אי אפשר ליצור העתק של העתק.

  4. בקטע Customize your instance (התאמה אישית של המופע), מעדכנים את ההגדרות של הרפליקה. כדי להציג את קבוצות ההגדרות, לוחצים על הצגת אפשרויות ההגדרה. לאחר מכן, מרחיבים את הקבוצות הרצויות כדי לבדוק ולהתאים אישית את ההגדרות. סיכום של כל האפשרויות שבחרתם מופיע בצד שמאל. התאמה אישית של ההגדרות האלה היא אופציונלית. ערכי ברירת מחדל מוקצים בכל מקרה שבו לא בוצעו התאמות אישיות.

    מידע נוסף על כל הגדרה מופיע בדף מידע על הגדרות של מופעים.

  5. לוחצים על יצירת העתק.

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

gcloud

יוצרים את הרפליקה:

gcloud sql instances create REPLICA_NAME \
--master-instance-name=PRIMARY_INSTANCE_NAME
  

אם צריך, אפשר לציין גודל שונה של רמת מחיר באמצעות הפרמטר --tier.

אפשר לציין אזור אחר באמצעות הפרמטר --region.

אם למכונה הראשית יש רק כתובת IP פנימית, מוסיפים את הפרמטר --no-assign-ip לפקודה.

אפשר להוסיף עוד פרמטרים להגדרות אחרות של המופע. מידע נוסף זמין במאמר בנושא gcloud sql instances create.

צריך ליצור את הרפליקה באותה רשת VPC שבה נמצאת המכונה הראשית. אפשר גם לציין allocated-ip-range-name באותה רשת VPC. אם לא מציינים טווח, הרפליקה נוצרת בטווח אקראי.

Terraform

כדי ליצור העתק לקריאה, משתמשים במשאב של Terraform.

resource "google_sql_database_instance" "read_replica" {
  name                 = "sqlserver-replica-instance-name"
  master_instance_name = google_sql_database_instance.primary.name
  region               = "europe-west4"
  database_version     = "SQLSERVER_2019_ENTERPRISE"
  root_password        = "INSERT-PASSWORD-HERE"
  replica_configuration {
    failover_target = false
  }

  settings {
    tier              = "db-custom-2-7680"
    availability_type = "ZONAL"
    disk_size         = "100"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

REST v1beta4

משתמשים בשיטה insert של משאב המכונות כדי ליצור את הרפליקה לקריאה. המאפיינים region ו-databaseVersion צריכים להיות זהים למאפיינים בשרת הראשי.

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

  • project-id: מזהה הפרויקט
  • database-version: מחרוזת גרסה של enum (לדוגמה, SQLSERVER_2017_ENTERPRISE)
  • primary-instance-name: השם של המופע הראשי
  • primary-instance-region: האזור של המכונה הראשית
  • replica-region: האזור של מכונת הרפליקה
  • replica-name: השם של מכונת הרפליקה
  • machine-type: מחרוזת enum של סוג המכונה. לדוגמה: db-custom-1-3840

אפשר להשתמש בשדה 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,
    
  },
  "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: המזהה או מספר הפרויקט של 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": "SQLSERVER_2019_STANDARD",
  "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": "SQLSERVER_2019_STANDARD",
  "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"
}

יצירת רפליקות מדורגות

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

מידע על שכפול מדורג זמין במאמר שכפול מדורג.

לפני שמתחילים

למופע הראשי חייבת להיות רפליקה שאפשר להעביר אליה את הנתונים. בקטע הבא מוסבר איך ליצור רפליקה שניתנת להעברה.

שלבים ליצירת רפליקה שניתנת להעברה

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

gcloud

כדי ליצור את הרפליקה החדשה, מציינים את המופע הראשי באמצעות הדגל --master-instance-name ומשתמשים בדגל --cascadable-replica:

gcloud sql instances create REPLICA_NAME \
   --master-instance-name=PRIMARY_INSTANCE_NAME \
   --cascadable-replica \
   --region=REGION

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

  • REPLICA_NAME: המזהה הייחודי של הרפליקה שאתם יוצרים.
  • PRIMARY_INSTANCE_NAME: השם של המכונה הראשית.
  • REGION: האזור שבו רוצים ליצור את הרפליקה החדשה. האזור הזה צריך להיות שונה מהאזור של המופע הראשי.

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

אפשר להוסיף עוד פרמטרים להגדרות אחרות של המופע. לדוגמה,

  • אפשר לציין גודל אחר של רמת המכונה באמצעות הפרמטר --tier.
  • אם למופע הראשי יש רק כתובת IP פרטית, צריך להוסיף את הפרמטר --no-assign-ip לפקודה.

מידע נוסף על הוספת פרמטרים להגדרות של מכונות זמין במאמר gcloud sql instances create.

אחרי שיוצרים רפליקה עם אפשרות להעברה, אפשר ליצור רפליקה עם העברה.

curl

  1. כדי ליצור רפליקה שניתנת להעברה מתחת למופע הראשי, עורכים את דוגמת קוד ה-JSON הבאה ושומרים אותה בקובץ בשם request.json.

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

    • PROJECT_ID: מזהה הפרויקט.
    • DATABASE_VERSION: מחרוזת enum של גרסת מסד הנתונים. לדוגמה, SQLSERVER_2017_ENTERPRISE..
    • PRIMARY_INSTANCE_NAME: השם של המכונה הראשית.
    • PRIMARY_INSTANCE_REGION: האזור של המכונה הראשית.
    • REPLICA_REGION: האזור של מכונת הרפליקה.
    • REPLICA_NAME: השם של מכונת הרפליקה.
    • MACHINE_TYPE: מחרוזת enum של סוג המכונה. לדוגמה, db-custom-2-3840.
    {
      "masterInstanceName": "PRIMARY_INSTANCE_NAME",
      "project": "PROJECT_ID",
      "databaseVersion": "DATABASE_VERSION"
      "name": "REPLICA_NAME",
      "region": "REPLICA_REGION",
      "settings":
        {
          "tier": "MACHINE_TYPE",
          "settingsVersion": 0,
        }
        "replicaConfiguration":
        {
         "cascadableReplica": true
        }
    }
  2. בקטע replicaConfiguration, מוודאים שהשדה cascadadableReplica מוגדר לערך true.
  3. מריצים את הפקודה הבאה:
    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"

אחרי שיוצרים רפליקה עם אפשרות להעברה, אפשר ליצור רפליקה עם העברה.

Terraform

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

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

resource "google_sql_database_instance" "original-primary" {
  name   = "sqlserver-primary-instance-name"
  region = "us-east1"
  # Specify a database version that supports Cloud SQL Enterprise Plus edition.
  database_version = "SQLSERVER_2022_ENTERPRISE"
  instance_type    = "CLOUD_SQL_INSTANCE"
  root_password    = "INSERT-PASSWORD-HERE"
  replica_names    = ["sqlserver-replica-instance-name"]
  settings {
    tier    = "db-perf-optimized-N-2"
    edition = "ENTERPRISE_PLUS"
    backup_configuration {
      enabled = "true"
    }
  }
}

resource "google_sql_database_instance" "dr_replica" {
  name = "sqlserver-replica-instance-name"
  # Specify the original primary instance as the master instance.
  master_instance_name = google_sql_database_instance.original-primary.name
  # DR replica must be in a different region than the region of the primary instance.
  region = "us-west2"
  # DR replica must be the same database version as the primary instance.
  database_version = "SQLSERVER_2022_ENTERPRISE"
  instance_type    = "READ_REPLICA_INSTANCE"
  root_password    = "INSERT-PASSWORD-HERE"
  replica_configuration {
    # Make the replica a cascadable replica.
    cascadable_replica = true
  }

  settings {
    # DR replica must be in the same tier as your primary instance and support Enterprise Plus edition.
    tier    = "db-perf-optimized-N-2"
    edition = "ENTERPRISE_PLUS"
  }
}

שלבים ליצירת רפליקה מדורגת

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

המסוף

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

    כניסה לדף Cloud SQL Instances

  2. לוחצים על הכרטיסייה Replicas (עותקים) של העותק שישמש כהורה של העותק שרוצים ליצור.
  3. לוחצים על יצירת העתק.
  4. בדף Create read replica (יצירת רפליקה לקריאה), מעדכנים את מזהה המופע ואת כל אפשרויות ההגדרה האחרות, כולל השם, האזור והתחום.
  5. לוחצים על יצירה.

    מערכת Cloud SQL יוצרת רפליקה. אתם חוזרים לדף המופע של הרפליקה הראשית.

  6. חוזרים על שלבים 4-6 לכל רפליקה חדשה של נתונים שרוצים ליצור.

gcloud

  1. יוצרים את הרפליקה החדשה על ידי ציון מופע של רפליקה שאפשר להעביר ממנו נתונים באמצעות הדגל --master-instance-name:
  2. gcloud sql instances create REPLICA_NAME \
          --master-instance-name=CASCADABLE_REPLICA_NAME \
    מחליפים את מה שכתוב בשדות הבאים:
    • REPLICA_NAME: המזהה הייחודי של הרפליקה שאתם יוצרים
    • CASCADABLE_REPLICA_NAME: השם של הרפליקה הניתנת לשרשור
  3. אחרי שיוצרים את העותק המשוכפל המדורג, אפשר לראות שהשינויים שבוצעו במופע הראשי משוכפלים בכל העותקים המשוכפלים בשרשרת של העותקים המשוכפלים המדורגים.

curl

  1. כדי ליצור רפליקה מדורגת מתחת לרפליקה שאפשר לשרשר, עורכים את דוגמת קוד ה-JSON הבאה ושומרים אותה בקובץ בשם request.json:
    {
      "masterInstanceName": "CASCADABLE_REPLICA_NAME",
      "project": "PROJECT_ID",
      "name": "REPLICA_NAME",
      "region": "REPLICA_REGION",
      "settings":
        {
          "tier": "MACHINE_TYPE",
        }
    }
  2. מריצים את הפקודה הבאה:
    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. אחד מהדגלים בבקשה לא תקין. יכול להיות שזה דגל שציינתם באופן מפורש או דגל שהוגדר לו ערך ברירת מחדל.

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

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

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

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

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

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

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

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

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

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

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

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

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