Menggunakan cadangan Microsoft SQL Server untuk pemulihan point-in-time di Compute Engine

Last reviewed 2023-06-27 UTC

Dalam tutorial ini, Anda akan melakukan pencadangan pada instance SQL ServerCompute Engine. Tutorial ini menunjukkan cara mengelola cadangan ini dan menyimpannya di Cloud Storage serta cara memulihkan database ke waktu tertentu.

Tutorial ini berguna jika Anda adalah admin sistem, developer, engineer, admin database, atau engineer developer yang ingin mencadangkan data SQL Server.

Tutorial ini mengasumsikan bahwa Anda sudah memahami hal-hal berikut:

Tujuan

  • Meluncurkan instance SQL Server dan membuat database.
  • Melakukan pencadangan lengkap, diferensial, dan log transaksi.
  • Mengupload cadangan ke Cloud Storage.
  • Memulihkan database dari cadangan Cloud Storage.

Biaya

Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Enable the Compute Engine API.

    Enable the API

  5. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  6. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  7. Enable the Compute Engine API.

    Enable the API

  8. Instal klien Remote Desktop Protocol (RDP) pilihan Anda. Untuk mengetahui informasi selengkapnya, lihat Klien Microsoft Desktop Jarak Jauh. Jika klien RDP sudah terinstal, Anda dapat melewati tugas ini.

Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.

Menyiapkan instance SQL Server

Di bagian ini, Anda akan meluncurkan instance SQL Server, menyiapkan database, dan mengonfigurasi kunci enkripsi.

Meluncurkan instance SQL Server

Tugas pertama Anda adalah meluncurkan instance SQL Server dan membuat folder cadangan.

  1. Buka Cloud Shell:

    BUKA Cloud Shell

  2. Luncurkan instance SQL Server:

    gcloud compute instances create sqlserver \
        --zone=us-central1-c \
        --machine-type=n1-standard-1 \
        --image-family=sql-std-2019-win-2019 \
        --image-project=windows-sql-cloud \
        --boot-disk-size=50GB \
        --boot-disk-type=pd-standard \
        --tags=sqlserver \
        --scopes=https://www.googleapis.com/auth/cloud-platform
    
  3. Buka halaman VM instances di Google Cloud Console dan temukan instance Windows yang ingin Anda hubungkan:

    BUKA HALAMAN VM INSTANCES

  4. Tetapkan sandi awal untuk instance. Simpan sandi di tempat yang aman.

  5. Di bagian Compute Engine pada konsol Google Cloud, klik menu dropdown RDP dan pilih opsi Download file RDP agar dapat mendownload file RDP untuk instance Anda. Gunakan file ini untuk terhubung ke instance menggunakan klien RDP. Untuk mengetahui informasi selengkapnya, lihat Klien Microsoft Desktop Jarak Jauh.

Menginstal SQL Server Management Studio

Install Microsoft SQL Server Management Studio (SSMS) dengan melakukan hal berikut:

  1. Dalam sesi RDP Anda, perkecil semua jendela, dan mulai aplikasi Windows PowerShell ISE.

  2. Pada prompt PowerShell, download dan menyetujui penginstal SSMS:

    Start-BitsTransfer `
        -Source "https://aka.ms/ssmsfullsetup" `
        -Destination "$env:Temp\ssms-setup.exe"
    & $env:Temp\ssms-setup.exe
    
  3. Setujui prompt untuk mengizinkan perubahan.

  4. Di penginstal SSMS, klik Instal.

  5. Setelah penginstalan selesai, klik Mulai ulang untuk memulai ulang komputer jarak jauh. Tindakan ini akan menutup sesi RDP.

  6. Untuk menghubungkan kembali, klik Hubungkan di jendela RDP. Jika komputer jarak jauh belum selesai dimulai ulang, tunggu beberapa saat, lalu coba hubungkan lagi.

  7. Masukkan nama pengguna dan sandi yang Anda simpan sebelumnya (kosongkan kolom Domain ), lalu klik Oke untuk hubungkan kembali.

Menyiapkan folder pencadangan dan pemulihan

  1. Dalam sesi RDP, perkecil semua jendela, lalu buka Google Cloud SDK Shell (tidak sama dengan Cloud Shell) di desktop Windows.

  2. Buat folder cadangan:

    mkdir c:\backup
    
  3. Buat folder pemulihan:

    mkdir c:\restore
    

Menyiapkan database

  1. Di Cloud Shell, pada instance, buat database pengujian:

    osql -E -Q "create database testdb"
    
  2. Buat tabel pengujian:

    osql -E -Q "create table testdb.dbo.testtable(status varchar(255))"
    

Mengonfigurasi kunci enkripsi

  1. Di Cloud Shell, buat kunci database utama:

    osql -E -Q "USE master;CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MyPassword!';"
    
  2. Buat sertifikat cadangan:

    osql -E -Q "USE master; CREATE CERTIFICATE testdbcert WITH SUBJECT = 'testdb certificate';"
    

Melakukan pencadangan

SQL Server 2019 dan yang sebelumnya

Di bagian ini, Anda akan membuat cadangan lengkap, diferensial, dan log transaksi saat mengubah database di antara setiap cadangan.

  1. Tambahkan baris ke tabel pengujian:

    osql -E -Q "insert into testdb.dbo.testtable ([status]) VALUES ('Initial')"
    
  2. Di Cloud Shell, lakukan pencadangan penuh:

    osql  -E -Q "BACKUP DATABASE testdb TO DISK='c:\backup\testdb.bak' WITH INIT,
        COMPRESSION,
        ENCRYPTION
        (
            ALGORITHM = AES_256,
            SERVER CERTIFICATE = testdbcert
        )  "
    
  3. Tambahkan baris ke tabel pengujian:

    osql -E -Q "insert into testdb.dbo.testtable ([status]) VALUES ('After Full Backup')"
    
  4. Lakukan pencadangan diferensial:

    osql  -E -Q "BACKUP DATABASE testdb TO DISK='c:\backup\testdb-diff.bak' WITH DIFFERENTIAL,
    COMPRESSION,
    ENCRYPTION
        (
        ALGORITHM = AES_256,
        SERVER CERTIFICATE = testdbcert
        ) "
    
  5. Tambahkan baris ke tabel pengujian:

    osql -E -Q "insert into testdb.dbo.testtable ([status]) VALUES ('After Diff Backup')"
    
  6. Lakukan pencadangan log transaksi:

    osql  -E -Q "BACKUP LOG testdb TO DISK='c:\backup\testdb-log.bak' WITH COMPRESSION,
    ENCRYPTION
        (
        ALGORITHM = AES_256,
        SERVER CERTIFICATE = testdbcert
        ) "
    
  7. Tambahkan baris ke tabel pengujian:

    osql -E -Q "insert into testdb.dbo.testtable ([status]) VALUES ('Bad Row')"
    
  8. Verifikasi baris dalam tabel:

    osql -E -Q "select * from testdb.dbo.testtable"
    

    Outputnya akan terlihat seperti berikut:

    Initial
    
    After Full Backup
    
    After Diff Backup
    
    Bad Row
    

SQL Server 2022

Di bagian ini, Anda akan membuat cadangan lengkap, diferensial, dan log transaksi saat mengubah database di antara setiap cadangan. Anda menggunakan perintah pencadangan dan pemulihan bawaan dengan Cloud Storage.

SQL Server 2022 (16.x) mendukung integrasi penyimpanan objek yang diperluas dengan memperkenalkan konektor baru yang menggunakan REST API untuk terhubung ke penyedia penyimpanan objek yang kompatibel dengan S3. Anda dapat menggunakan perintah BACKUP TO URL dan RESTORE FROM URL di SQL Server 2022 dengan tujuan penyimpanan yang kompatibel dengan S3 sebagai URL.

SQL Server menggunakan kredensial untuk terhubung ke sumber daya di luar server itu sendiri. Kredensial adalah catatan yang berisi informasi autentikasi. Untuk mengautentikasi dan memberikan otorisasi akses ke antarmuka Cloud Storage S3, Anda harus membuat dan menggunakan Kunci Akses dan Kunci Rahasia. Anda kemudian menyimpan kunci ini di kredensial SQL Server Anda.

  1. Buat Kunci Akses dan Kunci Rahasia untuk akun pengguna Anda ke bucket Cloud Storage Anda:

    1. Buka Cloud Storage.
    2. Buka Setelan.
    3. Buka INTEROPERABILITAS.
    4. Buka Kunci akses untuk akun pengguna Anda.
    5. Scroll ke bawah, lalu klik Buat kunci untuk membuat Kunci akses baru dan Kunci rahasia.
  2. Buat kredensial di instance SQL Server 2022 Anda:

    Jalankan contoh kode berikut untuk membuat kredensial. Pilih nama untuk kredensial Anda. Ganti kolom ACCESS_KEY dan SECRET dengan nilai yang Anda buat di langkah sebelumnya.

    osql -E -Q "
        CREATE CREDENTIAL [CREDENTIAL_NAME]
        WITH
            IDENTITY = 'S3 Access Key',
            SECRET = 'ACCESS_KEY:SECRET'
        "
    
  3. Tambahkan baris ke tabel pengujian:

    osql -E -Q "insert into testdb.dbo.testtable ([status]) VALUES ('Initial')"
    
  4. Lakukan operasi BACKUP ke bucket Cloud Storage:

    Jalankan perintah database pencadangan dengan menetapkan URI bucket Cloud Storage sebagai parameter value URL dan nama kredensial yang Anda tentukan sebelumnya sebagai nilai opsi WITH CREDENTIAL. Perintah ini akan mengaktifkan SQL Server untuk membuat file cadangan dan menguploadnya pada saat yang sama ke bucket Cloud Storage, tanpa memerlukan ruang disk lokal tambahan.

    osql -E -Q "
        BACKUP DATABASE testdb
        TO URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/testdb.bak'
        WITH
            CREDENTIAL = 'CREDENTIAL_NAME',
            FORMAT,
            STATS = 10,
            MAXTRANSFERSIZE = 10485760,
            BLOCKSIZE = 65536,
            COMPRESSION;
        "
    

Daftar berikut menjelaskan parameter pernyataan WITH:

  • FORMAT: Menimpa cadangan yang ada dan membuat set media baru.
  • STATISTIK: Memberi tahu SQL Server untuk memberikan informasi tentang progres pencadangan.
  • KOMPRESI: Memberi tahu SQL Server untuk mengompresi file cadangan, sehingga file menjadi lebih kecil dan lebih cepat untuk diupload ke Cloud Storage.
  • MAXTRANSFERSIZE = 10485760, opsi BLOCKSIZE = 65536 membantu menghindari error perangkat I/O dengan file cadangan yang berukuran lebih besar.
  1. Tambahkan baris ke tabel pengujian:

    osql -E -Q "insert into testdb.dbo.testtable ([status]) VALUES ('After Full Backup')"
    
  2. Lakukan pencadangan diferensial:

    osql -E -Q "
        BACKUP DATABASE testdb
        TO URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/testdb-diff.bak'
        WITH
            DIFFERENTIAL,
            CREDENTIAL = 'CREDENTIAL_NAME',
            STATS = 10,
            MAXTRANSFERSIZE = 10485760,
            BLOCKSIZE = 65536,
            COMPRESSION;
        "
    
  3. Tambahkan baris ke tabel pengujian:

    osql -E -Q "insert into testdb.dbo.testtable ([status]) VALUES ('After Diff Backup')"
    
  4. Lakukan pencadangan log transaksi:

    osql -E -Q "
        BACKUP LOG testdb
        TO URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/testdb-log.bak'
        WITH
            CREDENTIAL = 'CREDENTIAL_NAME',
            STATS = 10,
            MAXTRANSFERSIZE = 10485760,
            BLOCKSIZE = 65536,
            COMPRESSION;
        "
    
  5. Tambahkan baris ke tabel pengujian:

    osql -E -Q "insert into testdb.dbo.testtable ([status]) VALUES ('Bad Row')"
    
  6. Verifikasi baris dalam tabel:

    osql -E -Q "select * from testdb.dbo.testtable"
    

    Outputnya akan terlihat seperti ini:

    Initial
    
    After Full Backup
    
    After Diff Backup
    
    Bad Row
    

Mengelola cadangan Anda

Di bagian ini, Anda akan menyimpan cadangan dari jarak jauh di Cloud Storage, mengonfigurasi bucket Cloud Storage untuk memangkas cadangan lama secara otomatis, dan menjadwalkan pencadangan. Jika Anda menjalankan beberapa server database, pertimbangkan untuk membuat beberapa direktori di bucket Cloud Storage untuk mewakili server yang berbeda.

Mengupload cadangan Anda ke Cloud Storage

SQL Server 2019 dan yang sebelumnya

Setelah memiliki beberapa file cadangan, Anda dapat mengupload cadangan Anda ke Cloud Storage.

  1. Di Cloud Shell, buat bucket Cloud Storage. Nama bucket harus unik secara global di Google Cloud. Untuk memastikan agar nama bucket Anda unik, pertimbangkan untuk memberinya spasi dengan nama project Anda, seperti yang ditunjukkan di sini:

    gsutil mb "gs://${DEVSHELL_PROJECT_ID}-sql-backups"
    
  2. Di jendela shell pada sesi RDP, salin file Anda ke bucket Cloud Storage Anda. Pada perintah berikut, ganti BUCKET_NAME dengan nama bucket yang baru saja Anda buat.

    gsutil cp -n c:\backup\testdb*.bak gs://BUCKET_NAME
    

    Anda dapat menggunakan perintah gsutil cp untuk membuat seluruh struktur direktori dan mengupload beberapa file pada satu waktu.

SQL Server 2022

File cadangan sudah ada di bucket Anda karena SQL Server 2022 mendukung pencadangan langsung ke Cloud Storage.

Menyiapkan pruning file otomatis di Cloud Storage

Cadangan yang lebih lama akhirnya aktif lebih lama dibandingkan manfaatnya, jadi Anda harus menghapusnya. Untuk membantu mengotomatiskan proses ini, Cloud Storage memiliki mekanisme pengelolaan siklus proses yang dapat Anda gunakan untuk mengelola siklus proses file cadangan.

Untuk mengonfigurasi pengelolaan siklus proses objek di bucket Anda:

  1. Di Cloud Shell, buat file konfigurasi siklus proses JSON. File ini memerintahkan Cloud Storage untuk menghapus file setelah 30 hari:

    bash -c 'cat <<EOF >  lifecycle.json
    {
        "lifecycle": {
            "rule": [{
                "action": { "type": "Delete" },
                "condition": { "age": 30 }
            }]
        }
    }
    EOF'
    
  2. Tetapkan konfigurasi siklus proses untuk bucket Cloud Storage Anda. Ganti BUCKET_NAME dengan nama bucket Anda.

    gsutil lifecycle set lifecycle.json gs://BUCKET_NAME
    

Menjadwalkan pencadangan Anda

Secara umum, sebaiknya lakukan pencadangan penuh secara berkala dan lakukan pencadangan diferensial hingga pencadangan penuh berikutnya. Di Windows, salah satu cara untuk menjadwalkan pencadangan adalah dengan menggunakan tugas terjadwal.

Jika Anda membuat skrip pencadangan yang menggunakan serangkaian pencadangan, pastikan untuk menyertakan beberapa langkah validasi yang logis pada setiap titik guna memverifikasi keberhasilan penyelesaian. Jika validasi gagal, pastikan skrip memunculkan pemberitahuan Windows. Selain itu, agar disk lokal tidak terisi, pastikan skrip menghapus file cadangan lokal setelah berhasil mengupload ke Cloud Storage.

Memulihkan dari cadangan

Di bagian ini, Anda memulihkan database SQL Server dari file cadangan yang Anda simpan di Cloud Storage.

SQL Server 2019 dan yang sebelumnya

  1. Di Cloud Shell pada sesi RDP, download file cadangan Anda dari Cloud Storage. Ganti BUCKET_NAME dengan nama bucket penyimpanan cadangan SQL Server Anda:

    gsutil cp gs://BUCKET_NAME/testdb*.bak c:\restore
    
  2. Buka konsol SQL Server Management.

  3. Klik tombol Start, lalu klik Microsoft SQL Server Tools 18 > Microsoft SQL Server Management Studio 18.

  4. Biarkan kolom Koneksi apa adanya, lalu klik Hubungkan.

  1. Di panel kiri, luaskan Database.
  2. Klik kanan testdb, lalu di jendela pop-up menu, klik Tugas > Pulihkan > Database.
  3. Impor file cadangan ke konsol:
    1. Untuk Sumber, pilih Perangkat.
    2. Klik tombol .
    3. Pada dialog yang terbuka, klik Tambahkan, pilih semua file dalam C:\restore, lalu klik Oke.
    4. Klik OK.
  4. Untuk melihat opsi pemulihan point-in-time:

    1. Klik Linimasa .
    2. Di bagian Pulihkan ke, klik Tanggal dan waktu tertentu.
    3. Untuk Interval Linimasa, pilih jam.
    4. Pilih waktu pada rentang Pencadangan Log Transaksi.
    5. Klik Batal untuk keluar dari layar linimasa.

  5. Dalam tutorial ini, Anda akan memulihkan database ke statusnya sebelum pencadangan log transaksi. Untuk melakukannya, dalam daftar cadangan, hapus baris log transaksi:

    Hapus baris log transaksi di daftar cadangan

  6. Mulai proses pemulihan:

    1. Klik OK.
    2. Tunggu hingga database menyelesaikan proses pemulihan, dan saat Anda melihat pesan, Database 'testdb' restored successfully, klik Oke.
  7. Cantumkan baris dalam tabel pengujian:

    osql -E -Q "select * from testdb.dbo.testtable;"
    

    Outputnya menampilkan dua baris:

    "Initial
    "After Full Backup"
    

    Anda melihat semua baris yang dimasukkan ke dalam tabel sebelum melakukan pencadangan log transaksi.

SQL Server 2022

Anda dapat melakukan operasi RESTORE. Tetapkan jalur file Cloud Storage sebagai nilai parameter URL. Contoh, skrip T-SQL ini memulihkan cadangan penuh langsung dari Cloud Storage:

```
osql -E -Q "
RESTORE DATABASE testdb
FROM
    URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/testdb.bak'
WITH
    CREDENTIAL = 'CREDENTIAL_NAME';
    "
```
  1. Buka konsol SQL Server Management.
  2. Klik tombol Mulai, lalu klik Microsoft SQL Server Tools 19 > Microsoft SQL Server Management Studio 19.
  1. Biarkan kolom Koneksi apa adanya, lalu klik Hubungkan.
  1. Di panel kiri, luaskan Database.
  2. Klik kanan testdb, lalu di jendela pop-up menu, klik Tugas > Pulihkan > Database.
  3. Impor file cadangan ke konsol:

    1. Untuk Sumber, pilih Perangkat.
    2. Klik tombol .
    3. Pada dialog yang terbuka, klik Jenis media cadangan, lalu pilih URL S3
    4. Pada dialog yang terbuka, klik Tambahkan. Tambahkan tiga lokasi file cadangan Anda di bucket Cloud Storage, serta Kunci Rahasia dan Kunci Akses yang Anda berikan saat membuat kredensial.

    5. Klik OK.

  4. Untuk melihat opsi pemulihan point-in-time:

    1. Klik Linimasa .
    2. Di bagian Pulihkan ke, klik Tanggal dan waktu tertentu.
    3. Untuk Interval Linimasa, pilih jam.
    4. Pilih waktu pada rentang Pencadangan Log Transaksi.
    5. Klik Batal untuk keluar dari layar linimasa.

  5. Dalam tutorial ini, Anda akan memulihkan database ke statusnya sebelum pencadangan log transaksi. Untuk melakukannya, dalam daftar cadangan, hapus baris log transaksi:

    Hapus baris log transaksi di daftar cadangan

  6. Mulai proses pemulihan:

    1. Klik OK.
    2. Tunggu hingga database menyelesaikan proses pemulihan, dan saat Anda melihat pesan, Database 'testdb' restored successfully, klik Oke.
  7. Cantumkan baris dalam tabel pengujian:

    osql -E -Q "select * from testdb.dbo.testtable;"
    

    Outputnya menampilkan dua baris:

    "Initial
    "After Full Backup"
    

    Anda melihat semua baris yang dimasukkan ke dalam tabel sebelum melakukan pencadangan log transaksi.

Pembersihan

Menghapus project

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Langkah selanjutnya