Bagikan melalui


Gambaran umum pemulihan dan pemulihan kembali (SQL Server)

Berlaku untuk:SQL Server

Artikel ini menyediakan gambaran umum tentang proses pemulihan dan pemulihan database untuk SQL Server.

Overview

Untuk memulihkan database SQL Server dari kegagalan, administrator database harus memulihkan sekumpulan cadangan SQL Server dalam urutan pemulihan yang benar dan bermakna secara logis. Proses pemulihan dan pemulihan SQL Server mendukung pemulihan data dari cadangan seluruh database, file data, atau halaman data, sebagai berikut:

  • Database (pemulihan database lengkap)

    Seluruh database dipulihkan dan dipulihkannya terjamin, dan database berada dalam status offline selama operasi pemulihan.

  • File data (pemulihan file)

    File data atau sekumpulan file dipulihkan dan dikembalikan. Selama pemulihan file, grup file yang berisi file secara otomatis offline selama pemulihan. Setiap upaya untuk mengakses grup file offline menyebabkan kesalahan.

  • Halaman data (halaman pemulihan)

    Di bawah model pemulihan penuh atau model pemulihan yang dicatat secara massal, Anda dapat memulihkan halaman individual. Pemulihan halaman dapat dilakukan pada database apa pun, terlepas dari jumlah grup file.

Pencadangan dan pemulihan SQL Server berfungsi di semua sistem operasi yang didukung. Untuk informasi tentang sistem operasi yang didukung, lihat persyaratan Perangkat Keras dan perangkat lunak . Untuk informasi tentang dukungan untuk pencadangan dari versi SQL Server sebelumnya, lihat bagian Dukungan Kompatibilitas dari RESTORE.

Skenario pemulihan

Skenario pemulihan di SQL Server adalah proses memulihkan data dari satu atau beberapa cadangan lalu memulihkan database. Skenario pemulihan yang didukung bergantung pada model pemulihan database dan edisi SQL Server.

Tabel berikut memperkenalkan kemungkinan skenario pemulihan yang didukung untuk model pemulihan yang berbeda.

Skenario pemulihan Di bawah model pemulihan sederhana Di bawah model pemulihan penuh/dicatat massal
Menyelesaikan pemulihan database Strategi pemulihan dasar. Pemulihan database lengkap mungkin hanya melibatkan pemulihan dan pemulihan cadangan database lengkap. Atau, pemulihan database lengkap mungkin melibatkan pemulihan cadangan database lengkap diikuti dengan memulihkan dan memulihkan cadangan diferensial.

Untuk informasi selengkapnya, lihat Menyelesaikan Pemulihan Database (Model Pemulihan Sederhana).
Strategi pemulihan dasar. Pemulihan database lengkap melibatkan pemulihan cadangan database lengkap dan, secara opsional, cadangan diferensial (jika ada), diikuti dengan memulihkan semua cadangan log berikutnya (secara berurutan). Pemulihan lengkap database selesai dengan memulihkan cadangan log terakhir dan juga memulihkannya (RESTORE WITH RECOVERY).
Untuk informasi selengkapnya, lihat Pemulihan Database Lengkap (Model Pemulihan Penuh)
Pemulihan file 1 Pulihkan satu atau beberapa file baca-saja yang rusak, tanpa memulihkan seluruh database. Pemulihan file hanya tersedia jika database memiliki setidaknya satu grup file baca-saja. Memulihkan satu atau beberapa file, tanpa memulihkan seluruh database. Pemulihan file dapat dilakukan saat database offline atau, untuk beberapa edisi SQL Server, sementara database tetap online. Selama pemulihan file, grup file yang berisi file yang sedang dipulihkan selalu offline.
Pemulihan halaman Tidak berlaku Memulihkan satu atau beberapa halaman yang rusak. Pemulihan halaman dapat dilakukan saat database offline atau, untuk beberapa edisi SQL Server, sementara database tetap online. Selama pemulihan halaman, halaman yang sedang dipulihkan selalu offline.

Rantai cadangan log yang tidak terputus harus tersedia, hingga file log saat ini, dan semuanya harus diterapkan untuk memperbarui halaman basis data dengan file log saat ini.
Untuk informasi selengkapnya, lihat Memulihkan Halaman (SQL Server).
Pemulihan sepotong 1 Pulihkan database bertahap di tingkat grup file, dimulai dengan grup file utama dan semua grup file sekunder baca/tulis. Pulihkan dan pulihkan database secara bertahap di tingkat grup file, dimulai dengan grup file utama.

Untuk informasi selengkapnya, lihat Pemulihan Piecemeal (SQL Server)

1 Pemulihan online hanya didukung di edisi Enterprise.

Langkah-langkah untuk memulihkan database

Untuk melakukan pemulihan file, Mesin Database menjalankan dua langkah:

  • Membuat file database apa pun yang hilang.

  • Menyalin data dari perangkat cadangan ke file database.

Untuk melakukan pemulihan database, Mesin Database menjalankan tiga langkah:

  • Membuat database dan file log transaksi jika belum ada.

  • Menyalin semua halaman data, log, dan indeks dari media cadangan database ke file database.

  • Menerapkan log transaksi, dalam apa yang dikenal sebagai proses pemulihan.

Terlepas dari bagaimana data dipulihkan, sebelum database dapat dipulihkan, Mesin Database SQL Server menjamin bahwa seluruh database konsisten secara logis. Misalnya, jika Anda mengembalikan file, Anda tidak dapat membawanya kembali secara daring sampai bergerak maju cukup untuk konsisten dengan database.

Keuntungan dari pemulihan file atau halaman

Memulihkan dan memulihkan file atau halaman, alih-alih seluruh database, memberikan keuntungan berikut:

  • Memulihkan lebih sedikit data mengurangi waktu yang diperlukan untuk menyalin dan memulihkannya.

  • Pada SQL Server memulihkan file atau halaman mungkin memungkinkan data lain dalam database tetap online selama operasi pemulihan.

Pemulihan dan log transaksi

Untuk sebagian besar skenario pemulihan, perlu untuk menerapkan pencadangan log transaksi dan memungkinkan Mesin Database SQL Server menjalankan proses pemulihan agar database dibawa secara online. Pemulihan adalah proses yang digunakan oleh SQL Server untuk setiap database agar dimulai dalam kondisi konsisten secara transaksional - atau bersih - .

Jika ada failover atau pemadaman yang tidak bersih lainnya, database mungkin dibiarkan dalam keadaan di mana beberapa modifikasi tidak pernah ditulis dari buffer cache ke berkas data, dan mungkin ada beberapa modifikasi dari transaksi yang tidak lengkap dalam berkas data. Ketika instans SQL Server dimulai, SQL Server menjalankan pemulihan setiap database, yang terdiri dari tiga fase, berdasarkan titik pemeriksaan database terakhir:

  • Fase 1 adalah Fase Analisis yang menganalisis log transaksi untuk menentukan titik pemeriksaan terakhir, serta membuat Tabel Halaman Kotor (DPT) dan Tabel Transaksi Aktif (ATT). DPT berisi catatan halaman yang kotor pada saat database dimatikan. ATT berisi rekaman transaksi yang aktif pada saat database tidak dihentikan dengan benar.

  • Fase 2 adalah Fase Pengulangan yang mengulangi setiap modifikasi yang direkam dalam log yang mungkin belum ditulis ke dalam file data pada saat database dihentikan. Nomor urutan log minimum (minLSN) yang diperlukan untuk melakukan pemulihan di seluruh database, ditemukan di DPT dan menandai dimulainya operasi redo yang diperlukan pada semua halaman yang belum disimpan. Pada fase ini, Mesin Database SQL Server menulis ke disk semua halaman kotor milik transaksi yang dilakukan.

  • Fase 3 adalah Fase Pembatalan yang membatalkan transaksi tidak lengkap yang ditemukan di ATT untuk mempertahankan integritas database. Setelah pemulihan, database online, dan tidak ada lagi cadangan log transaksi yang dapat diterapkan ke database.

Informasi tentang kemajuan setiap tahap pemulihan database dicatat di log kesalahan SQL Server. Kemajuan pemulihan database juga dapat dilacak menggunakan Extended Events. Untuk informasi selengkapnya, lihat posting blog Peristiwa baru yang diperluas untuk kemajuan pemulihan database.

Note

Untuk skenario pemulihan Piecemeal, jika grup file baca-saja sudah bersifat baca-saja sejak sebelum cadangan file dibuat, maka penerapan cadangan log ke grup file tersebut tidak diperlukan dan akan dilewati oleh pemulihan file.

Note

Untuk memaksimalkan ketersediaan database di lingkungan perusahaan setelah layanan SQL Server dimulai, seperti setelah terjadi failover pada instans kluster failover Always On atau restart di tempat, SQL Server Enterprise Edition dapat membuat database tersedia secara online setelah Fase Redo, sementara Fase Undo masih berjalan. Ini dikenal sebagai Pemulihan Cepat. Namun, Pemulihan Cepat tidak tersedia ketika database beralih ke status online tetapi layanan SQL Server belum dimulai ulang. Misalnya, menjalankan ALTER DATABASE AdventureWorks SET ONLINE; tidak akan memungkinkan database berada dalam status baca-tulis sampai ketiga fase pemulihan selesai.

Model pemulihan dan operasi pemulihan yang didukung

Operasi pemulihan yang tersedia untuk database bergantung pada model pemulihannya. Tabel berikut ini meringkas apakah dan sejauh mana setiap model pemulihan mendukung skenario pemulihan tertentu.

Operasi pemulihan Model pemulihan penuh Model pemulihan yang dicatat secara massal Model pemulihan sederhana
Pemulihan data Pemulihan lengkap (jika log tersedia). Beberapa risiko kehilangan data. Semua data sejak pencadangan penuh atau diferensial terakhir akan hilang.
Pemulihan pada titik waktu tertentu Setiap waktu yang dicakup oleh cadangan log. Tidak diizinkan jika cadangan log berisi perubahan yang dicatat secara massal. Tidak didukung.
Pemulihan file 1 Dukungan penuh. Sometimes. 2 Hanya tersedia untuk file sekunder baca-saja.
Pemulihan halaman 1 Dukungan penuh. Sometimes. 2 None.
Pemulihan piecemeal (tingkat grup file) 1 Dukungan penuh. Sometimes. 2 Hanya tersedia untuk file sekunder baca-saja.

1 Hanya tersedia di SQL Server edisi Perusahaan

2 Untuk kondisi yang diperlukan, lihat Pemulihan Pembatasan di bawah Model Pemulihan Sederhana, selanjutnya dalam artikel ini.

Important

Terlepas dari model pemulihan database, cadangan SQL Server tidak dapat dipulihkan ke versi Mesin Database SQL Server yang lebih lama dari versi yang membuat cadangan.

Pulihkan skenario di bawah model pemulihan sederhana

Model pemulihan sederhana memberlakukan pembatasan berikut pada operasi pemulihan:

Jika salah satu pembatasan ini tidak sesuai untuk kebutuhan pemulihan Anda, kami sarankan Anda mempertimbangkan untuk menggunakan model pemulihan penuh. Untuk informasi selengkapnya, lihat gambaran umum Backup (SQL Server).

Important

Terlepas dari model pemulihan database, cadangan SQL Server tidak dapat dipulihkan oleh versi SQL Server yang lebih lama dari versi yang membuat cadangan.

Pulihkan di bawah model pemulihan yang dicatat secara massal

Bagian ini membahas pertimbangan restore yang unik untuk model pemulihan pengelogan massal, yang dimaksudkan secara eksklusif sebagai suplemen untuk model pemulihan penuh.

Note

Untuk pengenalan model pemulihan yang dicatat secara massal, lihat Log transaksi.

Umumnya, model pemulihan yang dicatat secara massal mirip dengan model pemulihan penuh, dan informasi yang dijelaskan untuk model pemulihan penuh juga berlaku untuk keduanya. Namun, pemulihan point-in-time dan pemulihan online dipengaruhi oleh model pemulihan yang dicatat secara massal.

Pembatasan untuk pemulihan pada titik waktu tertentu

Jika cadangan log yang diambil di bawah model pemulihan yang dicatat secara massal berisi perubahan yang dicatat secara massal, pemulihan point-in-time tidak diizinkan. Mencoba melakukan pemulihan point-in-time pada cadangan log yang berisi perubahan massal, menyebabkan operasi pemulihan gagal.

Pembatasan untuk pemulihan online

Urutan pemulihan online hanya berfungsi jika kondisi berikut terpenuhi:

  • Semua cadangan log yang diperlukan harus diambil sebelum urutan pemulihan dimulai.

  • Perubahan massal harus didukung sebelum memulai urutan pemulihan online.

  • Jika ada perubahan massal dalam database, semua file harus online atau tidak berfungsi (artinya, bukan lagi bagian dari database).

Jika kondisi ini tidak terpenuhi, urutan pemulihan online gagal.

Note

Sebaiknya beralih ke model pemulihan penuh sebelum memulai pemulihan online. Untuk informasi selengkapnya, lihat Model pemulihan (SQL Server).

Untuk informasi tentang cara melakukan pemulihan online, lihat Pemulihan Online (SQL Server).

Database Recovery Advisor (SQL Server Management Studio)

Database Recovery Advisor memfasilitasi pembuatan rencana pemulihan yang menerapkan urutan pemulihan yang benar yang optimal. Banyak masalah pemulihan database yang diketahui dan penyempurnaan yang diminta oleh pelanggan telah diatasi. Peningkatan utama yang diperkenalkan oleh Database Recovery Advisor meliputi:

  • Algoritma rencana pemulihan: Algoritma yang digunakan untuk membuat rencana pemulihan telah meningkat secara signifikan, terutama untuk skenario pemulihan yang kompleks. Banyak kasus tepi, termasuk skenario forking dalam pemulihan titik waktu, ditangani lebih efisien daripada di versi SQL Server sebelumnya.

  • Pemulihan pada titik waktu tertentu: Database Recovery Advisor sangat menyederhanakan proses pemulihan database ke titik waktu yang spesifik. Garis waktu pencadangan visual secara signifikan meningkatkan dukungan untuk pemulihan pada titik tertentu dalam waktu. Garis waktu visual ini memungkinkan Anda mengidentifikasi titik waktu yang layak sebagai titik pemulihan target untuk memulihkan database. Garis waktu memudahkan pelintasan jalur pemulihan bercabang (jalur yang melintasi percabangan pemulihan). Rencana pemulihan pada titik waktu tertentu secara otomatis mencakup backup yang relevan untuk proses pemulihan pada titik waktu target Anda (tanggal dan waktu). Untuk informasi selengkapnya, lihat Memulihkan Database SQL Server ke Titik Waktu (Model Pemulihan Penuh).

Untuk informasi selengkapnya, lihat tentang Database Recovery Advisor, lihat blog Pengelolaan SQL Server berikut ini:

Pemulihan database yang dipercepat

Pemulihan basis data yang dipercepat (ADR) tersedia mulai dari SQL Server 2019 (15.x). ADR juga tersedia di Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics (khusus kumpulan SQL khusus), dan database SQL di Microsoft Fabric. Pemulihan database yang dipercepat sangat meningkatkan ketersediaan database, terutama di hadapan transaksi yang berjalan lama, dengan mendesain ulang proses pemulihan Mesin Database SQL Server. Database yang diaktifkan dengan ADR menyelesaikan proses pemulihan sistem secara signifikan lebih cepat setelah terjadi failover atau pematian tak terduga lainnya. Saat ADR diaktifkan, pengembalian transaksi jangka panjang yang dibatalkan selesai secara instan.

Anda dapat mengaktifkan ADR per database di SQL Server 2019 (15.x) dan versi yang lebih baru menggunakan sintaks berikut:

ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON;

Note

ADR selalu diaktifkan di Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics (khusus kumpulan SQL khusus), dan database SQL di Microsoft Fabric.