הגדרת דגלים של מסד נתונים

בדף הזה מוסבר איך להגדיר דגלים לניהול מסדי נתונים ב-Cloud SQL, ומפורטים הדגלים שאפשר להגדיר למכונה. דגלים לניהול מסדי נתונים משמשים לפעולות רבות, כולל התאמת הפרמטרים של SQL Server, התאמת האפשרויות והגדרה וכוונון של מכונה.

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

הגדרת דגלים לניהול מסדי נתונים

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

הגדרת דגל לניהול מסד נתונים

המסוף

  1. במסוףGoogle Cloud , בוחרים את הפרויקט שמכיל את המכונה של Cloud SQL שרוצים להגדיר לה דגל לניהול מסד נתונים.
  2. פותחים את המכונה ולוחצים על Edit.
  3. עוברים לקטע דגלים.
  4. כדי להגדיר דגל שלא הוגדר במכונה בעבר, לוחצים על Add item, בוחרים את הדגל מהתפריט הנפתח ומגדירים את הערך שלו.
  5. לוחצים על Save כדי לשמור את השינויים.
  6. מאשרים את השינויים בקטע סימונים בדף הסקירה הכללית.

gcloud

עורכים את המכונה:

gcloud sql instances patch INSTANCE_NAME --database-flags=FLAG1=VALUE1,FLAG2=VALUE2

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

לדוגמה, כדי להגדיר את הדגלים 1204,‏ remote access ו-remote query timeout (s), אפשר להשתמש בפקודה הבאה:

gcloud sql instances patch INSTANCE_NAME \
  --database-flags="1204"=on,"remote access"=on,"remote query timeout (s)"=300

Terraform

כדי להוסיף דגלים לניהול מסד נתונים, משתמשים במשאב של Terraform.

resource "google_sql_database_instance" "instance" {
  name             = "sqlserver-instance-flags"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    database_flags {
      name  = "1204"
      value = "on"
    }
    database_flags {
      name  = "remote access"
      value = "on"
    }
    database_flags {
      name  = "remote query timeout (s)"
      value = "300"
    }
    tier = "db-custom-2-7680"
  }
  # 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
}

החלה של השינויים

כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :

הכנת Cloud Shell

  1. מפעילים את Cloud Shell.
  2. מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.

    תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

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

הכנת הספרייה

לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).

  1. יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf, למשל main.tf. במדריך הזה, הקובץ נקרא main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.

    מעתיקים את הקוד לדוגמה בקובץ main.tf החדש שיצרתם.

    לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.

  3. בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
  4. שומרים את השינויים.
  5. מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
    terraform init

    אופציונלי: תוכלו לכלול את האפשרות -upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:

    terraform init -upgrade

החלה של השינויים

  1. בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
    terraform plan

    מתקנים את ההגדרות לפי הצורך.

  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform:
    terraform apply

    ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!‎".

  3. פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.

למחוק את השינויים

כדי למחוק את השינויים:

  1. כדי להשבית את ההגנה מפני מחיקה, בקובץ התצורה של Terraform מגדירים את הארגומנט deletion_protection לערך false.
    deletion_protection =  "false"
  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform המעודכנות:
    terraform apply
  1. כדי להסיר משאבים שהוחלו בעבר על הגדרות Terraform, מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה:

    terraform destroy

REST v1

כדי להגדיר דגל למסד נתונים קיים:

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

  • ‫project-id: מזהה הפרויקט
  • ‫instance-id: מזהה המכונה

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

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

תוכן בקשת JSON:

{
  "settings":
  {
    "databaseFlags":
    [
      {
        "name": "flag_name",
        "value": "flag_value"
      }
    ]
  }
}

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

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

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

‫REST v1beta4

כדי להגדיר דגל למסד נתונים קיים:

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

  • ‫project-id: מזהה הפרויקט
  • ‫instance-id: מזהה המכונה

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

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

תוכן בקשת JSON:

{
  "settings":
  {
    "databaseFlags":
    [
      {
        "name": "flag_name",
        "value": "flag_value"
      }
    ]
  }
}

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

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

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

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

המסוף

  1. במסוףGoogle Cloud , בוחרים את הפרויקט שמכיל את המכונה של Cloud SQL שרוצים לנקות את כל הדגלים שלה.
  2. פותחים את המכונה ולוחצים על Edit.
  3. פותחים את הקטע Database flags.
  4. לוחצים על ה-X לצד כל הסימונים שמוצגים.
  5. לוחצים על Save כדי לשמור את השינויים.

gcloud

איפוס כל הדגלים לערכי ברירת המחדל שלהם במכונה:

gcloud sql instances patch INSTANCE_NAME \
--clear-database-flags

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

REST v1

כדי לנקות את כל הדגלים של מכונה קיימת:

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

  • ‫project-id: מזהה הפרויקט
  • ‫instance-id: מזהה המכונה

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

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

תוכן בקשת JSON:

{
  "settings":
  {
    "databaseFlags": []
  }
}

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

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

‫REST v1beta4

כדי לנקות את כל הדגלים של מכונה קיימת:

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

  • ‫project-id: מזהה הפרויקט
  • ‫instance-id: מזהה המכונה

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

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

תוכן בקשת JSON:

{
  "settings":
  {
    "databaseFlags": []
  }
}

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

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

איך בודקים אילו דגלים לניהול מסד נתונים הוגדרו למכונה

כדי לראות אילו דגלים הוגדרו למכונה של Cloud SQL:

המסוף

  1. במסוףGoogle Cloud , בוחרים את הפרויקט שמכיל את המכונה של Cloud SQL שרוצים לראות את דגלי ניהול מסד הנתונים שהוגדרו לה.
  2. בוחרים את המכונה כדי לפתוח את הדף Instance Overview.

    הדגלים שהוגדרו למסד הנתונים מופיעים בקטע Database flags.

gcloud

בודקים את מצב המכונה:

gcloud sql instances describe INSTANCE_NAME

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

REST v1

כדי להציג רשימה של דגלים שהוגדרו למכונה:

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

  • ‫project-id: מזהה הפרויקט
  • ‫instance-id: מזהה המכונה

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

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

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

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

בפלט, מחפשים את השדה databaseFlags.

‫REST v1beta4

כדי להציג רשימה של דגלים שהוגדרו למכונה:

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

  • ‫project-id: מזהה הפרויקט
  • ‫instance-id: מזהה המכונה

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

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

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

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

בפלט, מחפשים את השדה databaseFlags.

דגלים נתמכים

ב-Cloud SQL יש תמיכה רק בדגלים שמפורטים בקטע הזה.

דגל של Cloud SQL סוג
ערכים קבילים והערות
נדרשת
הפעלה מחדש?
‫1204 (דגל מעקב) boolean
on | off
לא
‫1222 (דגל מעקב) boolean
on | off
לא
‫1224 (דגל מעקב) boolean
on | off
לא
‫2528 (דגל מעקב) boolean
on | off
לא
‫3205 (דגל מעקב) boolean
on | off
לא
‫3226 (דגל מעקב) boolean
on | off
לא
‫3625 (דגל מעקב) boolean
on | off
כן
‫4199 (דגל מעקב) boolean
on | off
לא
‫4616 (דגל מעקב) boolean
on | off
לא
7806 (trace flag) boolean
on | off
כן
‫13702 (דגל מעקב) boolean
on | off
כן
מספר הקטגוריות במטמון של בדיקת הגישה integer
0 ... 65536
לא
מכסת המטמון של בדיקת הגישה integer
0 ... 2147483647
לא
affinity mask integer
2147483648 ... 2147483647
כן
מסכת קלט/פלט של תחום עניין משותף integer
2147483648 ... 2147483647
כן
agent xps boolean
on | off
לא
automatic soft-numa disabled boolean
on | off
כן
cloud sql xe bucket name string
שם הקטגוריה חייב להתחיל בקידומת gs://.
לא
cloud sql xe output total disk size (mb) integer
10 ... 512
לא
cloud sql xe file retention (mins) integer
0 ... 10080
לא
cloud sql xe upload interval (mins) integer
1 ... 60
לא
cloudsql enable linked servers boolean
on | off
לא
cost threshold for parallelism integer
0 ... 32767
לא
אימות של מסד נתונים מוכל (contained database) boolean
on | off
לא
cross db ownership chaining boolean
on | off
לא
סף הסמן integer
-1 ... 2147483647
לא
default full-text language integer
0 ... 2147483647
לא
שפת ברירת המחדל integer
0 ... 32
לא
default trace enabled boolean
on | off
לא
לא לאפשר תוצאות מטריגרים boolean
on | off
לא
סקריפטים חיצוניים מופעלים boolean
on | off
כן
רוחב פס לסריקה (מקסימלי) integer
0 ... 32767
לא
רוחב פס לסריקה של ft (מינימום) integer
0 ... 32767
לא
‫ft notify bandwidth (max) integer
0 ... 32767
לא
ft notify bandwidth (min) integer
0 ... 32767
לא
גורם מילוי (%) integer
0 ... 100
כן
index create memory (kb) integer
704 ... 2147483647
לא
מנעולים integer
5000 ... 2147483647
כן
max degree of parallelism (MAXDOP) integer
0 ... 32767
לא
max server memory (mb) integer
1000 ... 2147483647
יכול להיות ש-Cloud SQL יגדיר ערך לדגל הזה במכונות, על סמך הערכים המומלצים של מיקרוסופט. מידע נוסף זמין במאמר בנושא דגלים מיוחדים.
לא
max text repl size (b) integer
-1 ... 2147483647
לא
max worker threads integer
128 ... 65535
לא
טריגרים בתצוגת עץ boolean
on | off
לא
optimize for ad hoc workloads boolean
on | off
לא
פסק זמן של ph (שניות) integer
1 ... 3600
לא
cloud sql enable polybase boolean
on | off
כן
cloud sql enable sp_help_revlogin boolean
on | off
לא
מגבלת העלות של מנהל השאילתות integer
0 ... 2147483647
לא
זמן המתנה לשאילתה (בשניות) integer
-1 ... 2147483647
לא
מרווח זמן להתאוששות (דקות) integer
0 ... 32767
לא
גישה מרחוק boolean
on | off
כן
remote login timeout (s) integer
0 ... 2147483647
לא
remote query timeout (s) integer
0 ... 2147483647
לא
transform noise words boolean
on | off
לא
two digit year cutoff integer
1753 ... 9999
לא
חיבורי משתמשים integer
0, 10 ... 32767
כן
אפשרויות למשתמשים integer
0 ... 32767
לא

סימונים מיוחדים

בקטע הזה מופיע מידע נוסף על דגלים של Cloud SQL ל-SQL Server.

max degree of parallelism (MAXDOP)

‫Max degree of parallelism (MAXDOP) הוא דגל לניהול מסד נתונים של מיקרוסופט שאפשר להשתמש בו ב-Cloud SQL ל-SQL Server. הדגל הזה מאפשר להגביל את מספר השרשורים המקסימלי שמשמש להרצת שאילתה אחת בתוכנית מקבילה.

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

מומלץ לפעול לפי ההמלצות במסמכי התיעוד של Microsoft כשמגדירים את ערך הדגל, שיכול להשתנות בהתאם למספר צומתי ה-NUMA ולמספר המעבדים הלוגיים הזמינים.

אפשר לבדוק את הגדרת הצומת של NUMA באמצעות תצוגת הניהול הדינמי (DMV) מ-sys.dm_os_sys_info. כדי לבדוק את הגדרת הצומת של NUMA, משתמשים בקטע קוד שדומה לזה:

      SELECT socket_count,cores_per_socket,numa_node_count 
FROM sys.dm_os_sys_info

אפשר להשתמש ב-MAXDOP כדי להגביל את מספר המעבדים המקסימלי שרוצים לאפשר להרצת תוכנית מקבילה, אבל אפשר גם להשתמש בתכונה cost threshold for parallelism כדי לציין את העלות המינימלית שרוצים להגדיר למעבד יחיד לפני שמרחיבים את הפעולות המקבילות למעבד אחר. התכונות האלה מאפשרות לכם לשלוט טוב יותר ביעילות ובעלות של הרצת תוכניות במקביל.

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

כדי לקבוע את הערכים הטובים ביותר של MAXDOP ושל סף העלות למקביליות בשרתים שלכם, תוכלו להיעזר במקורות המידע הבאים:

שינוי ערך ברירת המחדל עוזר לטפל בבעיות הפוטנציאליות הבאות:

  • אם הדגל max degree of parallelism (MAXDOP) מוגדר לערך 0, מופעים או אפליקציות לקוח שדורשים הורדות מ-SharePoint נכשלים. ההורדה של SharePoint מפעילה בדיקה מקדימה שדורשת ערך מספרי לדגל ולא מקבלת ערך קטן מ-1.
  • אם משאירים את הדגל MAXDOP בערך ברירת המחדל 0, זה מציין שאין מגבלה ושאפשר להשתמש בכל המעבדים הזמינים לפעולות מקבילות. הערך הזה יכול להתאים לשרתים שמריצים באופן קבוע שאילתות קטנות, אבל אם אתם צריכים להריץ מדי פעם שאילתות גדולות מאוד, יכול להיות שתהיה בעיה עם העלות.

באמצעות הדגל max degree of parallelism (MAXDOP), אתם יכולים לשלוט במספר ה-threads בשלוש רמות:

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

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

max server memory (mb)

הדגל max server memory (mb) מגביל את כמות הזיכרון ש-Cloud SQL יכול להקצות למאגרים הפנימיים שלו.

מומלץ לא להגדיר ערך לדגל הזה, אלא לאפשר ל-Cloud SQL לנהל את הערך בשבילכם. אם אתם צריכים לנהל את הערך הזה באופן ידני, כהמלצה כללית, הגדירו את הערך של max server memory (mb) לכ-80% מהזיכרון הזמין כדי למנוע מ-SQL Server לצרוך את כל הזיכרון.

לעומת זאת, במכונות עם הרבה זיכרון, יכול להיות ש-80% מהזיכרון הזמין יהיה ערך נמוך מדי ויוביל לשימוש מבוזבז בזיכרון.

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

למידע נוסף, קראו את המאמרים Maximum server memory ו-Optimize high memory usage.

cloud sql enable sp_help_revlogin

הדגל cloud sql enable sp_help_revlogin מאפשר להפעיל או להשבית את הפרוצדורה המאוחסנת sp_help_revlogin במסד הנתונים msdb.

כשהדגל הזה מוגדר לערך on, ‏Cloud SQL מתקין את הפרוצדורה המאוחסנת במסד הנתונים msdb ונותן הרשאות הפעלה למשתמש עם הרשאת אדמין sqlserver. כך אפשר לייצא פרטי כניסה ל-SQL Server, גיבובי סיסמאות ומזהי SID כדי לעזור בהעברת פרטי כניסה ובסנכרון בין מכונות.

כשהדגל הזה מוגדר לערך off, ‏Cloud SQL מסיר את הפרוצדורה המאוחסנת ממסד הנתונים msdb.

מידע נוסף זמין במאמר ייצוא פרטי כניסה ל-SQL Server.

פתרון בעיות

שגיאה פתרון בעיות
אתם רוצים לשנות את אזור הזמן של מכונה ב-Cloud SQL.

במאמר הגדרות של מכונה מוסבר איך לעדכן את אזור הזמן של המכונה.

ב-Cloud SQL ל-SQL Server, אפשר להשתמש בפונקציה AT TIME ZONE להמרות זמן ועוד. מידע נוסף על הפונקציה הזו זמין במאמר AT TIME ZONE (Transact-SQL)‎.

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