בדף הזה מוסבר איך להגדיר דגלים לניהול מסדי נתונים ב-Cloud SQL, ומפורטים הדגלים שאפשר להגדיר למכונה. דגלים לניהול מסדי נתונים משמשים לפעולות רבות, כולל התאמת הפרמטרים של SQL Server, התאמת האפשרויות והגדרה וכוונון של מכונה.
כשמגדירים, מסירים או משנים דגל של מופע של מסד נתונים, יכול להיות שמסד הנתונים יופעל מחדש. ערך הדגל נשמר במכונה עד שמסירים אותו. אם המכונה היא המקור של רפליקה, והמכונה מופעלת מחדש, גם הרפליקה מופעלת מחדש כדי להתאים להגדרות הנוכחיות של המכונה.
הגדרת דגלים לניהול מסדי נתונים
בקטעים הבאים מפורטות משימות נפוצות לניהול דגלים.
הגדרת דגל לניהול מסד נתונים
המסוף
- במסוףGoogle Cloud , בוחרים את הפרויקט שמכיל את המכונה של Cloud SQL שרוצים להגדיר לה דגל לניהול מסד נתונים.
- פותחים את המכונה ולוחצים על Edit.
- עוברים לקטע דגלים.
- כדי להגדיר דגל שלא הוגדר במכונה בעבר, לוחצים על Add item, בוחרים את הדגל מהתפריט הנפתח ומגדירים את הערך שלו.
- לוחצים על 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.
-
מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
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 שרוצים לנקות את כל הדגלים שלה.
- פותחים את המכונה ולוחצים על Edit.
- פותחים את הקטע 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
בפלט, הדגלים לניהול מסד הנתונים מופיעים בקולקציה 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 (דגל מעקב) | booleanon | off |
לא |
| 1222 (דגל מעקב) | booleanon | off |
לא |
| 1224 (דגל מעקב) | booleanon | off |
לא |
| 2528 (דגל מעקב) | booleanon | off |
לא |
| 3205 (דגל מעקב) | booleanon | off |
לא |
| 3226 (דגל מעקב) | booleanon | off |
לא |
| 3625 (דגל מעקב) | booleanon | off |
כן |
| 4199 (דגל מעקב) | booleanon | off |
לא |
| 4616 (דגל מעקב) | booleanon | off |
לא |
| 7806 (trace flag) | booleanon | off |
כן |
| 13702 (דגל מעקב) | booleanon | off |
כן |
| מספר הקטגוריות במטמון של בדיקת הגישה | integer0 ... 65536 |
לא |
| מכסת המטמון של בדיקת הגישה | integer0 ... 2147483647 |
לא |
| affinity mask | integer2147483648 ... 2147483647 |
כן |
| מסכת קלט/פלט של תחום עניין משותף | integer2147483648 ... 2147483647 |
כן |
| agent xps | booleanon | off |
לא |
| automatic soft-numa disabled | 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 |
לא |
| cost threshold for parallelism | integer0 ... 32767 |
לא |
| אימות של מסד נתונים מוכל (contained database) | booleanon | off
|
לא |
| cross db ownership chaining | booleanon | off
|
לא |
| סף הסמן | integer-1 ... 2147483647 |
לא |
| default full-text language | integer0 ... 2147483647 |
לא |
| שפת ברירת המחדל | integer0 ... 32 |
לא |
| default trace enabled | booleanon | off |
לא |
| לא לאפשר תוצאות מטריגרים | booleanon | off |
לא |
| סקריפטים חיצוניים מופעלים | booleanon | off |
כן |
| רוחב פס לסריקה (מקסימלי) | integer0 ... 32767 |
לא |
| רוחב פס לסריקה של ft (מינימום) | integer0 ... 32767 |
לא |
| ft notify bandwidth (max) | integer0 ... 32767 |
לא |
| ft notify bandwidth (min) | integer0 ... 32767 |
לא |
| גורם מילוי (%) | integer0 ... 100 |
כן |
| index create memory (kb) | integer704 ... 2147483647 |
לא |
| מנעולים | 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 |
לא |
| טריגרים בתצוגת עץ | booleanon | off |
לא |
| optimize for ad hoc workloads | booleanon | off |
לא |
| פסק זמן של ph (שניות) | integer1 ... 3600 |
לא |
| cloud sql enable polybase | booleanon | off |
כן |
| cloud sql enable sp_help_revlogin | booleanon | off |
לא |
| מגבלת העלות של מנהל השאילתות | integer0 ... 2147483647 |
לא |
| זמן המתנה לשאילתה (בשניות) | integer-1 ... 2147483647 |
לא |
| מרווח זמן להתאוששות (דקות) | integer0 ... 32767 |
לא |
| גישה מרחוק | booleanon | off |
כן |
| remote login timeout (s) | integer0 ... 2147483647 |
לא |
| remote query timeout (s) | integer0 ... 2147483647 |
לא |
| transform noise words | booleanon | off |
לא |
| two digit year cutoff | 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, המכונה של מסד הנתונים משתמשת בכל המעבדים הזמינים. אבל לא תמיד זה יעיל או אפילו מעשי, אם מנהלים מכונות עם מאות מסדי נתונים.
מומלץ לפעול לפי ההמלצות במסמכי התיעוד של 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, אפשר להשתמש בפונקציה |