אתם יכולים להריץ את כלי השירות mysqldump ישירות מול מסד הנתונים של MySQL, באמצעות האפשרויות שאתם צריכים. עם זאת, אם אתם מייצאים כדי לייבא את הנתונים למסד נתונים של Cloud SQL, השתמשו בכלי mysqldump עם הדגלים הבאים:
--databasesמציינים רשימה מפורשת של מסדי נתונים לייצוא. הרשימה הזו לא יכולה להכיל את מסדי הנתונים של המערכת (sys,mysql,performance_schemaו-information_schema).--hex-blobאם מסד הנתונים מכיל שדות בינאריים, צריך להשתמש בדגל הזה כדי לוודא שהשדות הבינאריים מיובאים בצורה נכונה.--single-transactionמתחילה עסקה לפני ההפעלה. במקום לנעול את כל מסד הנתונים, הפקודה הזו מאפשרת ל-mysqldump לקרוא את מסד הנתונים במצב הנוכחי, וכך ליצור dump עקבי של הנתונים.--routinesכדי לכלול פונקציות ותהליכים מאוחסנים.כשמשתמשים ב-
mysqldumpבגרסה 8 ואילך כדי לייצא מסדי נתונים של MySQL בגרסאות שקודמות ל-8:--column-statistics=0הדגל הזה מסיר את הטבלה COLUMN_STATISTICS מהייצוא של מסד הנתונים כדי למנוע את השגיאה
Unknown table 'COLUMN_STATISTICS' in information_schema (1109). מידע נוסף זמין במאמר אבחון בעיות.
מומלץ גם להשתמש בדגלים הבאים:
--no-autocommit--default-character-set=utf8mb4--master-data
ממכונה עם קישוריות רשת לשרת MySQL, מריצים את הפקודה הבאה:
mysqldump \
-h [SOURCE_ADDR] -P [SOURCE_PORT] -u [USERNAME] -p \
--databases [DBS] \
--hex-blob \
--no-autocommit \
--default-character-set=utf8mb4 \
--master-data=1 \
--single-transaction \
--routines \
| gzip \
| gcloud storage cp - gs://[BUCKET_NAME]/[DUMP_FILENAME].gz
אם מקור ההעברה הוא שירות מסד נתונים רלציוני (RDS) ל-MySQL:
- המאפיין
master-dataלא נתמך. - אם שרת מסד הנתונים של המקור תומך ב-GTID, צריך להשתמש במאפיין
--set-gtid-purged=on. אחרת, אין להשתמש במאפיין הזה. - אם אתם משתמשים בגיבוי ידני כדי להעביר את הנתונים, אתם צריכים לבצע את ההעברה עם GTID מופעל.
הפקודה הזו עשויה להיראות כמו בדוגמה הבאה:
mysqldump \
-h [SOURCE_ADDR] -P [SOURCE_PORT] -u [USERNAME] -p \
--databases [DBS] \
--hex-blob \
--no-autocommit \
--default-character-set=utf8mb4 \
--set-gtid-purged=on \
--single-transaction \
--routines \
| gzip \
| gcloud storage cp - gs://[BUCKET_NAME]/[DUMP_FILENAME].gz
בנוסף, צריך להגדיר את מכונות ה-RDS כך שישמרו את יומני ה-binlog למשך זמן ארוך יותר. הפקודה הזו עשויה להיראות כמו בדוגמה הבאה:
# Sets the retention period to one week.
call mysql.rds_set_configuration('binlog retention hours', 168);
מחליפים את [PROPERTIES_IN_BRACKETS] בערכים הבאים:
| מאפיין (property) | ערך |
| [SOURCE_ADDR] | כתובת ה-IPv4 או שם המארח של שרת מסד הנתונים של המקור. |
| [SOURCE_PORT] | היציאה של שרת מסד הנתונים במקור. |
| [USERNAME] | חשבון המשתמש ב-MySQL. |
| [DBS] | רשימה של מסדי הנתונים בשרת של מסד הנתונים במקור שרוצים לכלול ב-dump, מופרדים ברווחים. משתמשים בפקודה SHOW DATABASES של MySQL כדי להציג את רשימת מסדי הנתונים. |
| [BUCKET_NAME] | הקטגוריה ב-Cloud Storage שנוצרה על ידי המשתמש ומשמשת לאחסון קובץ ה-dump (לדוגמה, replica-bucket). |
| [DUMP_FILENAME] | שם הקובץ של ה-dump, שמסתיים בסיומת קובץ .gz (לדוגמה, source-database.sql.gz). |
המאמרים הבאים
הוראות מפורטות להעברה מופיעות במאמר תחילת העבודה עם העברות ל-Cloud SQL ל-MySQL.