שימוש בהעברות מהירות כדי לעבור ל-Cloud SQL


בדף הזה מוסבר איך לבצע העברות מהירות של מסדי נתונים הומוגניים של PostgreSQL ל-Cloud SQL ל-PostgreSQL.

סקירה כללית

העברות מהירות הן תהליך העברה קל ורציף לתרחישים הומוגניים של PostgreSQL. כשמשתמשים בהעברות מהירות, השירות Database Migration Service יכול להגדיר באופן אוטומטי את כל מה שצריך כדי להעביר את מסדי הנתונים: רכיבי רשת (מחברי רשת, רשתות משנה, הגדרות של קישוריות פרטית), פרופילי חיבור ומשימות העברה.

בהעברות מהירות, אתם יכולים להעביר את הנתונים למכונה קיימת של Cloud SQL, או ליצור מכונה חדשה בזמן שאתם מגדירים את ההעברה. העברות מהירות מתאימות במיוחד במקרים הבאים:

  • העברות בסיסיות, שבהן לא צריך שליטה מדויקת בהגדרות המקביליות של ה-data dump.
  • העברת מסד הנתונים מפרויקט Google Cloud אחד לפרויקט אחר. כשמגדירים העברה מהירה, אפשר ליצור את מכונת היעד בפרויקט אחר מזה של המקור, ולהגדיר את Database Migration Service כך שייצור את מחבר הרשת ואת רשת המשנה ברשת של הענן הווירטואלי הפרטי (VPC) של פרויקט אחר.
  • העברה ממקורות שיש להם כתובת IP פרטית ברשת Google Cloudשל הענן הווירטואלי הפרטי (VPC), כמו מסדי נתונים בניהול עצמי ב-Compute Engine או מכונות של Cloud SQL ל-PostgreSQL שמופעלת בהן רשת פרטית.

    יכול להיות שמקורות שמתארחים מחוץ ל- Google Cloud יצטרכו רכיבי רשת נוספים (כמו חיבור דרך VPN) כדי שאפשר יהיה להגיע אליהם בכתובת IP פרטית ברשת ה-VPC.

  • למסד הנתונים של המקור צריכה להיות כתובת IP פרטית שהוקצתה ברשת ה-VPC. ‫Database Migration Service מתחבר למסד הנתונים של המקור באמצעות ממשקי Private Service Connect (מחברי רשת). אי אפשר להשתמש בקישוריות של כתובות IP ציבוריות בהעברות נתונים מהירות.

מידע נוסף על העברות מהירות זמין במאמר סקירה כללית על העברות מהירות במסמכי התיעוד הראשיים של Database Migration Service.

לפני שמתחילים

  1. בודקים אם העברות מהירות יכולות לתמוך באופן מלא בתרחיש שלכם. מגבלות על העברה מהירה
  2. בדף לבחירת הפרויקט במסוף Google Cloud , בוחרים פרויקט ב- או יוצרים אותו. Google Cloud

    כניסה לדף לבחירת הפרויקט

  3. מפעילים את ממשקי ה-API של Database Migration Service,‏ Compute Engine,‏ Network Connectivity Center ו-Cloud SQL Admin.

    הפעלת ממשקי ה-API

התפקידים הנדרשים

כדי לקבל את ההרשאות שנדרשות להפעלת העברות מהירות ל-Cloud SQL באמצעות Database Migration Service, בקשו מהאדמין להקצות את התפקידים הנדרשים של ניהול זהויות והרשאות גישה (IAM) לחשבונות שמעורבים בהעברה בפרויקטים הרלוונטיים. למידע נוסף על הקצאת תפקידים, קראו את המאמר ניהול הגישה במסמכי התיעוד של IAM.

תפקידים והרשאות בפרויקט המקור

מקצים את התפקידים הבאים לחשבונות ספציפיים בפרויקט ב- Google Cloud שבו נמצא מסד הנתונים המקורי:

  • לחשבון המשתמש שמבצע את ההעברה: התפקיד אדמין של רשת Compute‏ (roles/compute.networkAdmin)
  • לחשבון השירות של Database Migration Service בפרויקט היעד: Compute Network Viewer (roles/compute.networkViewer)

    חשבון השירות של Database Migration Service נוצר כשמפעילים את Database Migration Service API. כתובת האימייל שמשויכת לחשבון הזה נוצרת באופן אוטומטי ואי אפשר לשנות אותה. כתובת האימייל הזו מבוססת על הפורמט הבא:

    service-DESTINATION_PROJECT_NUMBER@gcp-sa-datamigration.

התפקידים המוגדרים מראש האלה מכילים את ההרשאות שנדרשות כדי להגדיר קישוריות בפרויקט של מסד הנתונים במקור, כחלק מהעברה מהירה באמצעות Database Migration Service. כדי לראות את ההרשאות הנדרשות, מרחיבים את הקטע Required permissions (source):

ההרשאות הנדרשות (מקור)

כדי לבצע העברות הומוגניות בהפעלה מהירה באמצעות Database Migration Service, נדרשות ההרשאות הבאות:

בחשבון המשתמש שמבצע את ההעברה:

  • compute.networks.*
  • compute.subnetworks.*
  • compute.networkAttachments.*

לחשבון השירות של Database Migration Service בפרויקט היעד: compute.networkAttachments.get.

תפקידים והרשאות בפרויקט היעד

מקצים את התפקידים הבאים לחשבון המשתמש שמבצע את ההעברה בפרויקט ב- Google Cloud שבו נמצא מסד הנתונים ביעד:

התפקידים המוגדרים מראש האלה מכילים את ההרשאות שנדרשות כדי להגדיר את רכיבי ההעברה הנדרשים בפרויקט של מסד הנתונים ביעד, כחלק מהעברה מהירה באמצעות Database Migration Service. כדי לראות את ההרשאות הנדרשות, מרחיבים את הקטע Required permissions (destination):

הרשאות נדרשות (יעד)

כדי לבצע העברות הומוגניות בהתחלה מהירה באמצעות Database Migration Service, נדרשות ההרשאות הבאות:

  • datamigration.*
  • cloudsql.instances.create
  • cloudsql.instances.delete
  • cloudsql.instances.get
  • cloudsql.instances.list
  • cloudsql.instances.update
  • cloudsql.instances.connect
  • cloudsql.instances.executeSql
  • cloudsql.instances.export
  • cloudsql.instances.import
  • cloudsql.instances.login
  • cloudsql.operations.get
  • cloudsql.users.get
  • cloudsql.users.list
  • cloudsql.users.create
  • cloudsql.users.update
  • cloudsql.users.delete

הגדרת מסד הנתונים של המקור

כדי להגדיר את מסד הנתונים של PostgreSQL כמקור:

  1. יוצרים חשבון משתמש ייעודי להעברה במכונה שלכם.
    • במקורות של Cloud SQL ל-PostgreSQL, קראו את המאמר יצירת משתמש במסמכי התיעוד של Cloud SQL.
    • למקורות אחרים, עיינו במסמכי התיעוד של ספק מסד הנתונים או במאמר יצירה וניהול של משתמשים במסמכי התיעוד של PostgreSQL.
  2. מקצים את ההרשאות הנדרשות לחשבון המשתמש הייעודי להעברה. מריצים את הפקודות הבאות לכל מסד נתונים שרוצים להעביר:
    -- Grant the REPLICATION attribute
    ALTER ROLE MIGRATION_USER REPLICATION;
    
    -- Grant database-level permissions.
    -- Repeat for each database you want to migrate.
    GRANT CONNECT, CREATE ON DATABASE DATABASE_NAME TO MIGRATION_USER;
    
    -- Grant schema-level usage.
    -- Repeat for each schema in each database you want to migrate.
    GRANT USAGE ON SCHEMA SCHEMA_NAME TO MIGRATION_USER;

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫MIGRATION_USER בשם של חשבון המשתמש להעברה.
    • ‫DATABASE_NAME בשם מסד הנתונים שרוצים להעביר.
    • ‫SCHEMA_NAME בשם הסכימה במסד הנתונים שרוצים להעביר.
  3. לחשבון המשתמש שמשמש להעברה צריכה להיות גישת בעלות לטבלאות שאתם מעבירים. כדי לתת את רמת הגישה הזו, מבצעים אחת מהפעולות הבאות:
    • רק למקורות שהם לא Cloud SQL ל-PostgreSQL: מקצים את התפקיד SUPERUSER ב-PostgreSQL לחשבון ההעברה.
    • בכל המקורות: מוסיפים את חשבון המשתמש להעברה לקבוצת המשתמשים שבבעלותה הטבלאות. מריצים את הפקודה הבאה:
      -- Grant table ownership.
      GRANT TABLE_OWNER_GROUP_NAME TO MIGRATION_USER;

      מחליפים את מה שכתוב בשדות הבאים:

      • TABLE_OWNER_GROUP_NAME בשם של קבוצת המשתמשים שבבעלותה כל טבלה שרוצים להעביר.
      • ‫MIGRATION_USER בשם של חשבון המשתמש להעברה.
  4. בטבלאות שאין בהן מפתחות ראשיים: Database Migration Service לא משכפל פעולות UPDATE או DELETE בטבלאות שאין בהן מפתחות ראשיים במהלך שלב סימון הנתונים שהשתנו (CDC). אם רוצים לכלול פעולות כאלה ברפליקציה, צריך לשנות טבלאות ללא מפתחות ראשיים באמצעות REPLICA IDENTITY:
    ALTER TABLE TABLE_NAME REPLICA IDENTITY FULL;
    ALTER TABLE TABLE_NAME REPLICA IDENTITY USING INDEX INDEX_NAME;

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫TABLE_NAME הוא שם הטבלה שאין בה מפתחות ראשיים.
    • ‫INDEX_NAME הוא האינדקס הייחודי שמאפשר לעקוב אחרי שורות מטבלאות בלי מפתחות ראשיים.
  5. מגדירים את הרפליקציה באמצעות דגלים לניהול מסד נתונים.

    מקורות בניהול עצמי

    כדי לשמור שינויים בדגלים לניהול מסד נתונים, צריך להפעיל מחדש את מסד הנתונים. בדוגמאות הבאות נעשה שימוש בשאילתות SQL כדי לשנות ערכי דגלים. אם אתם לא יכולים להריץ שאילתות SQL ישירות, עיינו במסמכי התיעוד של הספק כדי לראות את השלבים לשינוי הדגלים האלה.

    1. מגדירים את הפרמטר wal_level לערך logical. מריצים את הפקודה הבאה:
      ALTER SYSTEM SET wal_level = 'logical';
    2. מגדירים את הפרמטר wal_sender_timeout לערך 0. הערך הזה משבית את מנגנון הזמן הקצוב לתפוגה שמשמש לסיום חיבורי רפליקציה לא פעילים. מריצים את הפקודה הבאה:
      ALTER SYSTEM SET wal_sender_timeout = 0;
          
    3. מגדירים את המספר המקסימלי של משבצות שכפול באמצעות הפרמטר max_replication_slots. הפרמטר הזה צריך להיות מוגדר לפחות למספר מסדי הנתונים שאתם מעבירים בכל משימת העברה, בתוספת כמה רזרבות לסנכרון טבלאות.

      לדוגמה, אם אתם מעבירים 5 מסדי נתונים ויש 2 משימות העברה שנוצרו למכונה של המקור, מספר משבצות השכפול צריך להיות לפחות 5 * 2 = 10, בנוסף למספר משבצות השכפול שכבר השתמשתם בהן.

      כדי להגדיר את הפרמטר הזה, מריצים את הפקודה הבאה:

      ALTER SYSTEM SET max_replication_slots = NUMBER_OF_SLOTS;
          
      כאשר NUMBER_OF_SLOTS מייצג את המספר המקסימלי של משבצות שכפול.
    4. מגדירים את הפרמטר max_wal_senders לערך ששווה לפחות ל-max_replication_slots, בתוספת מספר השולחים שכבר נמצאים בשימוש במכונה.

      לדוגמה, אם הפרמטר max_replication_slots מוגדר לערך 10, וכבר משתמשים ב-2 שולחים, מספר התהליכים של שולחי WAL שפועלים בו-זמנית יהיה 10 + 2 = 12.

      כדי להגדיר את הפרמטר הזה, מריצים את הפקודה הבאה:

      ALTER SYSTEM SET max_wal_senders = NUMBER_OF_SENDERS;
          
      כאשר NUMBER_OF_SENDERS מייצג את מספר התהליכים של שולח WAL שפועלים בו-זמנית.
    5. מגדירים את max_worker_processes לפחות למספר מסדי הנתונים שרוצים להעביר, בתוספת מספר ה-max_worker_processes שכבר נמצאים בשימוש במכונה. כדי להגדיר את הפרמטר הזה, מריצים את הפקודה הבאה:
      ALTER SYSTEM SET max_worker_processes = NUMBER_OF_PROCESSES;
          
      כאשר NUMBER_OF_PROCESSES מייצג את מספר מסדי הנתונים שיועברו.

    מקורות של Cloud SQL ל-PostgreSQL

    במקורות של Cloud SQL, מגדירים דגלים לניהול מסד נתונים במסוף Google Cloud . כדי שההגדרה תיכנס לתוקף, צריך להפעיל מחדש את המכונה אחרי שמשנים את הדגלים לניהול מסד הנתונים. מידע נוסף על הגדרת דגלים של מסדי נתונים ב-Cloud SQL זמין במאמר הגדרת דגלים של מסדי נתונים במסמכי התיעוד של Cloud SQL.

    1. מגדירים את הדגל cloudsql.logical_decoding לערך on. כדי שההגדרה תיכנס לתוקף, צריך להפעיל מחדש את המכונה.
    2. מגדירים את הפרמטר wal_sender_timeout בתור 0. הערך הזה משבית את מנגנון הזמן הקצוב לתפוגה שמשמש לסיום חיבורי רפליקציה לא פעילים.
    3. מגדירים את המספר המקסימלי של משבצות שכפול באמצעות הפרמטר max_replication_slots. הערך של הפרמטר הזה צריך להיות לפחות מספר מסדי הנתונים שאתם מעבירים בכל משימת העברה, בתוספת כמה רזרבות לסנכרון טבלאות.

      לדוגמה, אם אתם מעבירים 5 מסדי נתונים ויש 2 משימות העברה שנוצרו למכונה של המקור, מספר משבצות השכפול צריך להיות לפחות 5 * 2 = 10, בנוסף למספר משבצות השכפול שכבר השתמשתם בהן.

    4. מגדירים את הפרמטר max_wal_senders לפחות לאותו ערך כמו max_replication_slots, בתוספת מספר השולחים שכבר נמצאים בשימוש במכונה.

      לדוגמה, אם הפרמטר max_replication_slots מוגדר לערך 10, ואתם כבר משתמשים ב-2 שולחים, מספר התהליכים של שולחי WAL שפועלים בו-זמנית יהיה 10 + 2 = 12.

    5. מגדירים את הערך של max_worker_processes לפחות למספר מסדי הנתונים שרוצים להעביר, בתוספת מספר ה-max_worker_processes שכבר נמצאים בשימוש במכונה.

יצירה והפעלה של העברה מהירה

המסוף

כדי ליצור ולהפעיל העברה מהירה באמצעות מסוף Google Cloud :

  1. נכנסים לדף Get started במסוף Google Cloud .

    עוברים אל "תחילת העבודה"

  2. בתפריט Source engine, בוחרים באפשרות PostgreSQL.
  3. בתפריט Destination engine, בוחרים באפשרות Cloud SQL ל-PostgreSQL.

    מופיע הקטע Introducing quick-start PostgreSQL migration.

  4. בקטע Introducing quick-start PostgreSQL migration, לוחצים על Start migration.

    הדף Migrate to Cloud SQL ל-PostgreSQL נפתח.

  5. בקטע Configure migration, מבצעים את הפעולות הבאות:
    1. בתפריט Destination region, בוחרים את האזור של מכונת היעד ב-Cloud SQL.
    2. בתיבה Migration prefix, מזינים מחרוזת ידידותית למשתמש שתתווסף לשמות של כל ישויות ההעברה שנוצרו בשביל ההעברה המהירה: פרופילי חיבור, הגדרת קישוריות פרטית, מחבר רשת ורשת המשנה שלו ומשימת העברה.
    3. בתפריט Configuration type, בוחרים אחת מהאפשרויות הבאות:
      1. ‫Existing connectivity configuration: בוחרים באפשרות הזו אם כבר יש לכם חיבור לרשת והגדרת קישוריות פרטית שמשתמשת בשיטת הממשקים של Private Service Connect. האפשרות הזו מתאימה במיוחד אם השתמשתם בעבר בהעברות מהירות ואתם רוצים להשתמש שוב באותם משאבי רשת.
      2. הגדרת קישוריות חדשה: בוחרים באפשרות הזו כדי ליצור חיבור רשת חדש ואת רשת המשנה של חיבור הרשת ברשת ה-VPC של מסד הנתונים של המקור. הגדרת הקישוריות הפרטית תיווצר באותו פרויקט שבו נמצא מכון היעד.
    4. לוחצים על Continue.
  6. בקטע Connect source מבצעים את הפעולות הבאות:
    1. מזינים את שם המארח או את כתובת ה-IP הפרטית של מסד הנתונים במקור. צריכה להיות גישה לכתובת של מסד הנתונים במקור מרשת ה-VPC במקור.
    2. מזינים את היציאה שמשמשת לגישה למארח. יציאת ברירת המחדל של PostgreSQL היא 5432.
    3. מזינים את שם המשתמש והסיסמה של החשבון הייעודי להעברה במסד הנתונים של המקור.
    4. בתפריט סוג הצפנה, בוחרים אחת מהאפשרויות הבאות:
      • ‫None: אם מסד הנתונים של המקור לא דורש חיבורים מוצפנים ב-SSL או ב-TLS.
      • חובה: אם מסד הנתונים של המקור דורש חיבורים מוצפנים ב-SSL או ב-TLS. באפשרות הזאת לא נדרש אימות של אישור.
    5. בתפריט Databases to migrate, לוחצים על Customize. בחלונית הצדדית, בוחרים רק את מסדי הנתונים שרוצים להעביר ל-Cloud SQL.
    6. לוחצים על Continue.
  7. בקטע Configure destination, אפשר ליצור מופע חדש של יעד או לבחור מופע קיים.

    מופעים חדשים

    כדי ליצור מכונה חדשה של יעד:

    1. בתפריט Destination instance type, בוחרים באפשרות New instance.

      ‫Database Migration Service משתמש בהגדרת ברירת המחדל של Cloud SQL למכונה חדשה. לוחצים על Customize כדי לשנות את מאפייני המכונה, כמו סוג המכונה, הזמינות באזורים או הגדרות ההגנה על הנתונים. מידע נוסף על הגדרת מכונות זמין במאמר יצירת מכונות במסמכי התיעוד של Cloud SQL.

    2. בשדה Password, מזינים סיסמה למשתמש עם הרשאת אדמין שמוגדר כברירת מחדל ב-postgres. ‫Database Migration Service מתחבר בתור המשתמש הזה כדי להעביר את הנתונים.

    מופעים קיימים

    אתם יכולים להעביר מסדי נתונים למכונה שכבר קיימת. מוודאים שהמכונה של היעד מופעלת ל-Private Service Connect ולא אוכפת חיבורי mTLS. מבצעים את הפעולות הבאות:

    1. בתפריט Destination instance type, בוחרים באפשרות Existing instance.
    2. בתפריט Existing instance ID, בוחרים את מזהה המכונה.
  8. לוחצים על התחלת ההעברה.

    עכשיו Database Migration Service יוצר את משימת ההעברה ומתחיל את תהליך ההעברה. אפשר לעקוב אחרי התקדמות ההעברה בפרטים של משימת ההעברה ב-Database Migration Service. מידע נוסף זמין במאמר ניהול משימות העברה.

gcloud

כדי ליצור ולהריץ העברה מהירה באמצעות ה-CLI של gcloud:

  1. מגדירים את החיבור לרשת.
    מחליטים אם ליצור חיבור רשת חדש או להשתמש בחיבור קיים. צריך להיות לכם חיבור לרשת ברשת שבה אפשר להגיע לכתובת ה-IP הפרטית של מסד הנתונים של המקור.

    • כדי ליצור מחבר רשת חדש, מריצים את הפקודה הבאה (לוחצים כדי להרחיב את הפרטים המלאים).

      gcloud compute network-attachments create

      לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

      • ‫NETWORK_ATTACHMENT בשם של חיבור הרשת שרוצים ליצור.
      • ‫REGION עם האזור של חיבור הרשת.
      • ‫DEST_PROJECT_ID במזהה פרויקט היעד.
      • ‫SOURCE_PROJECT_ID במזהה הפרויקט שבו נמצאת רשת המקור.

      מריצים את הפקודה הבאה:

      ‫Linux,‏ macOS או Cloud Shell

      gcloud compute network-attachments create NETWORK_ATTACHMENT \
        --region=REGION \
        --connection-preference=ACCEPT_MANUAL \
        --producer-accept-list=DEST_PROJECT_ID \
        --subnets=default \
        --project=SOURCE_PROJECT_ID

      ‏Windows (PowerShell)

      gcloud compute network-attachments create NETWORK_ATTACHMENT `
        --region=REGION `
        --connection-preference=ACCEPT_MANUAL `
        --producer-accept-list=DEST_PROJECT_ID `
        --subnets=default `
        --project=SOURCE_PROJECT_ID

      Windows‏ (cmd.exe)

      gcloud compute network-attachments create NETWORK_ATTACHMENT ^
        --region=REGION ^
        --connection-preference=ACCEPT_MANUAL ^
        --producer-accept-list=DEST_PROJECT_ID ^
        --subnets=default ^
        --project=SOURCE_PROJECT_ID
    • אם רוצים להשתמש מחדש במחבר רשת קיים, ממשיכים לשלב הבא.
  2. נותנים לפרויקט של הדייר (tenant) ב-Database Migration Service גישה למחבר הרשת.
    מחבר הרשת צריך לאפשר חיבורים מהפרויקט של הדייר (tenant) ב-Database Migration Service. כך עושים את זה:

    1. כדי לאחזר את מזהה הפרויקט של הדייר (tenant) ב-Database Migration Service, מבצעים הרצה של יצירת חיבור פרטי (לחצו כדי להרחיב):

      gcloud database-migration private-connections create --validate-only

      לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

      • ‫PRIVATE_CONN בשם של משאב החיבור הפרטי.
      • ‫REGION עם האזור של החיבור הפרטי.
      • ‫NETWORK_ATTACHMENT_URI ב-URI של חיבור הרשת.

      מריצים את הפקודה הבאה:

      ‫Linux,‏ macOS או Cloud Shell

      gcloud database-migration private-connections create PRIVATE_CONN \
        --region=REGION \
        --network-attachment=NETWORK_ATTACHMENT_URI \
        --display-name=PRIVATE_CONN \
        --format="value(metadata.metadata.tenant_project_id)" \
        --validate-only

      ‏Windows (PowerShell)

      gcloud database-migration private-connections create PRIVATE_CONN `
        --region=REGION `
        --network-attachment=NETWORK_ATTACHMENT_URI `
        --display-name=PRIVATE_CONN `
        --format="value(metadata.metadata.tenant_project_id)" `
        --validate-only

      Windows‏ (cmd.exe)

      gcloud database-migration private-connections create PRIVATE_CONN ^
        --region=REGION ^
        --network-attachment=NETWORK_ATTACHMENT_URI ^
        --display-name=PRIVATE_CONN ^
        --format="value(metadata.metadata.tenant_project_id)" ^
        --validate-only

      שומרים את מזהה הפרויקט של הדייר שמוחזר כדי להשתמש בו בפקודות הבאות.

    2. מאפשרים לפרויקט של הדייר ב-Database Migration Service ולפרויקט היעד להתחבר למחבר הרשת (לחצו כדי להרחיב):

      gcloud compute network-attachments update

      לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

      • ‫NETWORK_ATTACHMENT בשם של חיבור הרשת.
      • REGION עם האזור.
      • ‫DEST_PROJECT_ID במזהה פרויקט היעד.
      • ‫DMS_TENANT_ID במזהה הפרויקט של הדייר (tenant) ב-Database Migration Service שאחזרתם.
      • ‫SOURCE_PROJECT_ID במזהה הפרויקט שבו נמצאת רשת המקור.

      מריצים את הפקודה הבאה:

      ‫Linux,‏ macOS או Cloud Shell

      gcloud compute network-attachments update NETWORK_ATTACHMENT \
        --region=REGION \
        --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID \
        --project=SOURCE_PROJECT_ID

      ‏Windows (PowerShell)

      gcloud compute network-attachments update NETWORK_ATTACHMENT `
        --region=REGION `
        --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID `
        --project=SOURCE_PROJECT_ID

      Windows‏ (cmd.exe)

      gcloud compute network-attachments update NETWORK_ATTACHMENT ^
        --region=REGION ^
        --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID ^
        --project=SOURCE_PROJECT_ID
  3. יוצרים את משאב החיבור המבודד של Database Migration Service.
    מריצים את הפקודה הבאה (לוחצים כדי להרחיב):

    gcloud database-migration private-connections create

    לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

    • ‫PRIVATE_CONN בשם של משאב החיבור הפרטי.
    • ‫REGION עם האזור של החיבור הפרטי.
    • ‫NETWORK_ATTACHMENT_URI ב-URI של חיבור הרשת.

    מריצים את הפקודה הבאה:

    ‫Linux,‏ macOS או Cloud Shell

    gcloud database-migration private-connections create PRIVATE_CONN \
      --region=REGION \
      --network-attachment=NETWORK_ATTACHMENT_URI \
      --display-name=PRIVATE_CONN

    ‏Windows (PowerShell)

    gcloud database-migration private-connections create PRIVATE_CONN `
      --region=REGION `
      --network-attachment=NETWORK_ATTACHMENT_URI `
      --display-name=PRIVATE_CONN

    Windows‏ (cmd.exe)

    gcloud database-migration private-connections create PRIVATE_CONN ^
      --region=REGION ^
      --network-attachment=NETWORK_ATTACHMENT_URI ^
      --display-name=PRIVATE_CONN
  4. יוצרים את פרופיל החיבור של המקור.
    מריצים את הפקודה הבאה (לוחצים כדי להרחיב):

    gcloud database-migration connection-profiles create postgresql

    בדוגמה הזו נעשה שימוש בדגל האופציונלי --no-async כדי שכל הפעולות יתבצעו באופן סינכרוני. זה אומר שיכול להיות שייקח קצת זמן עד שחלק מהפקודות יסתיימו. אפשר לדלג על הדגל --no-async כדי להריץ פקודות באופן אסינכרוני. אם כן, צריך להשתמש בפקודה gcloud database-migration operations describe כדי לוודא שהפעולה הצליחה.

    לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

    • ‫SOURCE_CONN_ID במזהה של פרופיל החיבור למקור.
    • ‫REGION באזור שבו רוצים לשמור את פרופיל החיבור.
    • ‫SOURCE_PRIVATE_IP בכתובת ה-IP הפרטית של מסד הנתונים במקור.
    • ‫SOURCE_PORT עם היציאה של מסד הנתונים של המקור (ברירת המחדל היא 5432).
    • ‫SOURCE_USER עם שם המשתמש של המשתמש להעברה במסד הנתונים של המקור.
    • ‫SOURCE_PASSWORD בסיסמה של משתמש ההעברה במסד הנתונים של המקור.
    • ‫PRIVATE_CONN בשם של משאב החיבור הפרטי.

    מריצים את הפקודה הבאה:

    ‫Linux,‏ macOS או Cloud Shell

    gcloud database-migration connection-profiles create postgresql \
      SOURCE_CONN_ID \
      --region=REGION \
      --role=SOURCE \
      --host=SOURCE_PRIVATE_IP \
      --port=SOURCE_PORT \
      --username=SOURCE_USER \
      --password=SOURCE_PASSWORD \
      --private-connection=PRIVATE_CONN \
      --no-async

    ‏Windows (PowerShell)

    gcloud database-migration connection-profiles create postgresql `
      SOURCE_CONN_ID `
      --region=REGION `
      --role=SOURCE `
      --host=SOURCE_PRIVATE_IP `
      --port=SOURCE_PORT `
      --username=SOURCE_USER `
      --password=SOURCE_PASSWORD `
      --private-connection=PRIVATE_CONN `
      --no-async

    Windows‏ (cmd.exe)

    gcloud database-migration connection-profiles create postgresql ^
      SOURCE_CONN_ID ^
      --region=REGION ^
      --role=SOURCE ^
      --host=SOURCE_PRIVATE_IP ^
      --port=SOURCE_PORT ^
      --username=SOURCE_USER ^
      --password=SOURCE_PASSWORD ^
      --private-connection=PRIVATE_CONN ^
      --no-async
  5. יוצרים את פרופיל החיבור של היעד.
    בוחרים את הכרטיסייה בהתאם למכונה של Cloud SQL שאליה רוצים להעביר את הנתונים:

    מכונות חדשות

    כדי להשתמש במכונה חדשה כיעד להעברה מהירה, קודם צריך ליצור את המכונה באמצעות Google Cloud CLI של Cloud SQL, ואז ליצור את פרופיל החיבור ליעד. איך לעשות את זה?

    1. יצירת מכונה באמצעות Cloud SQL Google Cloud CLI. חשוב להשתמש בדגל --enable-private-service-connect כדי להפעיל את מכונת היעד ל-Private Service Connect. העברות מהירות תומכות רק במכונות שמופעל בהן Private Service Connect.
    2. יוצרים את פרופיל החיבור של היעד למכונה החדשה. כדי לראות את פרטי הפקודה המלאים, מרחיבים את הקטע הבא.

      gcloud database-migration connection-profiles create postgresql

      בדוגמה הזו נעשה שימוש בדגל האופציונלי --no-async כדי שכל הפעולות יתבצעו באופן סינכרוני. זה אומר שיכול להיות שייקח קצת זמן עד שחלק מהפקודות יסתיימו. אפשר לדלג על הדגל --no-async כדי להריץ פקודות באופן אסינכרוני. אם כן, צריך להשתמש בפקודה gcloud database-migration operations describe כדי לוודא שהפעולה הצליחה.

      לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

      • ‫DEST_CONN_ID במזהה של פרופיל החיבור ליעד.
      • ‫REGION באזור שבו רוצים לשמור את פרופיל החיבור. האזור הזה צריך להיות זהה לאזור של מכונת היעד.
      • ‫DEST_INSTANCE במזהה של מכונת היעד ב-Cloud SQL שיצרתם מראש.
      • ‫DEST_USER בשם המשתמש של המשתמש שמעביר את הנתונים במסד הנתונים של היעד.
      • ‫DEST_PASSWORD מחליפים בסיסמה של משתמש ההעברה במסד הנתונים של היעד.

      מריצים את הפקודה הבאה:

      ‫Linux,‏ macOS או Cloud Shell

      gcloud database-migration connection-profiles create postgresql DEST_CONN_ID \
        --region=REGION \
        --cloudsql-instance=DEST_INSTANCE \
        --username=DEST_USER \
        --password=DEST_PASSWORD \
        --role=DESTINATION \
        --no-async

      ‏Windows (PowerShell)

      gcloud database-migration connection-profiles create postgresql DEST_CONN_ID `
        --region=REGION `
        --cloudsql-instance=DEST_INSTANCE `
        --username=DEST_USER `
        --password=DEST_PASSWORD `
        --role=DESTINATION `
        --no-async

      Windows‏ (cmd.exe)

      gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ^
        --region=REGION ^
        --cloudsql-instance=DEST_INSTANCE ^
        --username=DEST_USER ^
        --password=DEST_PASSWORD ^
        --role=DESTINATION ^
        --no-async

      אמורים לקבל תגובה שדומה לזו:

      Waiting for connection profile [CONNECTION_PROFILE_ID]
      to be created with [OPERATION_ID]
      
      Waiting for operation [OPERATION_ID] to complete...done.
      
      Created connection profile CONNECTION_PROFILE_ID [OPERATION_ID]
      

    מופעים קיימים

    כדי להעביר למכונה קיימת, יוצרים את פרופיל החיבור שמפנה למכונה שנוצרה מראש. מריצים את הפקודה הבאה (לוחצים כדי להרחיב):

    gcloud database-migration connection-profiles create postgresql

    בדוגמה הזו נעשה שימוש בדגל האופציונלי --no-async כדי שכל הפעולות יתבצעו באופן סינכרוני. זה אומר שיכול להיות שייקח קצת זמן עד שחלק מהפקודות יסתיימו. אפשר לדלג על הדגל --no-async כדי להריץ פקודות באופן אסינכרוני. אם כן, צריך להשתמש בפקודה gcloud database-migration operations describe כדי לוודא שהפעולה הצליחה.

    לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

    • ‫DEST_CONN_ID במזהה של פרופיל החיבור ליעד.
    • ‫REGION באזור שבו רוצים לשמור את פרופיל החיבור. האזור הזה צריך להיות זהה לאזור של מכונת היעד.
    • ‫DEST_INSTANCE במזהה של מכונת היעד ב-Cloud SQL שיצרתם מראש.
    • ‫DEST_USER בשם המשתמש של המשתמש שמעביר את הנתונים במסד הנתונים של היעד.
    • ‫DEST_PASSWORD מחליפים בסיסמה של משתמש ההעברה במסד הנתונים של היעד.

    מריצים את הפקודה הבאה:

    ‫Linux,‏ macOS או Cloud Shell

    gcloud database-migration connection-profiles create postgresql DEST_CONN_ID \
      --region=REGION \
      --cloudsql-instance=DEST_INSTANCE \
      --username=DEST_USER \
      --password=DEST_PASSWORD \
      --role=DESTINATION \
      --no-async

    ‏Windows (PowerShell)

    gcloud database-migration connection-profiles create postgresql DEST_CONN_ID `
      --region=REGION `
      --cloudsql-instance=DEST_INSTANCE `
      --username=DEST_USER `
      --password=DEST_PASSWORD `
      --role=DESTINATION `
      --no-async

    Windows‏ (cmd.exe)

    gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ^
      --region=REGION ^
      --cloudsql-instance=DEST_INSTANCE ^
      --username=DEST_USER ^
      --password=DEST_PASSWORD ^
      --role=DESTINATION ^
      --no-async

    אמורים לקבל תגובה שדומה לזו:

    Waiting for connection profile [CONNECTION_PROFILE_ID]
    to be created with [OPERATION_ID]
    
    Waiting for operation [OPERATION_ID] to complete...done.
    
    Created connection profile CONNECTION_PROFILE_ID [OPERATION_ID]
    
  6. יוצרים את משימת ההעברה.
    מריצים את הפקודה הבאה (לוחצים כדי להרחיב):

    gcloud database-migration migration-jobs create

    בדוגמה הזו נעשה שימוש בדגל האופציונלי --no-async כדי שכל הפעולות יתבצעו באופן סינכרוני. זה אומר שיכול להיות שייקח קצת זמן עד שחלק מהפקודות יסתיימו. אפשר לדלג על הדגל --no-async כדי להריץ פקודות באופן אסינכרוני. אם כן, צריך להשתמש בפקודה gcloud database-migration operations describe כדי לוודא שהפעולה הצליחה.

    לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

    • ‫MIGRATION_JOB_ID במזהה של משימת ההעברה.
    • ‫REGION באזור שבו רוצים לשמור את משימת ההעברה.
    • ‫SOURCE_CONN_ID במזהה של פרופיל החיבור של המקור.
    • ‫DEST_CONN_ID במזהה של פרופיל החיבור ליעד.
    • ‫DATABASES_LIST ברשימה מופרדת בפסיקים של מסדי הנתונים שרוצים להעביר.

    מריצים את הפקודה הבאה:

    ‫Linux,‏ macOS או Cloud Shell

    gcloud database-migration migration-jobs create \
      MIGRATION_JOB_ID \
      --region=REGION \
      --type=CONTINUOUS \
      --source=SOURCE_CONN_ID \
      --destination=DEST_CONN_ID \
      --use-postgres-native \
      --postgres-max-additional-subscriptions=10 \
      --databases-filter=DATABASES_LIST \
      --no-async

    ‏Windows (PowerShell)

    gcloud database-migration migration-jobs create `
      MIGRATION_JOB_ID `
      --region=REGION `
      --type=CONTINUOUS `
      --source=SOURCE_CONN_ID `
      --destination=DEST_CONN_ID `
      --use-postgres-native `
      --postgres-max-additional-subscriptions=10 `
      --databases-filter=DATABASES_LIST `
      --no-async

    Windows‏ (cmd.exe)

    gcloud database-migration migration-jobs create ^
      MIGRATION_JOB_ID ^
      --region=REGION ^
      --type=CONTINUOUS ^
      --source=SOURCE_CONN_ID ^
      --destination=DEST_CONN_ID ^
      --use-postgres-native ^
      --postgres-max-additional-subscriptions=10 ^
      --databases-filter=DATABASES_LIST ^
      --no-async

    אמורים לקבל תגובה שדומה לזו:

    Waiting for migration job [MIGRATION_JOB_ID]
    to be created with [OPERATION_ID]
    
    Waiting for operation [OPERATION_ID] to complete...done.
    
    Created migration job MIGRATION_JOB_ID [OPERATION_ID]
    
  7. מפעילים את משימת ההעברה.
    התחלת משימת ההעברה (לחצו כדי להרחיב):

    gcloud database-migration migration-jobs start

    בדוגמה הזו נעשה שימוש בדגל האופציונלי --no-async כדי שכל הפעולות יתבצעו באופן סינכרוני. זה אומר שיכול להיות שייקח קצת זמן עד שחלק מהפקודות יסתיימו. אפשר לדלג על הדגל --no-async כדי להריץ פקודות באופן אסינכרוני. אם כן, צריך להשתמש בפקודה gcloud database-migration operations describe כדי לוודא שהפעולה הצליחה.

    לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

    • ‫MIGRATION_JOB_ID במזהה של משימת ההעברה.

      אם אתם לא יודעים מה המזהה, אתם יכולים להשתמש בפקודה gcloud database-migration migration-jobs list כדי להציג את כל משימות ההעברה באזור מסוים ואת המזהים שלהן.

    • ‫REGION במזהה האזור שבו נשמר פרופיל החיבור.

    מריצים את הפקודה הבאה:

    ‫Linux,‏ macOS או Cloud Shell

    gcloud database-migration migration-jobs \
    start MIGRATION_JOB_ID \
      --region=REGION

    ‏Windows (PowerShell)

    gcloud database-migration migration-jobs `
    start MIGRATION_JOB_ID `
      --region=REGION

    Windows‏ (cmd.exe)

    gcloud database-migration migration-jobs ^
    start MIGRATION_JOB_ID ^
      --region=REGION

    תוצאה

    הפעולה מתבצעת באופן אסינכרוני. לכן הפקודה הזו מחזירה ישות של פעולה שמייצגת פעולה ממושכת:

    done: false
    metadata:
      '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata
      apiVersion: v1
      createTime: '2024-02-20T12:20:24.493106418Z'
      requestedCancellation: false
      target: MIGRATION_JOB_ID
      verb: start
    name: OPERATION_ID
    

    כדי לבדוק אם הפעולה הצליחה, אפשר לשלוח שאילתה לאובייקט הפעולה שהוחזר, או לבדוק את הסטטוס של משימת ההעברה:

סיום ההעברה

כשתחליטו להעביר את האפליקציה למכונה החדשה של Cloud SQL, בצעו את השלבים הבאים כדי להשלים את ההעברה:

  1. מפסיקים את כל פעולות הכתיבה במסד הנתונים של המקור. אפשר להעביר אותם למצב קריאה בלבד כדי לשמור על הפונקציונליות התפעולית.
  2. קידום משימת ההעברה. בהעברות מהירות, אפשר להמשיך לכתוב במופע היעד במהלך תהליך ההעברה. קידום משימת ההעברה רק מסיים את הרפליקציה, ולא משפיע על מכונת היעד.
  3. אופציונלי: בודקים את נתוני ההעברה כדי לוודא שהם מלאים.

המאמרים הבאים