אפשר להריץ את כלי השירות mysqldump ישירות מול מסד הנתונים של MySQL, באמצעות האפשרויות שנדרשות לכם. עם זאת, אם מייצאים כדי לייבא את הנתונים למסד נתונים של Cloud SQL, צריך להשתמש בכלי mysqldump עם הדגלים הבאים:
--databasesמציינים רשימה מפורשת של מסדי נתונים לייצוא. הרשימה הזו לא יכולה לכלול את מסדי הנתונים של המערכת (sys,mysql,performance_schemaו-information_schema).--hex-blobאם מסד הנתונים מכיל שדות בינאריים, צריך להשתמש בדגל הזה כדי לוודא שהשדות הבינאריים מיובאים בצורה נכונה.--single-transactionמתחיל עסקה לפני ההפעלה. במקום לנעול את כל מסד הנתונים, הפקודה מאפשרת ל-mysqldump לקרוא את מסד הנתונים במצב הנוכחי, וכך ליצור dump עקבי של הנתונים.--routinesכדי לכלול פונקציות ותהליכים מאוחסנים.כשמשתמשים בגרסה
mysqldump8 ואילך כדי לייצא מסדי נתונים של 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). |