Cara terbaik untuk memigrasi basis data SQL Server besar dengan downtime rendah melalui jaringan

22

Definisi masalah

Server database kami perlu ditransfer ke pusat data lain. Ini berjalan pada Microsoft SQL Server 2012 Enterprise (64-bit) dan berisi dua database sekitar 2TB dan 1TB.

Memiliki sedikit atau tanpa downtime untuk ini akan ideal.

Beban kerja

Database tersebut digunakan untuk situs web .NET dan terus diperbarui.

Meskipun tidak tersedia selama akhir pekan akan diterima. DB yang saat ini digunakan akan tetap menjadi satu-satunya yang digunakan sampai beralih ke yang baru.

Peralihan itu idealnya dilakukan hanya dengan mengubah entri DNS untuk menunjuk ke server DB baru sambil memastikan DB tidak diperbarui.

Juga, waktu yang diambil oleh operasi ini tidak terlalu penting selama peralihan dari satu server ke server lainnya (downtime) tetap rendah.

Pendekatan dipertimbangkan

  • Cadangkan dan pulihkan

    Ini telah dilakukan di masa lalu tetapi melibatkan downtime yang tinggi walaupun itu dilakukan melalui jaringan internal, jadi lebih efisien daripada melalui Internet

  • Log pengiriman

    Sejauh yang saya mengerti, pendekatan ini akan meminimalkan downtime dengan mengkonfigurasi master / slave dan mentransfer salinan tepat master DB ke slave-nya hanya dibaca. Seperti disebutkan di atas, tidak ada akses ke budak akan diperlukan dan kami hanya perlu cara untuk memiliki replika master DB tanpa korupsi data.

    Tampaknya juga cukup efisien dalam hal pemanfaatan sumber daya dan tidak akan banyak berdampak pada kinerja master.

    Saya mungkin salah tentang pendekatan ini sehingga merasa bebas untuk memperbaiki saya.

  • Mirroring basis data

    Saya tidak terlalu menyadari pendekatan itu tetapi sepertinya opsi yang valid. Tidak perlu memiliki sinkronisasi waktu nyata dan kinerja master cukup penting sehingga asinkron akan menjadi cara untuk pergi jika pendekatan ini dipilih.

  • Pilihan lain?

    Server itu berjalan langsung pada perangkat keras logam jadi solusi tingkat yang lebih rendah sayangnya bukan pilihan. Mungkin ada cara yang lebih baik untuk menyelesaikan ini?

Kendala

Seperti yang dijelaskan, database-database itu cukup besar sehingga sulit dipelihara tetapi itu masalah lain.

Versi SQL Server akan sama (Microsoft SQL Server 2012 Enterprise 64-bit).

Ini harus ditransfer melalui jaringan antara dua pusat data sehingga kemungkinan besar melalui Internet. Sayangnya, pengiriman disk dari satu situs ke situs lainnya untuk sinkronisasi awal bukanlah pilihan. Memiliki semacam keamanan untuk transfer akan menjadi ideal tetapi kami akan melakukan yang terbaik dari situasi ini.

Itu seharusnya memberikan gambaran yang cukup baik tentang kebutuhan kita untuk tugas ini dan mudah-mudahan beberapa dari Anda harus menghadapi situasi itu sebelumnya.

Val F.
sumber

Jawaban:

20

Backup dan restore langsung jelas keluar. Saya juga tidak akan mempertimbangkan replikasi dalam bentuk apa pun.

Mirroring basis data relatif sederhana untuk diatur, tetapi membutuhkan konektivitas waktu-nyata antara dua server, pengaturan mitra dan titik akhir, dll. Grup Ketersediaan dapat menjadi pilihan, tetapi di atas semua komplikasi jaringan Anda juga harus memiliki kedua server sebagai anggota WSFC yang sama - yang berarti keduanya harus berada dalam domain yang sama. Ini bukan pengaturan khas (atau bahkan dapat dibuat untuk bekerja sementara) untuk pemindahan pusat data.

Pilihan saya akan untuk pengiriman log. Yang menyenangkan tentang ini adalah bahwa Anda dapat menggunakan cadangan dan membuat cadangan yang sudah Anda ambil (bukan?) Dan tidak harus harus memiliki konektivitas waktu-nyata antara dua basis data - mereka tidak perlu tahu tentang masing-masing lain, Anda tidak perlu mengatur titik akhir untuk mirroring, mitra, keamanan, dll. Anda hanya perlu cara untuk mendapatkan file dari server lama ke tempat di mana mereka dapat dipulihkan pada server baru. Anda dapat mengambil cadangan penuh jauh-jauh hari, membawanya ke server baru, memulihkannya, lalu menerapkan (mungkin berbeda dan) cadangan log tambahan dari titik itu hingga saat cut-over. Prosesnya sebenarnya cukup sederhana, dan ada banyak tutorial tentang pengiriman log yang tersedia secara online jika Anda menemukan kesulitan.

Jika aplikasi web bergerak dengan basis data, karena DNS dapat membutuhkan waktu cukup lama untuk menyebar, Anda mungkin ingin melakukan peralihan pada rangkaian koneksi aplikasi lama untuk membuatnya menunjuk pada IP dari server basis data baru setelah itu dapat ditulis , karena - bahkan setelah saklar, dan bahkan jika pengaturan TTL Anda ketat - klien dapat terus menekan server web lama. Itu semua tergantung pada seberapa besar rasa hormat yang diberikan penyedia mereka pada TTL Anda.

Aaron Bertrand
sumber
16

Saya baru-baru ini melakukan migrasi 15tb di 6 basis data menggunakan mirroring. Sangat sederhana dan bekerja dengan sempurna hanya dengan waktu failover beberapa detik.

Suntingan:

Saya punya dua Server SQL virtual baru. Basis data berasal dari 3 server yang baru saja mereka kehabisan, dan berdampak pada kinerja pada basis data yang lebih kecil yang di-host di dalamnya.

Prosesnya sangat sederhana.

  1. Tunggu hingga akhir pekan cadangan lengkap selesai
  2. Pulihkan tanpa pemulihan ke server baru
  3. Ketika itu selesai, jeda cadangan
  4. Jalankan satu pemulihan tambahan hingga cadangan log terbaru dari aslinya, tanpa pemulihan
  5. Mulai mirroring di keenamnya
  6. Lanjutkan cadangan

Saya memilih untuk membiarkan mereka dalam mode asinkron sampai kami siap untuk membuatnya gagal untuk mengurangi beban pada jaringan, dll. Mirroring memiliki beberapa reputasi untuk menyebabkan latensi selama pemeliharaan (indeks / statistik) dan aktivitas volume tinggi lainnya, tetapi saya tidak menemukan itu benar. Mereka harus dialihkan ke mode sinkron sebelum kegagalan manual.

Selama jendela pemeliharaan berikutnya, saya gagal secara manual pada setiap basis data, dan setelah beberapa pengujian asap, mematikan mirroring, dan akhirnya menghapus file data lama dari server asal. Satu kekhasan dalam proses ini adalah bahwa kegagalan basis data yang cermin di atas membuat primer utama dalam keadaan pulih, jadi kecuali Anda merasa nyaman hanya menjatuhkannya, Anda perlu membawanya kembali online dan kemudian melepaskannya, atau apa pun metode penghapusan yang Anda sukai adalah . Juga, saya tidak mengkonfigurasi saksi untuk semua ini karena saya tidak ingin failover otomatis. Ini adalah acara yang dikendalikan.

Tolong beri tahu saya jika Anda menginginkan spesifik lebih lanjut. Saya telah meninggalkan spesifikasi server dan jaringan tetapi dapat menyediakan jika Anda mau.

Terima kasih

Erik Darling
sumber