העברת מסד נתונים של SQL Server מ-AWS EC2 ל-Compute Engine

במדריך הזה מפורטות הגישות השונות שבהן אפשר להשתמש כדי להעביר מסד נתונים של Microsoft SQL Server ב-Amazon Elastic Compute Cloud ‏ (AWS EC2) אל Compute Engine.

בדף הזה נסביר על הגישות הבאות:

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

  • זמינות: כדאי לבדוק אם כל הגרסאות והרישיונות של מסד הנתונים של SQL Server תומכים בגישת ההעברה.

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

  • טולרנטיות להשבתה: רמת ההשבתה המקובלת במהלך המעבר היא גורם מכריע. חלק מהשיטות מאפשרות השבתה מינימלית או כמעט אפס השבתה, בעוד ששיטות אחרות דורשות השבתה ממושכת יותר. כדאי לבחור בגישת העברה שבה זמן ההשבתה מקובל עליכם.

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

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

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

מטרות

במדריך הזה מוסבר איך לבצע את הפעולות הבאות כדי להעביר את מסד הנתונים של SQL Server מ-AWS EC2 ל-Compute Engine:

עלויות

במדריך הזה נעשה שימוש ברכיבים של Google Cloud, והשימוש בהם כרוך בתשלום, כולל:

אפשר להשתמש במחשבון התמחור כדי ליצור הערכת עלויות בהתאם לשימוש החזוי.

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

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

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Google Cloud project.

  3. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    הכנת הפרויקט והרשת

    כדי להכין את הפרויקט ואת הענן הווירטואלי הפרטי (VPC) לפריסה של SQL Server לצורך מיגרציה, צריך לבצע את הפעולות הבאות: Google Cloud

    1. במסוף Google Cloud , לוחצים על Activate Cloud Shell מפעילים את Cloud Shell. כדי לפתוח את Cloud Shell.

      כניסה ל Google Cloud מסוף

    2. מגדירים את מזהה פרויקט ברירת המחדל:

      gcloud config set project PROJECT_ID
      

      מחליפים את PROJECT_ID במזהה הפרויקט ב- Google Cloud .

    3. הגדרת אזור ברירת המחדל:

      gcloud config set compute/region REGION
      

      מחליפים את REGION במזהה האזור שבו רוצים לבצע פריסה.

    4. הגדרת אזור ברירת המחדל:

      gcloud config set compute/zone ZONE
      

      מחליפים את ZONE במזהה של האזור שבו רוצים לבצע פריסה. מוודאים שאזור הזמן תקין באזור שצוין בשלב הקודם.

    יצירת מכונה של SQL Server ב-Compute Engine

    לפני שמעבירים את מסד הנתונים של SQL Server ל-Compute Engine, צריך ליצור מכונה וירטואלית (VM) ב-Compute Engine כדי לארח אותו.

    כדי ליצור מכונה של SQL Server ב-Compute Engine, מריצים את הפקודה הבאה:

    2022 Standard

    gcloud compute instances create sql-server-std-migrate-vm \
    --project=PROJECT_ID \
    --zone ZONE \
    --machine-type n4-standard-8 \
    --subnet SUBNET_NAME \
    --create-disk=auto-delete=yes,boot=yes,device-name=node-1,image=projects/windows-sql-cloud/global/images/sql-2022-standard-windows-2022-dc-v20250213,mode=rw,size=50,type=projects/PROJECT_ID/zones/ZONE/diskTypes/pd-balanced \
    --scopes=https://www.googleapis.com/auth/compute,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/trace.append,https://www.googleapis.com/auth/devstorage.read_write
    

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

    • PROJECT_ID: עם מזהה הפרויקט ב- Google Cloud .
    • ZONE: עם מזהה האזור.
    • SUBNET_NAME: עם השם של תת-רשת ה-VPC.

    ‫2022 Enterprise

    gcloud compute instances create sql-server-ent-migrate-vm \
    --project=PROJECT_ID \
    --zone ZONE \
    --machine-type n4-standard-8 \
    --subnet SUBNET_NAME \
    --create-disk=auto-delete=yes,boot=yes,device-name=node-1,image=projects/windows-sql-cloud/global/images/sql-2022-enterprise-windows-2022-dc-v20250213,mode=rw,size=50,type=projects/PROJECT_ID/zones/ZONE/diskTypes/pd-balanced \
    --scopes=https://www.googleapis.com/auth/compute,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/trace.append,https://www.googleapis.com/auth/devstorage.read_write
    

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

    • PROJECT_ID: עם מזהה הפרויקט ב- Google Cloud .
    • ZONE: עם מזהה האזור.
    • SUBNET_NAME: עם השם של תת-רשת ה-VPC.

    מידע נוסף על יצירת מכונות SQL Server ב-Compute Engine זמין במאמר בנושא יצירת מכונת SQL Server.

    הגדרה וחיבור ל-VM של SQL Server

    כדי להגדיר את מכונת ה-VM של SQL Server ולהתחבר אליה, פועלים לפי השלבים הבאים:

    1. מגדירים את הסיסמה הראשונית ל-Windows בחשבון:

      1. נכנסים לדף VM Instances במסוף Google Cloud .

        לדף VM instances

      2. לוחצים על השם של המכונה הווירטואלית של שרת SQL.

      3. לוחצים על הלחצן הגדרת סיסמה ל-Windows.

      4. כשמוצגת בקשה להגדיר את הסיסמה החדשה של Windows, מזינים סיסמה ולוחצים על הגדרה.

      5. שומרים את שם המשתמש והסיסמה.

    2. מתחברים למכונת ה-SQL Server הווירטואלית:

      1. משתמשים בכתובת ה-IP הציבורית של מכונת SQL Server VM מהדף VM Instances ובפרטי הכניסה שנשמרו בשלב הקודם כדי להתחבר למכונת SQL Server VM באמצעות Microsoft Remote Desktop ‏ (RDP).

      2. מפעילים את SQL Server Management Studio (SSMS) כאדמין.

      3. מוודאים שתיבת הסימון Trust server certificate (הגדרת אישור השרת כאמין) מסומנת ולוחצים על Connect (קישור).

    המכונה הווירטואלית של SQL Server מוכנה עכשיו לשימוש להעברת מסד נתונים. כדי ליצור פרטי כניסה של משתמשים חדשים לחיבור ולניהול של מכונה וירטואלית של SQL Server, אפשר לעיין במאמר בנושא יצירת פרטי כניסה.

    גיבוי ושחזור מלאים של מסד הנתונים

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

    בקטע הזה מוסבר איך אפשר להשתמש ב-SSMS כדי לייצא את מסד הנתונים של SQL Server באמצעות מסד נתונים לדוגמה AdventureWorks2022.

    יצירת גיבוי מלא של מסד הנתונים

    כדי ליצור גיבוי מלא של מסד הנתונים, פועלים לפי השלבים הבאים:

    1. מתחברים למכונה הווירטואלית ב-AWS EC2 באמצעות Microsoft RDP.

    2. מתחברים ל-SQL Server באמצעות SSMS.

    3. מרחיבים את התיקייה databases (מסדי נתונים) ב-Object Explorer.

    4. לוחצים לחיצה ימנית על שם מסד הנתונים ובתפריט לוחצים על משימות.

    5. לוחצים על גיבוי כדי לפתוח את אשף גיבוי מסד הנתונים.

      1. מוודאים ששם מסד הנתונים שרוצים לגבות מוגדר וסוג הגיבוי מוגדר לגיבוי מלא.

      2. לוחצים על הוספה מתחת ליעד של הגיבוי המלא.

      3. לוחצים על סמל האליפסות (...) כדי לבחור את התיקייה ואת השם של קובץ הגיבוי.

      4. לוחצים על אישור כדי להגדיר את שם הקובץ, ושוב על אישור כדי להגדיר את היעד.

        אפשרויות גיבוי מסד הנתונים.

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

        אחרי שתהליך הגיבוי מסתיים, נוצר קובץ גיבוי. עכשיו אפשר להשתמש בקובץ הגיבוי הזה כדי להעביר את תוכן מסד הנתונים למכונה וירטואלית ב-Compute Engine.

      6. לוחצים על אישור כדי לצאת מאשף הגיבוי של מסד הנתונים.

    העברת קובץ הגיבוי למכונה וירטואלית ב-Compute Engine

    כדי להעביר את התוכן של מסד הנתונים של SQL Server, צריך להעביר את קובץ הגיבוי שנוצר בשלב הקודם למכונה הווירטואלית של Compute Engine שיצרתם. מידע על אפשרויות ההעברה השונות זמין במאמר העברת קבצים למכונות וירטואליות של Windows.

    שחזור מסד נתונים של SQL Server מקובץ הגיבוי

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

    1. מתחברים למכונה הווירטואלית ב-Compute Engine באמצעות RDP.

    2. מתחברים ל-SQL Server באמצעות SSMS.

    3. ב-Object Explorer, לוחצים לחיצה ימנית על התיקייה Databases ואז לוחצים על Restore Database.

    4. בקטע מקור, לוחצים על מכשיר ועל סמל האליפסות (...) כדי לפתוח את הדף 'בחירת מכשיר לגיבוי'.

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

      שחזור מסד נתונים בחירת מכשיר.

    6. לוחצים על אישור כדי להגדיר את קובץ הגיבוי כמכשיר השחזור.

    7. לוחצים על אישור כדי לשחזר את מסד הנתונים.

      כשהתהליך מסתיים, מסד הנתונים מועבר ל-SQL Server ביעד ב-Compute Engine.

    8. כדי לוודא שהתהליך הושלם בהצלחה, אפשר להרחיב את התיקייה databases ב-Object Explorer ולבדוק אם מסד הנתונים שהועבר מופיע.

      מאמתים את מסד הנתונים ששוחזר.

    העברה באמצעות קובץ BACPAC

    קובץ חבילת גיבוי (BACPAC) הוא ייצוג לוגי של מסד נתונים של SQL Server. אפשר לייצא אותו מסביבת המקור של AWS ואז לייבא אותו לסביבת היעד Google Cloud . השיטה הזו בדרך כלל מהירה יותר מגיבוי ושחזור מלאים של מסדי נתונים קטנים יותר, אבל היא לא מתאימה למסדי נתונים גדולים מאוד או למסדי נתונים עם תלות מורכבת.

    בקטע הבא מוסבר איך אפשר להעביר את מסד הנתונים של SQL Server באמצעות קובץ BACPAC.

    יצירת ייצוא BACPAC

    כדי ליצור ייצוא BACPAC, פועלים לפי השלבים הבאים:

    1. מתחברים למכונה הווירטואלית ב-AWS EC2 באמצעות Microsoft RDP.

    2. מתחברים ל-SQL Server באמצעות SSMS.

    3. מרחיבים את התיקייה databases ב-Object Explorer.

    4. לוחצים לחיצה ימנית על שם מסד הנתונים ואז על Tasks (משימות).

    5. לוחצים על ייצוא של אפליקציה ברמת הנתונים כדי לפתוח את אשף הייצוא.

      1. לוחצים על הבא.

      2. לוחצים על עיון באפשרות שמירה בדיסק מקומי ובוחרים את קובץ ה-BACPAC.

      3. לוחצים על הכרטיסייה מתקדם ובוחרים את הסכימות שרוצים לייצא.

      4. לוחצים על הבא כדי להמשיך לסיכום.

      5. לוחצים על Finish (סיום) כדי לייצא את קובץ ה-BACPAC ומחכים שהייצוא יסתיים.

      6. כדי לצאת מהאשף, לוחצים על סגירה.

    6. מעבירים את קובץ ה-BACPAC שנוצר בשלבים הקודמים למכונה הווירטואלית של היעד ב-Compute Engine. מידע על אפשרויות ההעברה זמין במאמר העברת קבצים למכונות וירטואליות של Windows.

    שחזור מסד נתונים של SQL Server מקובץ BACPAC

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

    1. מתחברים למכונה הווירטואלית ב-Compute Engine באמצעות RDP.

    2. מתחברים ל-SQL Server באמצעות SSMS.

    3. ב-Object Explorer, לוחצים לחיצה ימנית על התיקייה Databases ואז לוחצים על Import Data-tier Application.

    4. לוחצים על הבא.

    5. לוחצים על Browse, בוחרים את קובץ ה-BACPAC שרוצים לשחזר ואז לוחצים על Next.

    6. מאמתים את השם של מסד הנתונים החדש ולוחצים על הבא.

    7. לוחצים על סיום וממתינים לסיום הייבוא.

    8. כדי לצאת מהאשף, לוחצים על סגירה.

    9. כדי לוודא שהתהליך הושלם בהצלחה, אפשר להרחיב את התיקייה databases ב-Object Explorer ולבדוק אם מסד הנתונים שהועבר מופיע.

    העברה באמצעות קבוצות זמינותות שפועלות תמיד

    קבוצת זמינות תמיד פעילה (AOAG) היא תכונה של SQL Server שמאפשרת זמינות גבוהה והתאוששות מאסון. אתם יכולים להשתמש ב-AOAG כדי להעביר אשכולות AOAG קיימים, שרתי SQL עצמאיים ואשכולות לגיבוי במקרה של כשל (failover) של Windows Server ‏(WSFC). בשיטה הזו, נוצרת רפליקה של מסד הנתונים בסביבת היעד Google Cloud והנתונים מסונכרנים בין המקור ליעד. אחרי שהסנכרון מסתיים, אפשר להגדיר את הרפליקה בסביבת היעד Google Cloud כעותק ראשי. השיטה הזו מצמצמת את זמן ההשבתה, אבל נדרשות הגדרות נוספות. למיגרציות פשוטות עם סבילות משמעותית לזמן השבתה, יכול להיות ששיטות אחרות יהיו פשוטות ומשתלמות יותר.

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

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

    • כדי להבטיח מעבר מאובטח וחלק של הנתונים, צריך ליצור חיבור קישור בין רשתות שכנות (peering) בין AWS לבין Google Cloud. מידע נוסף זמין במאמר יצירת חיבורי HA VPN בין Google Cloud לבין AWS.

    • מוודאים שמסד הנתונים של המקור פועל במצב עצמאי, וגם שרתי המקור וגם שרתי היעד מצורפים ל-Active Directory‏ (AD). אם מסד הנתונים של המקור כבר משויך לאשכול WSFC באמצעות AOAG, אפשר לעיין במאמר בנושא העברה באמצעות קבוצות זמינות מבוזרות.

    • מוודאים שכל מפתחות ההצפנה במסד הנתונים של SQL Server במקור מותקנים בכל המופעים של SQL Server שיצטרפו ל-AOAG.

    הכנת SQL Server להיות חלק מקבוצת זמינות

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

    כדי להפעיל את התכונה AOAG בכל המכונות הווירטואליות של SQL Server שרוצים להוסיף ל-AOAG, פועלים לפי השלבים הבאים:

    1. מפעילים AOAG ב-SQL Server.

      1. מתחברים למכונה הווירטואלית של SQL Server באמצעות RDP.

      2. פותחים את Powershell במצב אדמין.

      3. מריצים את הפקודה הבאה כדי להפעיל AOAG ב-SQL Server.

        Enable-SqlAlwaysOn -ServerInstance $env:COMPUTERNAME -Force
        

      4. מריצים את הפקודה הבאה כדי לפתוח יציאה בחומת האש לשכפול נתונים.

        netsh advfirewall firewall add rule name="Allow SQL Server replication" dir=in action=allow protocol=TCP localport=5022
        
      5. חוזרים על שלב 1 לכל מכונות ה-VM של SQL Server שרוצים להוסיף ל-AOAG.

    2. יוצרים משתמש חדש ב-SQL Server ב-AD.

      $Credential = Get-Credential -UserName sql_server -Message 'Enter password'
      New-ADUser `
      -Name "sql_server" `
      -Description "SQL Admin account." `
      -AccountPassword $Credential.Password `
      -Enabled $true -PasswordNeverExpires $true
      
    3. מבצעים את השלבים הבאים בכל המופעים של SQL Server שכלולים ב-AOAG:

      1. פותחים את SQL Server Configuration Manager.
      2. בחלונית הניווט, בוחרים באפשרות SQL Server Services (שירותי SQL Server).
      3. ברשימת השירותים, לוחצים לחיצה ימנית על SQL Server (MSSQLSERVER) ובוחרים באפשרות Properties (מאפיינים).
      4. בקטע כניסה בתור, משנים את החשבון באופן הבא:
        • שם החשבון: DOMAIN\sql_server כאשר DOMAIN הוא שם NetBIOS של דומיין AD.
        • סיסמה: מזינים את הסיסמה שבחרתם בשלב 2 הקודם בקטע הזה.
      5. לוחצים על OK.

      6. כשמופיעה בקשה להפעלה מחדש של SQL Server, בוחרים באפשרות כן.

    עכשיו SQL Server פועל תחת חשבון משתמש בדומיין.

    הגדרת נקודת הקצה של השכפול למסד הנתונים של SQL Server

    כדי ליצור את נקודת הקצה של AOAG, פועלים לפי השלבים הבאים:

    1. אם מסד הנתונים של SQL Server במקור מוצפן באמצעות הצפנת נתונים שקופה (TDE), צריך לבצע את השלב הזה כדי לגבות, להעביר ולהתקין את האישורים והמפתחות ב-SQL Server ביעד.

    2. מתחברים למסד הנתונים של המקור ב-AWS באמצעות SSMS.

    3. מריצים את פקודת T-SQL הבאה כדי ליצור את נקודת הקצה של קבוצת הזמינות.

      USE [master]
      GO
      CREATE LOGIN [NET_DOMAIN\sql_server] FROM WINDOWS
      GO
      
      USE [DATABASE_NAME]
      GO
      CREATE USER [NET_DOMAIN\sql_server] FOR LOGIN [NET_DOMAIN\sql_server]
      GO
      
      USE [master]
      GO
      CREATE ENDPOINT migration_endpoint
          STATE=STARTED
          AS TCP (LISTENER_PORT=5022)
          FOR DATABASE_MIRRORING (ROLE=ALL);
      GO
      
      GRANT CONNECT ON ENDPOINT::[migration_endpoint] TO [NET_DOMAIN\sql_server]
      GO
      

      מחליפים את NET_DOMAIN בשם NetBIOS של דומיין AD, ואת DATABASE_NAME בשם של מסד הנתונים שרוצים להעביר.

    4. מתחברים ל-SQL Server של היעד ב- Google Cloud באמצעות SSMS ומריצים את פקודת T-SQL הבאה כדי ליצור את נקודת הקצה של שיקוף מסד הנתונים.

      CREATE LOGIN [NET_DOMAIN\sql_server] FROM WINDOWS
      GO
      
      CREATE ENDPOINT migration_endpoint
          STATE=STARTED
          AS TCP (LISTENER_PORT=5022)
          FOR DATABASE_MIRRORING (ROLE=ALL);
      GO
      
      GRANT CONNECT ON ENDPOINT::[migration_endpoint] TO [NET_DOMAIN\sql_server]
      GO
      

      מחליפים את NET_DOMAIN בשם NetBIOS של דומיין AD.

    5. כדי לאמת את נקודות הקצה, עוברים אל Server Objects > Endpoints > Database Mirroring ב-Object Explorer ב-SSMS.

      תצוגת נקודת קצה של SMSS.

    יצירת קבוצת AOAG

    כדי ליצור AOAG, פועלים לפי השלבים הבאים:

    1. מתחברים למסד הנתונים של המקור ב-AWS באמצעות SSMS.

    2. מריצים את פקודת T-SQL הבאה כדי להגדיר את מצב השחזור של מסד הנתונים למצב מלא וליצור גיבוי מלא.

      USE [master]
      GO
      
      ALTER DATABASE [DATABASE_NAME]
      SET RECOVERY FULL;
      BACKUP DATABASE [DATABASE_NAME]
      TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\DATABASE_NAME.bak';
      

      מחליפים את DATABASE_NAME בשם של מסד הנתונים שרוצים להעביר.

    3. מריצים את פקודת T-SQL הבאה כדי ליצור את קבוצת הזמינות.

      USE [master]
      GO
      
      CREATE AVAILABILITY GROUP [migration-ag]
      WITH (
          AUTOMATED_BACKUP_PREFERENCE = SECONDARY,
          DB_FAILOVER = OFF,
          DTC_SUPPORT = NONE,
          REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 0
      )
      FOR DATABASE [DATABASE_NAME]
      REPLICA ON
      N'SOURCE_SERVERNAME' WITH (
          ENDPOINT_URL = 'TCP://SOURCE_HOSTNAME:5022',
          AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
          FAILOVER_MODE = MANUAL,
          BACKUP_PRIORITY = 50,
          SEEDING_MODE = AUTOMATIC,
          SECONDARY_ROLE(ALLOW_CONNECTIONS = READ_ONLY)
      ),
      N'DEST_SERVERNAME' WITH (
          ENDPOINT_URL = 'TCP://DEST_HOSTNAME:5022',
          AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
          FAILOVER_MODE = MANUAL,
          BACKUP_PRIORITY = 50,
          SEEDING_MODE = AUTOMATIC,
          SECONDARY_ROLE(ALLOW_CONNECTIONS = READ_ONLY)
      );
      GO
      

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

      • DATABASE_NAME: עם שם מסד הנתונים שרוצים להעביר.
      • SOURCE_SERVERNAME: עם שם השרת של מסד הנתונים של המקור.
      • DEST_SERVERNAME: עם שם השרת של מסד הנתונים של היעד.
      • SOURCE_HOSTNAME: עם שם הדומיין המוגדר במלואו (FQDN) של המקור.
      • DEST_HOSTNAME: מחליפים ב-FQDN של היעד.
    4. מריצים את פקודת T-SQL הבאה במסד הנתונים של היעד כדי להוסיף אותו ל-AOAG.

      USE [master]
      GO
      
      ALTER AVAILABILITY GROUP [migration-ag] JOIN WITH (CLUSTER_TYPE = EXTERNAL);
      ALTER AVAILABILITY GROUP [migration-ag] GRANT CREATE ANY DATABASE;
      GO
      
    5. כדי לוודא את מצב ה-AOAG ומסד הנתונים שנוצרו, אפשר להשתמש בסייר האובייקטים או להריץ את פקודת T-SQL הבאה.

      SELECT * FROM sys.dm_hadr_availability_group_states
      GO
      

      מאמתים את מסד הנתונים של הרפליקה.

    ה-AOAG של SQL Server מוגדר עכשיו וממשיך לסנכרן בין AWS לבין Google Cloud. בשלב הבא, צריך להגדיר WSFC ומאזין לזמינות גבוהה ולתוכנית התאוששות מאסון (DR). מידע נוסף זמין במאמרים בנושא Windows Server Failover Clustering with SQL Server וWhat is an availability group listener.

    העברה באמצעות קבוצות זמינות מבוזרות

    קבוצת זמינות מבוזרת היא סוג מיוחד של קבוצת זמינות שמשתרעת על פני שתי קבוצות זמינות נפרדות. הוא נועד לספק זמינות גבוהה ויכולות התאוששות מאסון (DR) במיקומים מפוזרים גיאוגרפית. הארכיטקטורה הזו מאפשרת שכפול נתונים ומעבר לגיבוי (failover) חלקים בין קבוצות הזמינות הראשיות והמשניות, ומתאימה במיוחד להעברת נתונים. מידע מפורט יותר זמין במאמר בנושא קבוצות זמינות מבוזרות.

    בקטעים הבאים מוסבר איך אפשר להעביר את מסד הנתונים של SQL Server באמצעות קבוצות זמינות מבוזרות.

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

    מוודאים שיש לכם WSFC עם SQL Server באמצעות קבוצת זמינות עם מאזין של שם רשת וירטואלית (VNN), שפועל ב-AWS.

    הכנת סביבת היעד

    כדי להכין את סביבת היעד:

    1. כדי להגדיר WSFC עם SQL Server באמצעות קבוצת זמינות באמצעות מאזן עומסים פנימי ב- Google Cloud, אפשר לעיין במאמר הגדרת קבוצות זמינות של SQL Server Always-on עם אישור סינכרוני באמצעות מאזן עומסים פנימי.

    2. ב-Object Explorer, מוודאים ש-bookshelf-ag נוצר ושהוא משכפל את מסד הנתונים bookshelf. אחרי האימות, פועלים לפי השלבים הבאים כדי להסיר את קבוצת הזמינות ואת מסד הנתונים משני הצמתים באשכול הגיבוי האוטומטי.

      אימות המצב הראשוני של אשכול היעד.

    3. מתחברים אל node-1 ב-SSMS ושומרים את כתובת ה-IP של מאזין bookshelf.

      SELECT * FROM sys.availability_group_listeners
      
    4. מריצים את פקודת T-SQL הבאה כדי להסיר את קבוצת הזמינות bookshelf-ag ואת מסד הנתונים bookshelf.

      USE master
      GO
      
      DROP AVAILABILITY GROUP [bookshelf-ag]
      GO
      ALTER DATABASE [bookshelf] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
      GO
      DROP DATABASE [bookshelf]
      GO
      
    5. מריצים את פקודת ה-T-SQL הבאה ב-node-2 ב-SSMS כדי להסיר את מסד הנתונים המשוכפל.

      USE master
      GO
      
      DROP DATABASE [bookshelf]
      GO
      

    יצירה של קבוצת זמינות מבוזרת

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

    1. מריצים את פקודת T-SQL הבאה ב-node-1.

      USE master
      GO
      
      CREATE AVAILABILITY GROUP [gcp-dest-ag]
      FOR
      REPLICA ON
          N'NODE-1' WITH
          (
              ENDPOINT_URL = N'TCP://NODE-1:5022',
              FAILOVER_MODE = MANUAL,
              AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
              BACKUP_PRIORITY = 50,
              SECONDARY_ROLE(ALLOW_CONNECTIONS = NO),
              SEEDING_MODE = AUTOMATIC
          ),
          N'NODE-2' WITH
          (
              ENDPOINT_URL = N'TCP://NODE-2:5022',
              FAILOVER_MODE = MANUAL,
              AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
              BACKUP_PRIORITY = 50,
              SECONDARY_ROLE(ALLOW_CONNECTIONS = NO),
              SEEDING_MODE = AUTOMATIC
          );
      GO
      
    2. יוצרים מאזין.

      USE master;
      GO
      
      ALTER AVAILABILITY GROUP [gcp-dest-ag]
      ADD LISTENER N'gcp-dest-lsnr' (
      WITH IP (
      (N'LISTENER_IP', N'255.255.255.0')
      ),
      PORT = 1433);
      GO
      

      מחליפים את LISTENER_IP בכתובת ה-IP של המאזין.

    3. מתחברים אל node-2 באמצעות SSMS ומריצים את פקודת T-SQL הבאה כדי להוסיף אותו לקבוצת הזמינות של gcp-dest-ag.

      USE master
      GO
      
      ALTER AVAILABILITY GROUP [gcp-dest-ag] JOIN;
      ALTER AVAILABILITY GROUP [gcp-dest-ag] GRANT CREATE ANY DATABASE;
      
    4. מתחברים לרפליקה הראשית של SQL Server במקור ב-AWS באמצעות SSMS ומריצים את פקודת T-SQL הבאה כדי ליצור קבוצת זמינות מבוזרת.

      USE [master]
      GO
      
      CREATE AVAILABILITY GROUP [distributed-ag]
      WITH (DISTRIBUTED)
      AVAILABILITY GROUP ON
      'AWS_AG' WITH
      (
          LISTENER_URL = 'tcp://AWS_LISTENER:5022',
          AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
          FAILOVER_MODE = MANUAL,
          SEEDING_MODE = AUTOMATIC
      ),
      'gcp-dest-ag' WITH
      (
          LISTENER_URL = 'tcp://gcp-dest-lsnr:5022',
          AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
          FAILOVER_MODE = MANUAL,
          SEEDING_MODE = AUTOMATIC
      )
      GO
      

      מחליפים את AWS_AG בשם של קבוצת הזמינות ב-AWS ואת AWS_LISTENER ב-listener של קבוצת הזמינות ב-AWS.

    5. מריצים את פקודת T-SQL הבאה ב-SSMS ב-node-1 כדי להוסיף אותו לקבוצת הזמינות המבוזרת.

      USE [master]
      GO
      
      ALTER AVAILABILITY GROUP [distributed-ag]
      JOIN
      AVAILABILITY GROUP ON
      'AWS_AG' WITH
      (
          LISTENER_URL = 'tcp://AWS_LISTENER:5022',
          AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
          FAILOVER_MODE = MANUAL,
          SEEDING_MODE = AUTOMATIC
      ),
      'gcp-dest-ag' WITH
      (
          LISTENER_URL = 'tcp://gcp-dest-lsnr:5022',
          AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
          FAILOVER_MODE = MANUAL,
          SEEDING_MODE = AUTOMATIC
      )
      GO
      

      מחליפים את AWS_AG בשם של קבוצת הזמינות ב-AWS ואת AWS_LISTENER ב-listener של קבוצת הזמינות ב-AWS.

    6. מריצים את פקודת T-SQL הבאה ב-node-1 כדי לוודא שכל קבוצות הזמינות תקינות ומשוכפלות בקבוצת הזמינות המבוזרת לאשכול SQL Server החדש ב- Google Cloud

      SELECT * FROM sys.dm_hadr_availability_group_states
      GO
      

    הסרת המשאבים

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

    מחיקת הפרויקט

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

    כדי למחוק את הפרויקט:

    1. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.