All Products
Search
Document Center

Elastic Compute Service:Praktik terbaik untuk membuat snapshot konsisten aplikasi untuk SQL Server (Windows)

Last Updated:Apr 01, 2026

Jika SQL Server mengalami crash atau disk gagal, pemulihan data dari snapshot yang hanya konsisten terhadap crash dapat menyebabkan database rusak atau tidak konsisten—memerlukan pemulihan manual atau berpotensi kehilangan data. Snapshot konsisten aplikasi mengatasi masalah ini dengan sementara menghentikan operasi penulisan database sebelum snapshot diambil, sehingga database yang dipulihkan dapat dimulai secara bersih tanpa transaksi yang belum selesai. Panduan ini menjelaskan seluruh alur kerja verifikasi: menyiapkan database uji, membuat snapshot konsisten aplikasi, memastikan snapshot berhasil dibuat, dan memvalidasi bahwa rollback disk memulihkan data tepat pada titik waktu saat snapshot diambil.

Contoh berikut menggunakan Windows Server 2019 dan Microsoft SQL Server 2019 (64-bit).

Cara kerja

Saat Anda memicu snapshot konsisten aplikasi, layanan snapshot ECS berkoordinasi dengan Windows Volume Shadow Copy Service (VSS) untuk:

  1. Memberi tahu VSS Writers yang terdaftar (termasuk SQL Server Writer) untuk membekukan operasi penulisan.

  2. Mengosongkan semua buffer I/O yang tertunda agar tidak ada operasi penulisan yang belum selesai.

  3. Membuat snapshot ESSD yang dipilih selama operasi penulisan ditangguhkan.

  4. Memberi sinyal kepada VSS untuk melanjutkan operasi penulisan setelah snapshot dibuat.

  5. Memberi tag APPConsistent:True pada setiap snapshot yang berhasil dibuat.

Periksa ExitCode dalam output Cloud Assistant untuk memastikan keberhasilan.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Instance ECS yang menggunakan Enterprise SSDs (ESSDs) dengan fitur multi-attach dinonaktifkan.

  • Instance ECS dalam status Running dan Cloud Assistant dalam status Normal — lihat Periksa status Cloud Assistant dan tangani anomali.

  • Microsoft SQL Server terinstal pada instance tersebut.

  • Peran Resource Access Management (RAM) yang dilampirkan ke instance, dengan kebijakan kustom yang memberikan izin berikut:

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:DescribeSnapshot*",
                "ecs:CreateSnapshot*",
                "ecs:TagResources",
                "ecs:DescribeDisks"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {}
        }
    ]
}

Untuk petunjuk membuat peran RAM dan melampirkannya ke instance, lihat Buat peran RAM dan lampirkan ke instance ECS.

Cloud Assistant menjalankan perintah pada instance untuk mengoordinasikan pembekuan VSS. Peran RAM memberikan izin yang diperlukan oleh Cloud Assistant untuk melakukan kueri dan membuat snapshot selama proses ini.

Alur kerja

image
  1. Siapkan lingkungan verifikasi database — Buat database dan tabel uji, lalu jalankan loop penulisan berkelanjutan untuk mensimulasikan operasi penulisan yang sedang berlangsung.

  2. Buat snapshot konsisten aplikasi — Buat grup snapshot-konsisten untuk instance Windows di Konsol ECS dengan mengaktifkan konsistensi aplikasi.

  3. Konfirmasi keberhasilan snapshot — Periksa output Cloud Assistant untuk exit code nol dan verifikasi tag APPConsistent:True pada snapshot.

  4. Validasi pemulihan data — Lakukan rollback disk menggunakan grup snapshot-konsisten, lalu lakukan kueri terhadap database untuk memastikan timestamp penulisan terakhir lebih awal daripada titik pembekuan.

Prosedur

Langkah 1: Siapkan lingkungan verifikasi database

  1. Hubungkan ke instance Windows. Untuk petunjuknya, lihat Hubungkan ke Windows.

  2. Buka SQL Server Management Studio: klik ikon Search di pojok kiri bawah, ketik ssms, lalu tekan Enter. Klik Microsoft SQL Server Management Studio 18.

  3. Pada kotak dialog Connect to Server, masukkan detail koneksi server dan klik Connect.

  4. Buat database uji bernama AdventureWorks:

    1. Klik kanan jendela kueri dan pilih Execute.

    CREATE DATABASE AdventureWorks;
  5. Buat tabel uji bernama PointInTime dan mulai loop penulisan berkelanjutan:

    1. Klik kanan jendela kueri dan pilih Execute.

    USE AdventureWorks
    GO
    IF NOT EXISTS (SELECT name FROM sysobjects WHERE name = 'PointInTime' AND TYPE ='U')
    CREATE TABLE PointInTime (PIT datetime)
    WHILE ( 1 = 1 )
    BEGIN
        INSERT PointInTime SELECT GETDATE()
        WAITFOR DELAY '00:00:001'
    END

    Kueri ini menjalankan loop berkelanjutan, memasukkan timestamp saat ini setiap milidetik. Biarkan kueri ini tetap berjalan—ini mensimulasikan operasi penulisan berkelanjutan untuk verifikasi snapshot.

  6. Di pohon direktori kiri, pastikan database AdventureWorks dan tabel PointInTime terlihat.

Langkah 2: Buat snapshot konsisten aplikasi

  1. Buka Konsol ECS - Grup Snapshot-Konsisten.

  2. Di bilah navigasi atas, pilih wilayah dan kelompok sumber daya instance tersebut.

    Region

  3. Pada tab Snapshot-consistent Groups, klik Create Snapshot-consistent Group.

  4. Pada kotak dialog Create Snapshot:

    1. Biarkan Resource Type tetap sebagai Instance (nilai default).

    2. Pilih instance Windows dari daftar drop-down. Di bagian Select Cloud Disks, pilih ESSD yang akan dimasukkan ke dalam snapshot.

    3. Bentangkan Advanced Settings, pilih Enable Application-consistent Snapshot, lalu pilih Contain Writers by Default.

    VSS Writers berkoordinasi dengan aplikasi seperti SQL Server untuk membekukan operasi penulisan selama pembuatan snapshot. Untuk informasi latar belakang tentang arsitektur VSS, lihat dokumentasi Volume Shadow Copy Service?redirectedfrom=MSDN).
  5. Klik OK.

Setelah grup snapshot-konsisten dibuat, muncul pesan yang berisi ID perintah Cloud Assistant dan ID tugas. Gunakan ID tugas tersebut pada langkah berikutnya untuk memverifikasi snapshot.

Langkah 3: Konfirmasi keberhasilan snapshot

  1. Klik tautan ID tugas pada halaman hasil eksekusi perintah Cloud Assistant untuk melihat output-nya. Snapshot konsisten aplikasi yang berhasil menampilkan ExitCode = 0. Output tersebut mencantumkan ID grup snapshot-konsisten.

    ExitCode yang tidak nol menunjukkan adanya kesalahan. Periksa kode kesalahan di kolom ExitCode dan rujuk bagian Error codes untuk langkah penyelesaiannya.

    image

  2. Tinjau output perintah untuk memastikan setiap tahap proses snapshot:

    • Komponen VSS (COM+ dan VSS) telah terinstal dan tersedia. image

    • Semua volume logis yang akan dibackup telah diidentifikasi dan dimuat dengan benar. image

    • Database SQL Server secara otomatis disertakan oleh SQL Server VSS Writer. image

    • Timestamp pembuatan snapshot dan titik pembekuan database telah dicatat. Pada contoh berikut, snapshot dibuat pada 2025-03-03 13:53:30 — inilah titik waktu saat operasi penulisan ditangguhkan. image

  3. Verifikasi tag APPConsistent:True pada snapshot:

    1. Buka Konsol ECS - Grup Snapshot-Konsisten.

    2. Pada tab Snapshot-consistent Groups, klik ID grup snapshot-konsisten yang telah Anda buat.

    3. Di bagian Snapshot Information, pastikan tag APPConsistent:True muncul di kolom Tag untuk setiap snapshot.

    image

  4. Lakukan kueri terhadap database untuk melihat jendela pembekuan secara tepat:

    1. Klik kanan jendela kueri dan pilih Execute.

    2. Pada hasil kueri, cari celah pada timestamp. Pada contoh berikut, tidak ada catatan yang dimasukkan antara 2025-03-03 13:53:30 dan 2025-03-03 13:53:33, yang mengonfirmasi bahwa operasi penulisan ditangguhkan pada 13:53:30 dan dilanjutkan kembali pada 13:53:33.

    USE AdventureWorks
    select * from PointInTime
    GO

    image

Langkah 4: Validasi pemulihan data

  1. Lakukan rollback disk menggunakan grup snapshot-konsisten. Untuk petunjuknya, lihat Roll back disks by using a snapshot-consistent group.

  2. Setelah rollback selesai, hubungkan ke instance Windows dan buka Microsoft SQL Server Management Studio 18.

  3. Klik New Query dan masukkan:

    USE AdventureWorks
    select * from PointInTime
    GO
  4. Klik kanan jendela kueri dan pilih Execute.

  5. Pada hasil kueri, temukan timestamp terbaru di tabel PointInTime. Pada contoh ini, catatan terakhir menunjukkan 2025-03-03 13:53:29 — yang lebih awal daripada waktu pembekuan 13:53:30 yang dicatat pada Langkah 3. Hal ini mengonfirmasi bahwa snapshot konsisten aplikasi berhasil menangkap database tepat pada saat operasi penulisan ditangguhkan, tanpa menyertakan penulisan parsial apa pun.

    image

Logika verifikasi:

Hasil kueriMakna
Waktu penulisan terakhir lebih awal daripada waktu pembekuanSnapshot konsisten aplikasi berfungsi dengan benar. Database yang dipulihkan mencerminkan kondisi tepat pada saat pembuatan snapshot.
Waktu penulisan terakhir sama dengan atau lebih baru daripada waktu pembekuanOperasi penulisan berlanjut selama jendela pembekuan. Snapshot tidak mencapai konsistensi aplikasi seperti yang diharapkan.