בדף הזה מוסבר איך להגדיר פלאגים של מסד נתונים ב-Cloud SQL, ומוצגת רשימה של הפלאגים שאפשר להגדיר למופע. משתמשים בדגלים של מסד הנתונים להרבה פעולות, כולל התאמת פרמטרים של SQL Server, התאמת אפשרויות והגדרה וכוונון של מכונה.
כשמגדירים, מסירים או משנים דגל של מופע מסד נתונים, יכול להיות שמסד הנתונים יופעל מחדש. ערך הדגל נשמר עבור המופע עד שמסירים אותו. אם המכונה היא המקור של רפליקה, והיא מופעלת מחדש, גם הרפליקה מופעלת מחדש כדי להתאים להגדרה הנוכחית של המכונה.
הגדרת דגלים של מסד נתונים
בקטעים הבאים מוסבר איך לבצע משימות נפוצות שקשורות לניהול דגלים.
הגדרת סימון של מסד נתונים
המסוף
- בGoogle Cloud מסוף, בוחרים את הפרויקט שמכיל את מופע Cloud SQL שרוצים להגדיר לו דגל מסד נתונים.
- פותחים את המופע ולוחצים על עריכה.
- עוברים לקטע דגלים.
- כדי להגדיר דגל שלא הוגדר במופע לפני כן, לוחצים על הוספת פריט, בוחרים את הדגל מהתפריט הנפתח ומגדירים את הערך שלו.
- לוחצים על Save כדי לשמור את השינויים.
- מאשרים את השינויים בקטע דגלים בדף הסקירה הכללית.
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.
החלה של השינויים
כדי להחיל את ההגדרות של Terraform בפרויקט ב- Google Cloud , מבצעים את השלבים בקטעים הבאים.
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Google Cloud
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את Google Cloud הפרויקט כדי לראות את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
מחיקת השינויים
כדי למחוק את השינויים:
- כדי להשבית את ההגנה מפני מחיקה, בקובץ התצורה של Terraform מגדירים את הארגומנט
deletion_protectionלערךfalse.deletion_protection = "false"
- מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform המעודכנות:terraform apply
-
כדי להסיר משאבים שהוחלו בעבר על הגדרות 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 מחליפה את הדגלים הקיימים בדגלים שצוינו בבקשה.
ניקוי כל הדגלים לערכי ברירת המחדל
המסוף
- בGoogle Cloud מסוף, בוחרים את הפרויקט שמכיל את מופע Cloud SQL שרוצים לנקות את כל הדגלים שלו.
- פותחים את המופע ולוחצים על עריכה.
- פותחים את הקטע Database flags (דגלים של מסד הנתונים).
- לוחצים על X לצד כל הדגלים שמוצגים.
- לוחצים על 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:
המסוף
- בGoogle Cloud מסוף, בוחרים את הפרויקט שמכיל את מופע Cloud SQL שרוצים לראות את הדגלים של מסד הנתונים שהוגדרו בו.
- בוחרים את המופע כדי לפתוח את הדף Instance Overview (סקירה כללית של המופע).
הסימונים של מסד הנתונים שהוגדרו מפורטים בקטע Database flags.
gcloud
קבלת מצב המופע:
gcloud sql instances describe INSTANCE_NAME
בפלט, סימוני מסד הנתונים מפורטים בקטע settings כאוסף databaseFlags. מידע נוסף על אופן הצגת הדגלים בפלט זמין במאמר Instances Resource Representation.
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 (סימון מעקב) | booleanon | off |
לא |
| 1222 (trace flag) | booleanon | off |
לא |
| 1224 (trace flag) | booleanon | off |
לא |
| 2528 (סימון מעקב) | booleanon | off |
לא |
| 3205 (trace flag) | booleanon | off |
לא |
| 3226 (סימון מעקב) | booleanon | off |
לא |
| 3625 (trace flag) | booleanon | off |
כן |
| 4199 (trace flag) | booleanon | off |
לא |
| 4616 (סימון מעקב) | booleanon | off |
לא |
| 7806 (trace flag) | booleanon | off |
כן |
| access check cache bucket count | integer0 ... 65536 |
לא |
| access check cache quota | integer0 ... 2147483647 |
לא |
| מסכת תחום עניין משותף | integer2147483648 ... 2147483647 |
כן |
| agent xps | booleanon | off |
לא |
| השבתה של NUMA רך אוטומטי | booleanon | off |
כן |
| cloud sql xe bucket name | stringשם הקטגוריה חייב להתחיל בקידומת gs://. |
לא |
| cloud sql xe output total disk size (mb) | integer10 ... 512 |
לא |
| cloud sql xe file retention (mins) | integer0 ... 10080 |
לא |
| cloud sql xe upload interval (mins) | integer1 ... 60 |
לא |
| cloudsql enable linked servers | booleanon | off |
לא |
| סף העלות להקבלה | integer0 ... 32767 |
לא |
| אימות מסד נתונים מוכל | booleanon | off
|
לא |
| cross db ownership chaining | booleanon | off
|
לא |
| סף הסמן | integer-1 ... 2147483647 |
לא |
| שפת ברירת המחדל של הטקסט המלא | integer0 ... 2147483647 |
לא |
| שפת ברירת המחדל | integer0 ... 32 |
לא |
| המעקב מופעל כברירת מחדל | booleanon | off |
לא |
| disallow results from triggers | booleanon | off |
לא |
| הפעלת סקריפטים חיצוניים | booleanon | off |
כן |
| רוחב פס לסריקה (מקסימום) | integer0 ... 32767 |
לא |
| ft crawl bandwidth (min) | integer0 ... 32767 |
לא |
| רוחב פס של הודעות (מקסימום) | integer0 ... 32767 |
לא |
| ft notify bandwidth (min) | integer0 ... 32767 |
לא |
| שיעור הבקשות שמולאו (%) | integer0 ... 100 |
כן |
| index create memory (kb) | integer704 ... 2147483647 |
לא |
| locks | integer5000 ... 2147483647 |
כן |
| max degree of parallelism (MAXDOP) | integer0 ... 32767 |
לא |
| max server memory (mb) | integer1000 ... 2147483647
יכול להיות ש-Cloud SQL יגדיר ערך לדגל הזה במופעים, על סמך הערכים המומלצים של מיקרוסופט. מידע נוסף זמין במאמר בנושא דגלים מיוחדים. |
לא |
| max text repl size (b) | integer-1 ... 2147483647 |
לא |
| max worker threads | integer128 ... 65535 |
לא |
| nested triggers | booleanon | off |
לא |
| אופטימיזציה של עומסי עבודה אד-הוק | booleanon | off |
לא |
| ph timeout (s) | integer1 ... 3600 |
לא |
| query governor cost limit | integer0 ... 2147483647 |
לא |
| זמן ההמתנה של השאילתה (שניות) | integer-1 ... 2147483647 |
לא |
| מרווח התאוששות (דקות) | integer0 ... 32767 |
לא |
| גישה מרחוק | booleanon | off |
כן |
| זמן קצוב לתפוגה של התחברות מרחוק (שניות) | integer0 ... 2147483647 |
לא |
| remote query timeout (s) | integer0 ... 2147483647 |
לא |
| להפוך מילים של רעש | booleanon | off |
לא |
| שנה בשתי ספרות | integer1753 ... 9999 |
לא |
| חיבורי משתמשים | integer0, 10 ... 32767 |
כן |
| אפשרויות משתמש | integer0 ... 32767 |
לא |
דיווחים מיוחדים
בקטע הזה יש מידע נוסף על דגלים של Cloud SQL ל-SQL Server.
max degree of parallelism (MAXDOP)
Max degree of parallelism (MAXDOP) הוא דגל של מסד נתונים של מיקרוסופט שזמין לשימוש ב-Cloud SQL ל-SQL Server. הדגל הזה מאפשר להגביל את המספר המקסימלי של השרשורים שמשמשים להרצת שאילתה יחידה בתוכנית מקבילית.
אם משאירים את ערך ברירת המחדל 0, מופעלים כל המעבדים הזמינים במופע של מסד הנתונים. עם זאת, אם מנהלים מקרים עם מאות מסדי נתונים, יכול להיות שהשיטה הזו לא תהיה יעילה או אפילו פרקטית.
מומלץ לפעול לפי ההמלצות שבתיעוד של מיקרוסופט כשמגדירים את הערך של הדגל, שיכול להשתנות בהתאם למספר הצמתים של 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 כדי להגביל את המספר המקסימלי של מעבדים שרוצים לאפשר להם לבצע תוכניות במקביל, אבל אפשר גם להשתמש בתכונה סף העלות להפעלה מקבילית כדי לציין את העלות המינימלית שרוצים להגדיר למעבד יחיד לפני הרחבת הפעולות המקבילות למעבד אחר. התכונות האלה מאפשרות לכם לשלוט טוב יותר ביעילות ובעלות של ביצוע תוכניות מקביליות.
הערכים המומלצים לתכונות האלה משתנים בהתאם למקרה, ומושפעים מהצרכים שלכם לגבי עומס העבודה של השרת והאפליקציה.
כדי לקבל עזרה בקביעת הערכים הכי טובים של MAXDOP ושל סף העלות של מקביליות עבור השרתים שלכם, אפשר לעיין במקורות המידע הבאים:
שינוי ערך ברירת המחדל עוזר לפתור את הבעיות הפוטנציאליות הבאות:
- אם הדגל
max degree of parallelism (MAXDOP)מוגדר ל-0, מופעים או אפליקציות לקוח שנדרשות להורדות מ-SharePoint נכשלים. ההורדה מ-SharePoint מפעילה בדיקה מוקדמת שדורשת ערך מספרי לסימון, ולא תקבל ערך שקטן מ-1. - השארת הדגל MAXDOP לערך ברירת המחדל
0, מציינת למעשה שאין הגבלה ושאפשר להשתמש בכל המעבדים הזמינים לפעולות מקבילות. יכול להיות שהערך הזה מתאים לשרתים שמריצים באופן שוטף שאילתות קטנות, אבל הוא עלול לגרום לבעיה בעלויות אם אתם צריכים להריץ גם שאילתות גדולות מאוד מדי פעם.
אפשר להשתמש בדגל max degree of parallelism (MAXDOP) כדי לשלוט במספר השרשורים בשלוש רמות:
- ברמת המופע, באמצעות דגלים של מסד הנתונים
- היקף מסד הנתונים, באמצעות 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 מתאים באופן אוטומטי את הערך של הדגל כדי לעמוד בהמלצות שלנו לגבי הגודל החדש של המכונה. במהלך שינוי הגודל הזה, יוסר גם כל ערך שהוגדר ידנית לדגל הזה. ההגדרה הזו עוזרת למסד הנתונים שלכם להשתמש במשאבים בצורה יעילה יותר, למנוע הקצאת יתר של משאבים, להפחית את הסיכוי לקריסה בגלל בעיות של חוסר זיכרון ולמנוע פגיעה בביצועים של המופע.
מידע נוסף זמין במאמרים בנושא זיכרון מקסימלי של השרת ואופטימיזציה של שימוש גבוה בזיכרון.
פתרון בעיות
| שגיאה | פתרון בעיות |
|---|---|
| רוצים לשנות את אזור הזמן של מכונת Cloud SQL. |
במאמר הגדרות של מכונות וירטואליות מוסבר איך לעדכן את אזור הזמן של מכונה וירטואלית. ב-Cloud SQL ל-SQL Server, אפשר להשתמש בפונקציה |