Menjadwalkan ekspor file log transaksi

File cadangan log transaksi berisi perubahan yang terjadi di database sumber setelah Anda mengambil pencadangan penuh. Pencadangan log transaksi diperlukan untuk fase pemuatan berkelanjutan dari tugas migrasi Anda.

Halaman ini menjelaskan cara menjadwalkan ekspor dan upload log transaksi reguler untuk database SQL Server sumber Anda.

Menjadwalkan upload file log transaksi untuk Amazon RDS

Anda dapat menjadwalkan transfer rutin file log transaksi dari instance sumber Amazon RDS ke bucket Cloud Storage tempat Anda menyimpan file log transaksi.

Lakukan langkah-langkah berikut:

  1. Pastikan pencadangan otomatis diaktifkan di instance Amazon RDS Anda. Lihat Mengaktifkan pencadangan otomatis dalam dokumentasi Amazon RDS.
  2. Aktifkan akses ke file log transaksi di instance Amazon RDS Anda. Lihat Akses ke cadangan log transaksi dengan RDS untuk SQL Server. Anda juga dapat memeriksa contoh perintah berikut:

    Contoh panggilan prosedur tersimpan untuk mengaktifkan akses log transaksi di 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. Buat tugas Agen SQL yang berjalan sesuai jadwal reguler. Tugas harus menjalankan skrip berikut:
    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. Konfigurasikan transfer file berkelanjutan dari bucket S3 ke bucket Cloud Storage. Anda dapat menggunakan solusi apa pun untuk memindahkan file, misalnya tugas transfer berbasis peristiwa di Storage Transfer Service. Lihat Menyiapkan transfer berbasis peristiwa dari AWS S3.

Menjadwalkan upload file log transaksi untuk instance SQL Server on-premise

Anda dapat menjadwalkan transfer rutin file log transaksi dari instance sumber yang dikelola sendiri ke bucket Cloud Storage tempat Anda menyimpan file log transaksi. Salah satu solusi yang direkomendasikan adalah

Lakukan langkah-langkah berikut:

  1. Di sistem tempat Anda ingin menjalankan skrip, pastikan Anda telah menginisialisasi Google Cloud CLI dengan autentikasi dan project dengan menjalankan gcloud init; atau gcloud auth login dan gcloud config set project.
  2. Simpan skrip berikut ke file di instance SQL Server sumber Anda.

    Skrip ini mengotomatiskan pembuatan file log transaksi dan menguploadnya ke bucket Cloud Storage Anda menggunakan perintah 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. Konfigurasikan alat penjadwalan pilihan Anda untuk menjalankan skrip secara rutin.

    Anda juga dapat menggunakan skrip ini secara manual dan meneruskan argumen posisional "final" untuk membuat file log transaksi yang namanya diakhiri dengan akhiran .trn.final. Hal ini berguna saat Anda ingin menyelesaikan migrasi dan mempromosikan tugas migrasi.