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

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

בדף הזה מוסבר איך לתזמן ייצוא והעלאה של יומני טרנזקציות באופן קבוע, כדי לבצע העברה ממקורות בניהול עצמי וממקורות של 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 Server.

    הסקריפט הזה יוצר באופן אוטומטי קובץ יומן של טרנזקציות ומעלה אותו לקטגוריה שלכם ב-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. האפשרות הזו שימושית כשרוצים לסיים את ההעברה ו לקדם את משימת ההעברה.