Bagikan melalui


Pemulihan Database Lengkap (Model Pemulihan Penuh)

Berlaku untuk: SQL Server

Dalam pemulihan database lengkap, tujuannya adalah memulihkan seluruh database. Seluruh database offline selama durasi pemulihan. Sebelum bagian mana pun dari database dapat online, semua data dipulihkan ke titik yang konsisten di mana semua bagian database berada pada titik waktu yang sama dan tidak ada transaksi yang tidak dilakukan.

Di bawah model pemulihan penuh, setelah memulihkan cadangan atau cadangan data, Anda harus memulihkan semua cadangan log transaksi berikutnya lalu memulihkan database. Anda dapat memulihkan database ke titik pemulihan tertentu dalam salah satu cadangan log ini. Titik pemulihan dapat berupa tanggal dan waktu tertentu, transaksi yang ditandai, atau nomor urutan log (LSN).

Saat memulihkan database, terutama di bawah model pemulihan penuh atau model pemulihan yang dicatat secara massal, Anda harus menggunakan urutan pemulihan tunggal. Urutan pemulihan terdiri dari satu atau beberapa operasi pemulihan yang memindahkan data melalui satu atau beberapa fase pemulihan.

Sumber yang tidak tepercaya

Kami menyarankan agar Anda tidak melampirkan atau memulihkan database dari sumber yang tidak diketahui atau tidak tepercaya. Database ini dapat berisi kode berbahaya yang mungkin menjalankan kode Transact-SQL yang tidak diinginkan atau menyebabkan kesalahan dengan memodifikasi skema atau struktur database fisik. Sebelum Anda menggunakan database dari sumber yang tidak diketahui atau tidak tepercaya, jalankan DBCC CHECKDB pada database di server non-produksi. Selain itu, periksa kode yang ditulis pengguna dalam database, seperti prosedur tersimpan atau kode lain yang ditentukan pengguna.

Pencadangan dari versi yang lebih lama

Untuk informasi tentang dukungan untuk pencadangan dari versi SQL Server sebelumnya, lihat bagian "Dukungan Kompatibilitas" dari RESTORE (Transact-SQL).

Memulihkan Database ke Titik Kegagalan

Biasanya, memulihkan database ke titik kegagalan melibatkan langkah-langkah dasar berikut:

  1. Cadangkan log transaksi aktif (dikenal sebagai ekor log). Ini membuat cadangan log ekor. Jika log transaksi aktif tidak tersedia, semua transaksi di bagian log tersebut akan hilang.

    Penting

    Di bawah model pemulihan yang dicatat secara massal, mencadangkan log apa pun yang berisi operasi yang dicatat secara massal memerlukan akses ke semua file data dalam database. Jika file data tidak dapat diakses, log transaksi tidak dapat dicadangkan. Dalam hal ini, Anda harus mengulangi semua perubahan yang dibuat secara manual sejak pencadangan log terbaru.

    Untuk informasi selengkapnya, lihat Tail-Log Backups (SQL Server).

  2. Pulihkan cadangan database lengkap terbaru tanpa memulihkan database (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY).

  3. Jika cadangan diferensial ada, pulihkan yang terbaru tanpa memulihkan database (PULIHKAN DATABASE database_name DARI differential_backup_device DENGAN NORECOVERY).

    Memulihkan cadangan diferensial terbaru mengurangi jumlah cadangan log yang harus dipulihkan.

  4. Dimulai dengan pencadangan log transaksi pertama yang dibuat setelah cadangan yang baru saja Anda pulihkan, pulihkan log secara berurutan dengan NORECOVERY.

  5. Pulihkan database (PULIHKAN DATABASE database_name DENGAN PEMULIHAN). Atau, langkah ini dapat dikombinasikan dengan memulihkan cadangan log terakhir.

Ilustrasi berikut menunjukkan urutan pemulihan ini. Setelah kegagalan terjadi (1), cadangan log ekor dibuat (2). Selanjutnya, database dipulihkan ke titik kegagalan. Ini melibatkan pemulihan cadangan database, cadangan diferensial berikutnya, dan setiap cadangan log yang diambil setelah cadangan diferensial, termasuk cadangan tail-log.

Menyelesaikan pemulihan database ke waktu kegagalan

Catatan

Saat Anda memulihkan cadangan database ke instans server yang berbeda, lihat Menyalin Database dengan Pencadangan dan Pemulihan.

Sintaks PEMULIHAN Transact-SQL Dasar

Sintaks RESTORETransact-SQL dasar untuk urutan pemulihan dalam ilustrasi sebelumnya adalah sebagai berikut:

  1. PULIHKAN database DATABASE DARI cadangan database lengkap DENGAN NORECOVERY;

  2. PULIHKAN database DATABASE DARI full_differential_backup DENGAN NORECOVERY;

  3. MEMULIHKAN database LOG DARI log_backup DENGAN NORECOVERY;

    Ulangi langkah log pemulihan ini untuk setiap cadangan log tambahan.

  4. PULIHKAN database DATABASE DENGAN PEMULIHAN;

Contoh: Memulihkan ke Titik Kegagalan (Transact-SQL)

Contoh Transact-SQL berikut menunjukkan opsi penting dalam urutan pemulihan yang memulihkan database ke titik kegagalan. Contoh membuat cadangan log ekor database. Selanjutnya, contoh memulihkan cadangan database lengkap dan cadangan log lalu memulihkan cadangan log ekor. Contoh memulihkan database dalam langkah akhir yang terpisah.

Catatan

Contoh ini menggunakan cadangan database dan cadangan log yang dibuat di bagian "Menggunakan Cadangan Database Di Bawah Model Pemulihan Penuh" di Pencadangan Database Penuh (SQL Server). Sebelum pencadangan database, AdventureWorks2022 database sampel diatur untuk menggunakan model pemulihan penuh.

USE master;  
--Create tail-log backup.  
BACKUP LOG AdventureWorks2022   
TO DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'    
   WITH NORECOVERY;   
GO  
--Restore the full database backup (from backup set 1).  
RESTORE DATABASE AdventureWorks2022   
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'   
  WITH FILE=1,   
    NORECOVERY;  
  
--Restore the regular log backup (from backup set 2).  
RESTORE LOG AdventureWorks2022   
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'   
  WITH FILE=2,   
    NORECOVERY;  
  
--Restore the tail-log backup (from backup set 3).  
RESTORE LOG AdventureWorks2022   
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'  
  WITH FILE=3,   
    NORECOVERY;  
GO  
--recover the database:  
RESTORE DATABASE AdventureWorks2022 WITH RECOVERY;  
GO  

Memulihkan Database ke Titik Dalam Cadangan Log

Di bawah model pemulihan penuh, pemulihan database lengkap biasanya dapat dipulihkan ke titik waktu, transaksi yang ditandai, atau LSN dalam cadangan log. Namun, di bawah model pemulihan yang dicatat secara massal, jika cadangan log berisi perubahan yang dicatat secara massal, pemulihan titik waktu tidak dimungkinkan.

Contoh Skenario Pemulihan Point-in-Time

Contoh berikut mengasumsikan sistem database misi-penting di mana cadangan database lengkap dibuat setiap tengah malam, cadangan database diferensial dibuat pada jam, Senin hingga Sabtu, dan cadangan log transaksi dibuat setiap 10 menit sepanjang hari. Untuk memulihkan database ke status berada di 5:19 A.M. Rabu, lakukan hal berikut:

  1. Pulihkan cadangan database lengkap yang dibuat Selasa tengah malam.

  2. Pulihkan cadangan database diferensial yang dibuat pada pukul 5:00 A.M. pada hari Rabu.

  3. Terapkan pencadangan log transaksi yang dibuat pada pukul 5:10 A.M. pada hari Rabu.

  4. Terapkan pencadangan log transaksi yang dibuat 5:20 A.M. pada hari Rabu, menentukan bahwa proses pemulihan hanya berlaku untuk transaksi yang terjadi sebelum pukul 5:19 A.M.

Atau, jika database perlu dipulihkan ke statusnya pada hari Kamis pukul 3:04 A.M. Kamis, tetapi cadangan database diferensial yang dibuat pada 3:00 A.M. Kamis tidak tersedia, lakukan hal berikut:

  1. Pulihkan cadangan database yang dibuat Rabu tengah malam.

  2. Pulihkan cadangan database diferensial yang dibuat pada pukul 02.00 WIB pada hari Kamis.

  3. Terapkan semua pencadangan log transaksi yang dibuat dari pukul 02:10 pagi hingga 3:00 A.M. pada hari Kamis.

  4. Terapkan pencadangan log transaksi yang dibuat pada pukul 3:10 A.M. pada hari Kamis, menghentikan proses pemulihan pada pukul 3:04 A.M.

Catatan

Untuk contoh pemulihan titik waktu, lihat Memulihkan Database SQL Server ke Titik Waktu (Model Pemulihan Penuh).

Tugas Terkait

Untuk memulihkan cadangan database lengkap

Untuk memulihkan cadangan database diferensial

Untuk memulihkan cadangan log transaksi

Untuk memulihkan cadangan dengan menggunakan SQL Server Management Objects (SMO)

Untuk memulihkan database ke titik dalam cadangan log

Lihat Juga

RESTORE (Transact-SQL)
BACKUP (Transact-SQL)
Menerapkan Pencadangan Log Transaksi (SQL Server)
sp_addumpdevice (T-SQL)
Pencadangan Database Lengkap (SQL Server)
Pencadangan Diferensial (SQL Server)
Gambaran Umum Pencadangan (SQL Server)
Gambaran Umum Pengembalian dan Pemulihan (SQL Server)