ב-Cloud SQL אפשר ליצור, להציג ברשימה ולמחוק מסדי נתונים של SQL Server במכונה. ניהול של מסדי נתונים נפרדים עוזר לאחסן ולארגן את נתוני האפליקציות, תוך בידוד של עומסי העבודה בשירותים השונים.
במכונה חדשה שנוצרה יש מסד נתונים של sqlserver.
במאמר יצירת מכונות מוסבר איך מגדירים ערך ברירת מחדל לסוג ה איסוף שמשמש למסדי הנתונים במכונה.
לפני שמתחילים
לפני שתבצעו את המשימות שבדף הזה, אתם צריכים:
- יצרתם מכונה של Cloud SQL. מידע נוסף זמין במאמר יצירת מכונות.
אם אתם מתכננים להשתמש בלקוח sqlcmd כדי ליצור או לנהל את מסדי הנתונים, אתם צריכים:
- הגדרתם גישה והתחברתם למכונה באמצעות לקוח
sqlcmd.
יצירת מסד נתונים במכונה של Cloud SQL
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
- בתפריט הניווט של SQL, לוחצים על Databases.
- לוחצים על Create database.
- בתיבת הדו-שיח New database, מציינים את שם מסד הנתונים.
- לוחצים על יצירה.
gcloud
למידע נוסף, ראו gcloud
sql databases create.
למידע נוסף על השוואות ב-SQL Server, קראו את המאמר תמיכה בהשוואה וב-Unicode במסמכי התיעוד של SQL Server.
gcloud sql databases create DATABASE_NAME \ --instance=INSTANCE_NAME \ [--charset=CHARSET] \ [--collation=COLLATION]
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
הבקשה הבאה משתמשת ב-method databases:insert כדי ליצור מסד נתונים חדש במכונה שצוינה.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
- database-name: השם של מסד נתונים במכונה של Cloud SQL
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/databases
תוכן בקשת JSON:
{
"project": "project-id",
"instance": "instance-id",
"name": "database-name"
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
REST v1beta4
הבקשה הבאה משתמשת ב-method databases:insert כדי ליצור מסד נתונים חדש במכונה שצוינה.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
- database-name: השם של מסד נתונים במכונה של Cloud SQL
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/databases
תוכן בקשת JSON:
{
"project": "project-id",
"instance": "instance-id",
"name": "database-name"
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
הצגת רשימה של מסדי הנתונים
כדי להציג את כל מסדי הנתונים במכונה:
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
- בתפריט שמימין, לוחצים על Databases. בדף Databases מופיעה רשימה של מסדי נתונים, יחד עם סוג ה-collation, ערכת התווים וסוג מסד הנתונים שלהם.
gcloud
למידע נוסף, ראו gcloud
sql databases list.
gcloud sql databases list \ --instance=INSTANCE_NAME
REST v1
הבקשה הבאה משתמשת ב-method databases:list כדי להציג את מסדי הנתונים של מכונה.
כשמציגים את מסדי הנתונים באמצעות ה-API, רואים מסדי נתונים נוספים של תבניות ומסד נתונים של המערכת שלא מוצגים במסוף. אי אפשר למחוק או לנהל את מסד הנתונים של המערכת.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
ה-method של ה-HTTP וכתובת ה-URL:
GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/databases
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
REST v1beta4
הבקשה הבאה משתמשת ב-method databases:list כדי להציג את מסדי הנתונים של מכונה.
כשמציגים את מסדי הנתונים באמצעות ה-API, רואים מסדי נתונים נוספים של תבניות ומסד נתונים של המערכת שלא מוצגים במסוף. אי אפשר למחוק או לנהל את מסד הנתונים של המערכת.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
ה-method של ה-HTTP וכתובת ה-URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/databases
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
שינוי הבעלים של מסד נתונים
אם רוצים להסיר את פרטי ההתחברות של משתמש שמשויכים לבעלים של מסד נתונים שכבר לא פעיל, צריך קודם להקצות בעלים חדש למסד הנתונים.
כדי להוסיף בעלים חדשים למסד הנתונים:
gcloud
- מתחברים למסד הנתונים ויוצרים שני חשבונות הדגמה:
create login TEST_LOGIN with password='TEST_PASSWORD' create login REPORT_USER with password='REPORT_USER_PASSWORD' GRANT CREATE ANY DATABASE TO TEST_LOGIN AS [CustomerDbRootRole]
מחליפים את הפרטים הבאים:
- TEST_LOGIN: השם של חשבון הבדיקה, למשל
test-login. - TEST_PASSWORD: הסיסמה של חשבון הבדיקה.
- REPORT_USER: השם של חשבון משתמש שני, למשל
report-user. החשבון הזה הופך לבעלים החדש של מסד הנתונים. - REPORT_USER_PASSWORD: הסיסמה של חשבון המשתמש השני.
- TEST_LOGIN: השם של חשבון הבדיקה, למשל
- מתחברים למסד הנתונים באמצעות חשבון הבדיקה שיצרתם. אחר כך יוצרים מסד נתונים לבדיקה באמצעות הפקודה הבאה:
CREATE DATABASE TEST_DB
מחליפים את הפרטים הבאים:
- TEST_DB: השם של מסד הנתונים לבדיקה שרוצים ליצור, למשל
test-database - TEST_LOGIN: השם של חשבון הבדיקה, למשל
test-login.
הבעלים של מסד הנתונים מוגדר באופן אוטומטי לחשבון הבדיקה.
- TEST_DB: השם של מסד הנתונים לבדיקה שרוצים ליצור, למשל
- מתחברים למסד הנתונים באמצעות פרטי ההתחברות ל-SQL Server. לאחר מכן, מריצים את הפקודה הבאה כדי לנסות למחוק את פרטי ההתחברות
TEST_LOGIN:drop login TEST_LOGIN
מחליפים את TEST_LOGIN בשם של חשבון הבדיקה, למשל
test-login.הפעולה נכשלת ומוחזרת השגיאה הבאה:
- מתחברים למסד הנתונים
TEST_DBבאמצעות החשבוןREPORT_USERונותנים לחשבון הרשאות שמתאימות לבעלים הקיים.GRANT IMPERSONATE on LOGIN::REPORT_USER to TEST_LOGIN
- מתחברים למסד הנתונים באמצעות חשבון הבדיקה. לאחר מכן, מריצים את הפקודה הבאה כדי לאשר את החשבון השני כבעלים של מסד הנתונים:
ALTER AUTHORIZATION ON DATABASE::TEST_DB TO REPORT_USER
- מתחברים למסד הנתונים בתור
REPORT_USERומסירים את כל ההרשאות שניתנו.REVOKE IMPERSONATE on LOGIN::REPORT_USER to TEST_LOGIN
- מתחברים למסד הנתונים באמצעות חשבון SQL Server. לאחר מכן, מריצים את הפקודה הבאה כדי להסיר את פרטי ההתחברות של
TEST_LOGIN: בסיום, מוחזרת ההודעה הבאה:DROP LOGIN TEST_LOGIN
DROP LOGIN for TEST_LOGIN by sqlserver(sqlserver) is successful.
מחיקה של מסד נתונים
כדי למחוק מסד נתונים במכונה של Cloud SQL:
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
- בתפריט שמימין, לוחצים על Databases.
- ברשימת מסדי הנתונים, מוצאים את מסד הנתונים שרוצים למחוק ולוחצים על סמל פח האשפה.
- בתיבת הדו-שיח Delete database, מזינים את שם מסד הנתונים ולוחצים על Delete.
gcloud
למידע נוסף, ראו gcloud
sql databases delete.
gcloud sql databases delete DATABASE_NAME \ --instance=INSTANCE_NAME
REST v1
הבקשה הבאה משתמשת ב-method databases:delete כדי למחוק את מסד הנתונים שצוין.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
- database-name: השם של מסד נתונים במכונה של Cloud SQL
ה-method של ה-HTTP וכתובת ה-URL:
DELETE https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/databases/database-name
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
REST v1beta4
הבקשה הבאה משתמשת ב-method databases:delete כדי למחוק את מסד הנתונים שצוין.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
- database-name: השם של מסד נתונים במכונה של Cloud SQL
ה-method של ה-HTTP וכתובת ה-URL:
DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/databases/database-name
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
פתרון בעיות
אם במסד נתונים מופעלת התכונה סימון נתונים שהשתנו (CDC), וניסיתם למחוק אותו מהמכונה, הפעולה תיכשל. יכול להיות גם שתופיע הודעת שגיאה לא ידועה. במקרה כזה, צריך לבצע את הפעולות הבאות:
- משתמשים בפרוצדורה המאוחסנת
msdb.dbo.gcloudsql_cdc_disable_dbכדי להשבית את ה-CDC במסד הנתונים. - בודקים אם מוגדר שרת מקושר למסד הנתונים. אם יש כזה, צריך להסיר אותו.
- מפעילים שוב את פעולת המחיקה.
מידע נוסף זמין במאמר מחיקת מסד נתונים של CDC.
המאמרים הבאים
- ניהול המשתמשים במכונה.
- מייבאים נתונים למכונה.
- יצירת טבלאות (המנוע של מסד הנתונים).