במדריך הזה מוצגות שתי דרכים לשכפול מסד נתונים של MySQL שפועל ב-Compute Engine. שיטה אחת משתמשת בתמונות מצב של Persistent Disk. בשיטה השנייה משתמשים בייצוא ובייבוא מקוריים של MySQL, ומעבירים את קובץ הייצוא באמצעות Cloud Storage. Cloud Storage הוא שירות אחסון האובייקטים. Cloud de Confiance by S3NS הוא מציע דרך פשוטה, מאובטחת, עמידה וזמינה מאוד לאחסון קבצים.
שיבוט הוא תהליך של העתקת מסד נתונים לשרת אחר. העותק הוא בלתי תלוי במסד הנתונים המקורי ונשמר כתמונת מצב של נקודת זמן מסוימת. אתם יכולים להשתמש במסד נתונים משוכפל למטרות שונות בלי להעמיס על שרת הייצור או לסכן את שלמות נתוני הייצור. חלק מהמטרות האלה כוללות:
- ביצוע שאילתות אנליטיות.
- בדיקות עומס או בדיקות שילוב של האפליקציות.
- חילוץ נתונים לאכלוס מחסני נתונים.
- הפעלת ניסויים על הנתונים.
לכל אחת משיטות השכפול שמתוארות במדריך הזה יש יתרונות וחסרונות. השיטה האידיאלית תלויה במצב שלכם. בטבלה הבאה מפורטות כמה בעיות חשובות.
| בעיה | שיטה 1: תמונות מצב של דיסקים | שיטה 2: ייצוא וייבוא באמצעות Cloud Storage |
|---|---|---|
| שטח אחסון נוסף שנדרש במופעי MySQL | לא נדרש מקום נוסף בדיסק | נדרש נפח אחסון נוסף כדי לאחסן את קובץ הייצוא כשיוצרים ומבצעים שחזור |
| עומס נוסף על מכונות MySQL של המקור במהלך השכפול | אין עומס נוסף | עומס נוסף על המעבד ועל קלט/פלט כשיוצרים ומעלים את קובץ הייצוא |
| משך השכפול | מהיר יחסית למסדי נתונים גדולים | יחסית איטי במסדי נתונים גדולים |
| אפשר לשכפל ממכונות MySQL חיצוניות ל-Cloud de Confiance | לא | כן |
| מורכבות | רצף מורכב של פקודות לצירוף דיסקים משוכפלים | קבוצה פשוטה יחסית של פקודות לשיבוט |
| אפשר להשתמש במערכות גיבוי קיימות | כן, אם מערכת הגיבוי משתמשת בצילומי מצב של הדיסק Cloud de Confiance | כן, אם מערכת הגיבוי מייצאת קבצים ל-Cloud Storage |
| רמת הפירוט של השכפול | אפשר לשכפל רק דיסקים שלמים | אפשר לשכפל רק את מסד הנתונים שצוין |
| עקביות הנתונים | עקבי בנקודת הזמן של תמונת המצב | עקביות בנקודת הייצוא |
| אפשר להשתמש ב-Cloud SQL כמקור | לא | כן, אם משתמשים באותה גרסה |
| אפשר להשתמש ב-Cloud SQL כיעד | לא | כן |
המדריך הזה מתבסס על ההנחה שאתם מכירים את שורת הפקודה של Linux ואת ניהול מסד הנתונים של MySQL.
מטרות
- איך מריצים מסד נתונים של MySQL ב- Cloud de Confiance
- כאן מוסבר איך ליצור מסד נתונים לדוגמה בדיסק משני.
- איך משכפלים מסד נתונים של MySQL באמצעות תמונות מצב של דיסק ב-Compute Engine
- מידע על שיבוט מסד נתונים מסוג MySQL באמצעות העברה של קובץ ייצוא באמצעות Cloud Storage.
- כאן מוסבר איך לשכפל מסד נתונים של MySQL ל-Cloud SQL על ידי העברת קובץ ייצוא באמצעות Cloud Storage.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Cloud de Confiance by S3NS, והשימוש בהם כרוך בתשלום:
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
- מפעילים את Compute Engine API. הפעלת ה-API
הגדרת הסביבה
כדי להשלים את המדריך הזה, צריך להגדיר את סביבת המחשוב עם הרכיבים הבאים:
- מכונת MySQL ב-Compute Engine (בשם
mysql-prod) שמייצגת את שרת מסד הנתונים של הייצור. - דיסק נוסף (בשם
mysql-prod-data) שמצורף לשרת הייצור שלכם לאחסון מסד הנתונים של הייצור. - עותק של מסד הנתונים
Employeesיובא אלmysql-prodכדי לדמות את מסד הנתונים של הייצור שרוצים לשכפל. - מכונת MySQL ב-Compute Engine (בשם
mysql-test) שמייצגת את שרת מסד הנתונים של הבדיקות. משכפלים את מסד הנתונים לשרת הזה.
התרשים הבא ממחיש את הארכיטקטורה הזו.
יצירת מכונת ה-VM לסביבת הייצור
כדי לדמות סביבת ייצור, מגדירים מכונה וירטואלית ב-Compute Engine שמריצה MySQL ב-Debian Linux.
המכונה הווירטואלית במדריך הזה משתמשת בשני דיסקים: דיסק בנפח 50 GB למערכת ההפעלה ולחשבונות המשתמשים, ודיסק בנפח 100 GB לאחסון מסד הנתונים.
ב-Compute Engine, שימוש בדיסקים נפרדים לא מניב שיפור בביצועים. ביצועי הדיסק נקבעים לפי קיבולת האחסון הכוללת של כל הדיסקים שמצורפים למופע ולפי המספר הכולל של המעבדים הווירטואליים במופע של המכונה הווירטואלית. לכן, מסד הנתונים וקובץ היומן יכולים להיות באותו דיסק.
פותחים את Cloud Shell.
מגדירים את האזור המועדף:
ZONE=us-east1-b REGION=us-east1 gcloud config set compute/zone "${ZONE}"יצירת מכונה של Compute Engine:
gcloud compute instances create mysql-prod \ --machine-type=n1-standard-2 \ --scopes=cloud-platform \ --boot-disk-size=50GB \ --boot-disk-device-name=mysql-prod \ --create-disk="mode=rw,size=100,type=pd-standard,name=mysql-prod-data,device-name=mysql-prod-data"הפקודה הזו מעניקה למכונה גישה מלאה לממשקי API של Cloud de Confiance , יוצרת דיסק משני בנפח 100GB ומצרפת את הדיסק למכונה. אפשר להתעלם מהאזהרה לגבי ביצועי הדיסק כי לא צריך ביצועים גבוהים במדריך הזה.
הגדרת הדיסק הנוסף
הדיסק השני שמצורף למופע הייצור מיועד לאחסון מסד הנתונים של הייצור. הדיסק הזה ריק, ולכן צריך ליצור מחיצה, לפרמט אותו ולטעון אותו.
נכנסים לדף VM instances במסוף Cloud de Confiance .
חשוב לוודא שמופיע סימן וי ירוק check ליד השם של מופע
mysql-prod, שמציין שהמופע מוכן.לוחצים על הלחצן SSH לצד מופע
mysql-prod. הדפדפן פותח חיבור לטרמינל של המופע.בחלון המסוף, מציגים רשימה של הדיסקים שמצורפים למופע:
lsblkהפלט שיתקבל:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk └─sda1 8:1 0 50G 0 part / sdb 8:16 0 100G 0 disk
הדיסק שנקרא
sdb(100GB) הוא דיסק הנתונים שלכם.מפרמטים את הדיסק
sdbויוצרים מחיצה אחת עם מערכת קבצים מסוג ext4:sudo mkfs.ext4 -m 0 -F -E lazy_itable_init=0,lazy_journal_init=0,discard \ /dev/sdbיוצרים את ספריית הנתונים של MySQL שתשמש כנקודת הטעינה של דיסק הנתונים:
sudo mkdir -p /var/lib/mysqlכדי להגדיר שהדיסק יותקן אוטומטית בנקודת ההרכבה שיצרתם, מוסיפים רשומה לקובץ
/etc/fstab:echo "UUID=`sudo blkid -s UUID -o value /dev/sdb` /var/lib/mysql ext4 discard,defaults,nofail 0 2" \ | sudo tee -a /etc/fstabטוענים את הדיסק:
sudo mount -avמסירים את כל הקבצים מדיסק הנתונים כדי ש-MySQL יוכל להשתמש בו כספריית נתונים:
sudo rm -rf /var/lib/mysql/*
התקנה של שרת MySQL
צריך להוריד ולהתקין את MySQL Community Edition. ספריית הנתונים של MySQL נוצרת בדיסק הנוסף.
בסשן ה-SSH שמחובר אל
mysql-prod, מורידים ומתקינים את חבילת ההגדרות של MySQL:wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb sudo dpkg -i mysql-apt-config_0.8.13-1_all.debכשמוצגת בקשה, בוחרים באפשרות MySQL Server & Cluster ואז בוחרים באפשרות mysql-5.7.
ברשימה, בוחרים באפשרות Ok כדי להשלים את ההגדרה של החבילה.
מרעננים את מטמון המאגר ומתקינים את חבילות mysql-community:
sudo apt-get update sudo apt-get install -y mysql-community-server mysql-community-clientאם מוצגת אזהרה שספריית הנתונים כבר קיימת, לוחצים על אישור.
כשמתבקשים לספק סיסמת root, יוצרים סיסמה ומזינים אותה. רושמים את הסיסמה או שומרים אותה באופן זמני במקום בטוח.
הורדה והתקנה של מסד הנתונים לדוגמה
בסשן ה-SSH שמחובר למכונת
mysql-prod, מתקינים את git:sudo apt-get install -y gitמשכפלים את מאגר GitHub שמכיל את סקריפטים של מסד הנתונים
Employees:git clone https://github.com/datacharmer/test_db.gitעוברים לספרייה של סקריפט מסד הנתונים
Employees:cd test_dbמריצים את הסקריפט
Employeesליצירת מסד הנתונים:mysql -u root -p -q < employees.sqlכשמוצגת בקשה, מזינים את סיסמת הבסיס שיצרתם קודם.
כדי לוודא שמסד הנתונים לדוגמה פועל, אפשר להריץ שאילתה שסופרת את מספר השורות בטבלה
employees:mysql -u root -p -e "select count(*) from employees.employees;"כשתתבקשו, תצטרכו להזין את סיסמת הבסיס שיצרתם קודם.
הפלט שיתקבל:
+----------+ | count(*) | +----------+ | 300024 | +----------+
יצירת מופע של מכונה וירטואלית לבדיקה
בקטע הזה יוצרים מכונה וירטואלית של MySQL בשם mysql-test כיעד למסד הנתונים המשוכפל. ההגדרה של המופע הזה זהה לזו של מופע הייצור. עם זאת, לא יוצרים דיסק נתונים שני, אלא מחברים את דיסק הנתונים בהמשך המדריך הזה.
פותחים את Cloud Shell.
יוצרים את מכונת ה-MySQL לבדיקה:
gcloud compute instances create mysql-test \ --machine-type=n1-standard-2 \ --scopes=cloud-platform \ --boot-disk-size=50GB \ --boot-disk-device-name=mysql-testאפשר להתעלם מהאזהרה לגבי ביצועי הדיסק כי לא צריך ביצועים גבוהים לצורך המדריך הזה.
התקנת שרת MySQL במכונה הווירטואלית לבדיקה
צריך גם להוריד ולהתקין את MySQL Community Edition במכונה הווירטואלית mysql-test.
בסשן ה-SSH שמחובר אל
mysql-test, מורידים ומתקינים את חבילת ההגדרות של MySQL:wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb sudo dpkg -i mysql-apt-config_0.8.13-1_all.debכשמוצגת בקשה, בוחרים באפשרות MySQL Server & Cluster ואז בוחרים באפשרות mysql-5.7.
ברשימה, בוחרים באפשרות Ok כדי להשלים את ההגדרה של החבילה.
מרעננים את מטמון המאגר ומתקינים את חבילות mysql-community:
sudo apt-get update sudo apt-get install -y mysql-community-server mysql-community-clientכשמתבקשים לספק סיסמת root, יוצרים סיסמה ומזינים אותה. רושמים את הסיסמה או שומרים אותה באופן זמני במקום בטוח.
שיבוט מסד הנתונים באמצעות קובצי snapshot של דיסק ב-Compute Engine
אחת הדרכים לשכפל מסד נתונים של MySQL שפועל ב-Compute Engine היא לאחסן את מסד הנתונים בדיסק נתונים נפרד ולהשתמש בתמונות מצב של דיסק מתמשך כדי ליצור שיבוט של הדיסק הזה.
תמונות מצב של Persistent Disk מאפשרות לכם לקבל עותק של הנתונים בדיסק בנקודת זמן מסוימת. תזמון של תמונות מצב של הדיסק הוא דרך אחת לגבות את הנתונים באופן אוטומטי.
בקטע הזה של המדריך תלמדו:
- יוצרים קובץ snapshot של דיסק הנתונים של שרת הייצור.
- יוצרים דיסק חדש מקובץ ה-snapshot.
- מפעילים את הדיסק החדש בשרת הבדיקה.
- מפעילים מחדש את שרת MySQL במכונת הבדיקה כדי שהשרת ישתמש בדיסק החדש כדיסק נתונים.
בתרשים הבא מוצג תהליך השכפול של מסד נתונים באמצעות תמונות מצב של דיסקים.
יצירת קובץ snapshot של הדיסק
פותחים את Cloud Shell.
יוצרים snapshot של דיסק הנתונים באותו אזור שבו נמצא המופע של המכונה הווירטואלית:
gcloud compute disks snapshot mysql-prod-data \ --snapshot-names=mysql-prod-data-snapshot \ --zone="${ZONE}"אחרי כמה דקות, התמונה תיווצר.
צירוף תמונת המצב של הדיסק למכונת הבדיקה
צריך ליצור דיסק נתונים חדש מקובץ ה-snapshot שיצרתם ואז לצרף אותו למופע mysql-test.
פותחים את Cloud Shell.
יוצרים דיסק אחסון מתמיד (persistent disk) חדש באמצעות קובץ ה-snapshot של דיסק הייצור, כדי להשתמש בתוכן שלו:
gcloud beta compute disks create mysql-test-data \ --size=100GB \ --source-snapshot=mysql-prod-data-snapshot \ --zone="${ZONE}"מחברים את הדיסק החדש למכונת
mysql-testעם הרשאות קריאה וכתיבה:gcloud compute instances attach-disk mysql-test \ --disk=mysql-test-data --mode=rw
צירוף דיסק הנתונים החדש ב-Linux
כדי להשתמש בדיסק הנתונים המשוכפל כספריית הנתונים של MySQL, צריך לעצור את מופע MySQL ולהטמיע את הדיסק.
בסשן ה-SSH שמחובר אל
mysql-test, מפסיקים את שירות MySQL:sudo service mysql stopבחלון המסוף, מציגים רשימה של הדיסקים שמצורפים למופע:
lsblkהפלט שיתקבל:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk └─sda1 8:1 0 50G 0 part / sdb 8:16 0 100G 0 disk
הדיסק שנקרא
sdb(100GB) הוא דיסק הנתונים שלכם.מציבים את דיסק הנתונים של MySQL בספריית הנתונים של MySQL:
sudo mount -o discard,defaults /dev/sdb /var/lib/mysqlכשמפעילים את הדיסק הזה, קבצי ההגדרות וטבלאות של MySQL מוסתרים ומוחלפים בתוכן של הדיסק.
בעזרת הפקודה הזו, הדיסק מותקן באופן זמני ולא מותקן מחדש בהפעלה של המערכת. כדי לטעון את הדיסק באתחול המערכת, יוצרים רשומה
fstab. מידע נוסף זמין בקטע הגדרת הדיסק הנוסף שמופיע בחלק הראשון של המדריך הזה.
הפעלת MySQL במכונת הבדיקה
בסשן ה-SSH שמחובר אל
mysql-test, מפעילים את שירות MySQL:sudo service mysql startכדי לוודא שהמסד הנתונים המשוכפל פועל, מריצים שאילתה שסופרת את מספר השורות בטבלה
employees:mysql -u root -p -e "select count(*) from employees.employees;"כשמופיעה בקשה, מזינים את סיסמת הבסיס של שרת מסד הנתונים
mysql-prod. הסיסמה של משתמש הבסיס של מופע הייצור נדרשת כי כל ספריית הנתונים של MySQL היא שיבוט של ספריית הנתונים של מופעmysql-prod, ולכן כל מסדי הנתונים, משתמשי מסדי הנתונים והסיסמאות שלהם מועתקים.+----------+ | count(*) | +----------+ | 300024 | +----------+
מספר השורות זהה למספר השורות במופע
mysql-prod.
אחרי שראיתם איך לשכפל מסד נתונים באמצעות תמונות מצב של דיסק לאחסון מתמיד, אולי תרצו לנסות לשכפל מסד נתונים באמצעות ייצוא וייבוא. כדי להשלים את ההדרכה לגישה השנייה הזו, צריך לבטל את הניתוק של הדיסק המשוכפל.
ביטול הטעינה של הדיסק המשובט
כדי לבטל את הניתוק של הדיסק המשובט שיצרתם באמצעות תמונות מצב של דיסקים:
בסשן ה-SSH שמחובר למכונת
mysql-test, מפסיקים את שירות MySQL:sudo service mysql stopמבטלים את הטעינה של דיסק הנתונים המשוכפל מספריית הנתונים של MySQL:
sudo umount /var/lib/mysqlמפעילים מחדש את שירות MySQL:
sudo service mysql start
שיבוט באמצעות ייצוא וייבוא
שיטה נוספת לשכפול מסד נתונים של MySQL שפועל ב-Compute Engine היא להשתמש בייצוא המובנה של MySQL (באמצעות mysqldump) ובייבוא. בגישה הזו, אתם מעבירים את קובץ הייצוא באמצעות Cloud Storage.
בקטע הזה של המדריך נעשה שימוש במשאבים שיצרתם בקטע שיבוט מסד הנתונים באמצעות קובצי snapshot של דיסקים ב-Compute Engine במדריך הזה. אם לא השלמתם את החלק הזה, אתם צריכים לעשות זאת לפני שתמשיכו.
בקטע הזה של המדריך תלמדו:
- יצירת קטגוריה של Cloud Storage.
- מייצאים את מסד הנתונים במופע הייצור, וכותבים אותו ב-Cloud Storage.
- מייבאים את קובץ הייצוא למופע הבדיקה, וקוראים אותו מ-Cloud Storage.
בתרשים הבא מוצג תהליך שיבוט של מסד נתונים באמצעות העברה של ייצוא דרך Cloud Storage.
מכיוון שאפשר לתת גישה ל-Cloud Storage למערכות מחוץ ל- Cloud de Confiance , אתם יכולים להשתמש בגישה הזו כדי לשכפל מסדי נתונים ממופעי MySQL חיצוניים.
יצירת קטגוריה של Cloud Storage
צריך ליצור קטגוריה של Cloud Storage שבה יישמרו קובצי הייצוא בזמן ההעברה ממופע mysql-prod למופע mysql-test.
פותחים את Cloud Shell.
יוצרים קטגוריה של Cloud Storage באותו אזור שבו נמצאים מופעי מכונות וירטואליות:
gcloud storage buckets create "gs://$(gcloud config get-value project)-bucket" --location="${REGION}"
ייצוא מסד הנתונים
בסביבת הייצור, יכול להיות שאתם כבר יוצרים גיבויים באמצעות mysqldumpייצוא קבצים. אתם יכולים להשתמש בגיבויים האלה כבסיס לשכפול של מסד הנתונים.
במדריך הזה, יוצרים קובץ ייצוא חדש באמצעות mysqldump, שלא משפיע על לוחות זמנים קיימים של גיבויים מלאים או מצטברים.
בסשן ה-SSH שמחובר למכונה
mysql-prod, מייצאים את מסד הנתוניםEmployees, ומעבירים אותו בסטרימינג לאובייקט Cloud Storage בקטגוריה שיצרתם קודם:mysqldump --user=root -p --default-character-set=utf8mb4 --add-drop-database --verbose --hex_blob \ --databases employees |\ gcloud storage cp - "gs://$(gcloud config get-value project)-bucket/employees-dump.sql"כשמופיעה בקשה, מזינים את סיסמת הבסיס של שרת מסד הנתונים
mysql-prod.כדי להימנע מבעיות בקידוד התווים, צריך להשתמש בערכת התווים
utf8mb4בייצוא.האפשרות
--add-drop-databaseמשמשת כדי שההצהרותDROP DATABASEו-CREATE DATABASEייכללו בייצוא.
ייבוא הקובץ שיוצא
בסשן ה-SSH שמחובר למופע
mysql-test, מעבירים בסטרימינג את הקובץ המיוצא מהקטגוריה של Cloud Storage לאפליקציית שורת הפקודהmysql:gcloud storage cat "gs://$(gcloud config get-value project)-bucket/employees-dump.sql" |\ mysql --user=root -p --default-character-set=utf8mb4כשמופיעה בקשה, מזינים את סיסמת הבסיס של שרת מסד הנתונים
mysql-test.כדי למנוע בעיות בקידוד התווים, צריך להשתמש בערכת התווים
utf8mb4במהלך הייבוא.כדי לוודא שהמסד הנתונים המשוכפל פועל, מריצים שאילתה שסופרת את מספר השורות בטבלה
employees:mysql -u root -p -e "select count(*) from employees.employees;"כשמופיעה בקשה, מזינים את סיסמת הבסיס של שרת מסד הנתונים
mysql-test.+----------+ | count(*) | +----------+ | 300024 | +----------+
מספר השורות זהה למספר השורות במופע
mysql-prod.
שימוש ב-Cloud SQL כיעד לשכפול
אם מסד הנתונים של היעד מתארח ב-Cloud SQL, ומסד הנתונים של המקור נמצא ב-Compute Engine, המנגנון הנתמך היחיד לשיבוט הוא ייצוא מסד הנתונים ל-Cloud Storage, ולאחר מכן ייבוא מסד הנתונים ל-Cloud SQL.
כפי שמוסבר במסמכי התיעוד של Cloud SQL, אפשר לייבא ל-Cloud SQL קובץ מיוצא רק אם הוא לא מכיל טריגרים, פרוצדורות מאוחסנות, תצוגות או פונקציות.
אם מסד הנתונים שלכם מסתמך על אחד מהרכיבים האלה, אתם צריכים להחריג אותם מהייצוא באמצעות ארגומנטים של שורת הפקודה --skip-triggers ו---ignore-table [VIEW_NAME], ואז ליצור אותם מחדש באופן ידני אחרי הייבוא.
יצירת מכונות של Cloud SQL ל-MySQL
פותחים את Cloud Shell.
יוצרים מכונה של Cloud SQL ל-MySQL שפועלת בה אותה גרסת מסד נתונים כמו במכונה
mysql-prod:gcloud sql instances create mysql-cloudsql \ --tier=db-n1-standard-2 --region=${REGION} --database-version MYSQL_5_7אחרי כמה דקות, מסד הנתונים של Cloud SQL נוצר.
איפוס הסיסמה של משתמש Root לערך ידוע:
gcloud sql users set-password root \ --host=% --instance=mysql-cloudsql --prompt-for-passwordכשמתבקשים לספק סיסמת root, יוצרים סיסמה ומזינים אותה. רושמים את הסיסמה או שומרים אותה באופן זמני במקום בטוח.
ייצוא מסד הנתונים
כדי לייצא את מסד הנתונים בפורמט שמתאים לייבוא ל-Cloud SQL, צריך להחריג את כל התצוגות במסד הנתונים.
בסשן ה-SSH שמחובר למכונת
mysql-prod, מגדירים משתנה סביבה שמכיל קבוצה של ארגומנטים של שורת הפקודה עבור הפקודהmysqldump, כך שהיא תתעלם מהתצוגות במסד הנתוניםEmployees:DATABASE_NAME=employees IGNORE_TABLES_ARGS="`mysql -u root -p -s -s -e \" SELECT CONCAT('--ignore-table ${DATABASE_NAME}.',TABLE_NAME) FROM information_schema.TABLES WHERE TABLE_TYPE LIKE 'VIEW' AND TABLE_SCHEMA = '${DATABASE_NAME}'; \"`"כשמופיעה בקשה, מזינים את סיסמת הבסיס של שרת מסד הנתונים
mysql-prod.כדי לוודא שהמשתנים הוגדרו בצורה נכונה, אפשר לראות את התוכן שלהם:
echo "${IGNORE_TABLES_ARGS}"--ignore-table employees.current_dept_emp --ignore-table employees.dept_emp_latest_date
מייצאים את מסד הנתונים
Employees, לא כולל טריגרים ותצוגות, ומעבירים אותו בסטרימינג ישירות לאובייקט Cloud Storage בקטגוריה שיצרתם קודם:mysqldump --user=root -p --default-character-set=utf8mb4 --add-drop-database --verbose \ --hex-blob --skip-triggers --set-gtid-purged=OFF \ $IGNORE_TABLES_ARGS \ --databases employees |\ gcloud storage cp - "gs://$(gcloud config get-value project)-bucket/employees-cloudsql-import.sql"כשמופיעה בקשה, מזינים את סיסמת הבסיס של שרת מסד הנתונים
mysql-prod.
עדכון הרשאות לאובייקט
צריך להגדיר את ההרשאות הנכונות גם בדלי Cloud Storage וגם באובייקט הייצוא, כדי שחשבון השירות של Cloud SQL יוכל לקרוא אותם.
ההרשאות האלה מוגדרות באופן אוטומטי כשמשתמשים במסוף Cloud de Confiance כדי לייבא את האובייקט, או שאפשר להגדיר אותן באמצעות פקודות gcloud.
פותחים את Cloud Shell.
מגדירים משתנה סביבה שמכיל את הכתובת של חשבון השירות של מופע Cloud SQL:
CLOUDSQL_SA="$(gcloud sql instances describe mysql-cloudsql --format='get(serviceAccountEmailAddress)')"מוסיפים את חשבון השירות למדיניות ניהול הזהויות והרשאות הגישה (IAM) של הקטגוריה כמשתמש עם הרשאות קריאה וכתיבה:
gcloud storage buckets add-iam-policy-binding "gs://$(gcloud config get-value project)-bucket/" \ --member=user:"${CLOUDSQL_SA}" --role=roles/storage.objectUser
ייבוא מסד הנתונים שיוצא
פותחים את Cloud Shell.
מייבאים את הקובץ שייצאתם למכונת Cloud SQL:
gcloud sql import sql mysql-cloudsql \ "gs://$(gcloud config get-value project)-bucket/employees-cloudsql-import.sql"כשתופיע בקשה, כותבים
y.כדי לוודא שהמסד הנתונים המשוכפל פועל, מריצים שאילתה שסופרת את מספר השורות בטבלה
employees:echo "select count(*) from employees.employees;" |\ gcloud sql connect mysql-cloudsql --user=rootכשתתבקשו, תצטרכו להזין את סיסמת הבסיס של שרת מסד הנתונים
mysql-cloudsql.הפלט שיתקבל:
Connecting to database with SQL user [root].Enter password: count(*) 300024
מספר השורות זהה למספר השורות במופע
mysql-prod.
מידע נוסף למערכות ייצור
בקטגוריות הבאות מפורטות שיטות מומלצות נוספות למערכות הייצור.
שימוש בתמונות מצב של דיסקים
לגיבויים פיזיים (כמו תמונות מצב של דיסקים), מומלץ לעצור את הכתיבה למסד הנתונים לפני שיוצרים תמונת מצב, כפי שמצוין במסמכי התיעוד של MySQL. כדי לעשות את זה, משתמשים בפקודה FLUSH TABLES WITH READ LOCK. אחרי שקובץ ה-snapshot מוכן, אפשר להשתמש בפקודה UNLOCK TABLES כדי להפעיל מחדש את פעולות הכתיבה.
במסדי נתונים שמשתמשים בטבלאות InnoDB, מומלץ ליצור את התמונה ישירות בלי להריץ קודם את הפקודה FLUSH TABLES WITH READ LOCK. כך מסד הנתונים יכול להמשיך לפעול בלי השפעות שליליות, אבל יכול להיות שהתמונה תהיה במצב לא עקבי. עם זאת, אם זה קורה, מנוע InnoDB יכול לבנות מחדש את הטבלאות למצב עקבי כשהשיבוט מתחיל.
במסדי נתונים שמשתמשים בטבלאות MyISAM, הפעלת הפקודה FLUSH TABLES WITH READ LOCK חוסמת את כל פעולות הכתיבה לטבלאות, כך שמסד הנתונים יהיה לקריאה בלבד עד שמריצים את הפקודה UNLOCK TABLES.
אם מצלמים תמונת מצב בלי קודם לנקות ולנעול את הטבלאות, יש סיכון שמסד הנתונים המשוכפל החדש יכיל נתונים לא עקביים או שיהיה פגום.
לכן, כדי לקבל תמונת מצב עקבית במסדי נתונים באמצעות טבלאות MyISAM, מומלץ להריץ את הפקודה FLUSH TABLES WITH READ LOCK על עותק לקריאה וליצור תמונת מצב של העותק הזה, כדי שהביצועים של מסד הנתונים הראשי (המאסטר) לא יושפעו.
שימוש בפקודה mysqldump
כדי ליצור קובץ ייצוא שתואם למסד הנתונים של המקור, הפקודה mysqldump נועלת את כל הטבלאות במהלך פעולת הייצוא. המשמעות היא שפעולות כתיבה למסד הנתונים נחסמות בזמן הייצוא של מסד הנתונים.
לכן מומלץ להריץ את הפקודה mysqldump מול עותק לקריאה של מסד הנתונים הראשי, כדי שלא תהיה חסימה של מסד הנתונים הראשי.
הסרת המשאבים
כדי להימנע מחיובים בחשבון Cloud de Confiance על המשאבים שבהם השתמשתם במדריך הזה, אתם יכולים למחוק את Cloud de Confiance הפרויקט שיצרתם לצורך המדריך.
- במסוף Cloud de Confiance , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
המאמרים הבאים
איך עוקבים אחרי שאילתות איטיות ב-MySQL באמצעות Cloud Monitoring
כדאי להעמיק את הקריאה ולהכיר דוגמאות לארכיטקטורות, תרשימים ושיטות מומלצות בנושאי Google Cloud. כל אלה זמינים במרכז הארכיטקטורה של Cloud.