תזמון של ייצוא קובץ יומן העסקאות

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

בדף הזה מוסבר איך לתזמן ייצוא והעלאה של יומני טרנזקציות באופן קבוע, כדי להעביר נתונים ממקורות בניהול עצמי וממקורות של Amazon RDS.

תזמון העלאות של קובצי יומן עסקאות ל-Amazon RDS

אתם יכולים לתזמן העברות קבועות של קובצי יומן העסקאות ממכונת המקור ב-Amazon RDS לקטגוריה ב-Cloud Storage שבה אתם מאחסנים את קובצי יומן העסקאות.

כך עושים את זה:

  1. מוודאים שהגיבויים האוטומטיים מופעלים במכונה של Amazon RDS. מידע נוסף זמין במאמר הפעלת גיבויים אוטומטיים במסמכי התיעוד של Amazon RDS.
  2. מאפשרים גישה לקובצי יומן העסקאות במכונה של Amazon RDS. גישה לגיבויים של יומני טרנזקציות באמצעות RDS ל-SQL Server אפשר גם לבדוק את הפקודה לדוגמה הבאה:

    דוגמה לקריאה לפרוצדורה מאוחסנת כדי לאפשר גישה ליומן העסקאות ב-Amazon RDS

    export DATABASE=YOUR_DATABASE_NAME;
    export S3_Bucket=YOUR_S3_BUCKET;
    exec msdb.dbo.rds_tlog_copy_setup
    @target_s3_arn='arn:aws:s3:::${S3_Bucket}/${DATABASE}/log/';
  3. יוצרים משימה של SQL Agent שפועלת לפי לוח זמנים קבוע. המשימה צריכה להריץ את הסקריפט הבא:
    declare @DATABASE varchar(100);
    SELECT @DATABASE=YOUR_DATABASE_NAME;
    
    USE @DATABASE;
    declare @startTime varchar(100);
    declare @endTime varchar(100);
    SELECT
      @startTime = CONVERT(VARCHAR(100), DATEADD(hour, -1, GETUTCDATE()), 120),
      @endTime = CONVERT(VARCHAR(100), GETUTCDATE(), 120);
    
    exec msdb.dbo.rds_tlog_backup_copy_to_S3 
      @db_name=@DATABASE,
      @backup_file_start_time=@startTime,
      @backup_file_end_time=@endTime;
  4. מגדירים העברות קבצים רציפות מהקטגוריה ב-S3 לקטגוריה ב-Cloud Storage. אתם יכולים להשתמש בכל פתרון כדי להעביר את הקבצים, למשל משימות העברה מבוססות-אירועים ב-Storage Transfer Service. הגדרה של העברות מבוססות-אירועים מ-AWS S3

תזמון העלאות של קובצי יומן טרנזקציות למכונות SQL Server מקומיות

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

כך עושים את זה:

  1. במערכת שבה רוצים להריץ את הסקריפט, מוודאים שהפעלתם את Google Cloud CLI עם אימות ופרויקט, על ידי הרצת הפקודה gcloud init או הפקודות gcloud auth login ו- gcloud config set project.
  2. שומרים את הסקריפט הבא בקובץ במכונה של שרת ה-SQL במקור.

    הסקריפט הזה יוצר באופן אוטומטי קובץ של יומן טרנזקציות ומעלה אותו לקטגוריה של Cloud Storage באמצעות הפקודה gcloud storage cp.

    Bash

    #!/bin/bash
    
    NOW="$(date +%s)"
    
    EXT=".trn"
    if [[ "$1" == "final" ]]
    then
      EXT='.trn.final'
    fi
    
    NAME="{DATABASE}.${NOW}.${EXT}"
    FULL_NAME="/SQLServerBackups/log/${NAME}"
    
    
    QUERY="BACKUP LOG ${DATABASE} TO DISK = '${FULL_NAME}'"
    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "${SA_PASSWORD}" -d master -Q "${QUERY}"
    
    gcloud storage cp "${FULL_NAME}" "${GCS_BACKUPS}/log/"

    PowerShell

    # Get the current timestamp
    $NOW = [int](Get-Date -UFormat '%s')
    
    # Set the file extension based on the command-line argument
    $EXT = '.trn'
    if ($args[0] -eq 'final') {
        $EXT = '.trn.final'
    }
    
    # Construct the backup file name
    $NAME = "{0}.{1}{2}" -f $DATABASE, $NOW, $EXT
    $FULL_NAME = "X:\SQLServerBackups\log\$NAME"
    
    # Construct the SQL backup query
    $QUERY = "BACKUP LOG $DATABASE TO DISK = '$FULL_NAME'"
    
    # Execute the SQL backup command
    Invoke-Sqlcmd -ServerInstance 'localhost' -Username 'SA' -Password $env:SA_PASSWORD -Database 'master' -Query $QUERY
    
    # Upload the backup file to Google Cloud Storage
    gcloud storage cp "$FULL_NAME" "$GCS_BACKUPS/log/"
  3. מגדירים כלי תזמון לבחירתכם כדי להפעיל את הסקריפט באופן קבוע.

    אפשר גם להשתמש בסקריפט הזה באופן ידני ולהעביר את הארגומנט המיקומי "final" כדי ליצור את קובץ יומן הטרנזקציות שהשם שלו מסתיים בסיומת .trn.final. האפשרות הזו שימושית כשרוצים לסיים את ההעברה ו לקדם את משימת ההעברה.