Pertanyaan Backup / restore SQL Server vs. lepaskan / lampirkan


Saya memiliki satu database yang berisi data terbaru, dan saya ingin mereplikasi konten database ke beberapa server lain. Karena alasan non-teknis, saya tidak dapat secara langsung menggunakan fungsi replikasi atau fungsi sinkronisasi untuk menyinkronkan ke contoh SQL Server lainnya.

Sekarang, saya punya dua solusi, dan saya ingin mempelajari pro dan kontra untuk setiap solusi. Terima kasih!

Solusi 1: lepaskan database sumber yang berisi data terbaru, lalu salin ke server tujuan yang memerlukan data terbaru, dan lampirkan basis data di server tujuan;

Solusi 2: membuat cadangan lengkap dari server sumber untuk seluruh database, lalu salin data ke server tujuan dan ambil pemulihan penuh di sisi server tujuan.

Terima kasih sebelumnya, George


32
2018-03-04 11:02


asal


Jawaban:


Opsi Detach / Attach seringkali lebih cepat daripada melakukan backup karena tidak perlu membuat file baru. Oleh karena itu, waktu dari Server A ke Server B hampir sepenuhnya merupakan waktu penyalinan file.

Opsi Cadangkan / Pulihkan memungkinkan Anda melakukan pencadangan penuh, memulihkan itu, lalu melakukan pencadangan diferensial yang berarti waktu henti Anda dapat dikurangi di antara keduanya.

Jika ini adalah replikasi data yang Anda cari, apakah itu berarti Anda ingin fungsional basis data di kedua lokasi? Dalam hal ini, Anda mungkin ingin opsi backup / restore karena akan meninggalkan database saat ini berfungsi penuh.

EDIT: Hanya untuk memperjelas beberapa poin. Dengan downtime saya maksudkan bahwa jika Anda memigrasi database dari satu server ke server lain, Anda biasanya akan menghentikan orang yang menggunakannya ketika sedang dalam perjalanan. Oleh karena itu, dari titik "berhenti" di Server A hingga titik "awal" di Server B ini bisa dianggap downtime. Jika tidak, tindakan apa pun yang dilakukan pada database di server A selama transit tidak akan direplikasi ke server B.

Berkenaan dengan "membuat file baru". Jika Anda melepaskan database, Anda dapat segera menyalin file MDF. Sudah ada siap untuk disalin. Namun, jika Anda melakukan backup, Anda harus menunggu file .BAK yang akan dibuat dan kemudian memindahkannya ke lokasi baru untuk pemulihan. Sekali lagi ini semua turun ke ini adalah salinan snapshot atau migrasi.


24
2018-03-04 11:08



Pencadangan dan pemulihan jauh lebih masuk akal, bahkan jika Anda mungkin keluar beberapa menit tambahan dari opsi lepaskan lepaskan. Anda harus mengambil offline database asli (putuskan semua orang) sebelum melepaskan, dan kemudian db tidak tersedia sampai Anda memasang kembali. Anda juga harus melacak semua file, sedangkan dengan cadangan semua file dikelompokkan. Dan dengan versi terbaru dari SQL Server, cadangan dipadatkan.

Dan hanya untuk memperbaiki sesuatu: backup DB dan backup diferensial tidak memotong log, dan tidak merusak rantai log.

Selain itu, fungsi COPY_ONLY hanya penting untuk basis diferensial, bukan untuk LOG. Semua cadangan log dapat diterapkan secara berurutan dari pencadangan apa pun dengan asumsi tidak ada pemutusan dalam rantai log. Ada sedikit perbedaan dengan titik arsip, tetapi saya tidak bisa melihat mana yang penting.


8
2017-09-17 14:18



Solusi 2 akan menjadi pilihan saya ... Terutama karena tidak akan membuat downtime pada database sumber. Satu-satunya disadvatage yang dapat saya lihat adalah bahwa tergantung pada model pemulihan basis data, log transaksi akan terpotong artinya jika Anda ingin mengembalikan data dari log transaksi yang akan Anda masukkan, Anda harus menggunakan file cadangan Anda.

EDIT: Menemukan tautan yang bagus; http://sql-server-performance.com/Community/forums/p/5838/35573.aspx


4
2018-03-04 11:10