Perubahan skema SQL Server 2014 di lingkungan multi-pengguna 24/7


12

Kami memiliki SQL Server 2014 Enterprise diinstal untuk menjalankan database yang harus tersedia 24/7. Basis data kami cukup besar (200gb +). Kami juga memiliki banyak layanan yang mengenai basis data kami setiap menit untuk membaca, memperbarui atau memasukkan data baru. Kami ingin memberikan fitur penempatan kembali "panas" untuk klien kami dan menjadikan pembaruan harian kami (.net dan skema pembaruan) transparan kepada klien. Kami telah menemukan solusi berdasarkan pada cluster dengan load balancer untuk memperbarui binari aplikasi kami, tetapi kami masih memiliki beberapa kesalahpahaman tentang proses penyebaran basis data `update dan apa praktik terbaik untuk menyelesaikan masalah ini.

Untuk perubahan skema, turunkan satu server, terapkan perubahan skema, bawa kembali, dan kemudian terapkan perubahan yang sama ke instance kedua. Bisakah itu dilakukan dengan alat SQL Server, dan apakah ini pendekatan yang umum? Bagaimana sinkronisasi data setelah server dicadangkan? Atau apakah saya benar-benar berpikir ke arah yang salah dan apakah ada solusi yang lebih baik?

Perubahan Skema umum kami: menambah / menjatuhkan kolom, menambah / menghapus prosedur tersimpan


Apa tata letak SQL Anda saat ini? Berkerumun? Selalu Aktif? Dicerminkan? Satu contoh?
LowlyDBA

Saat ini kami memiliki satu instance, tetapi kami dapat mengubahnya sesuai dengan kebutuhan, menambah server baru dan sebagainya
Shmitov Michael

4
Anda harus mengikuti pendekatan biru-hijau, dengan cara ini Anda dapat memiliki sistem hidup (hijau) dan melakukan peningkatan pada pementasan (biru) dan kemudian beralih peran. Inilah yang kami implementasikan menggunakan AlwaysON dan berfungsi untuk kami - skenario yang hampir sama. Itu memang membutuhkan perencanaan, implementasi, dan pengujian yang tepat.
Kin Shah

Bisakah Anda memberi saya skenario yang lebih terperinci, misalnya untuk perubahan skema penghapusan kolom?
Shmitov Michael

Penjelasan dari komentar sebelumnya, saya mengganti node primer (S1) / sekunder (S2) dalam infrastruktur AlwaysOn, kemudian saya memutuskan untuk menghapus beberapa kolom dari skema pada Replika (S1, itu adalah primer sebelum beralih), tetapi saya masih bisa mendapatkan beberapa data replikasi dari S2 dengan kolom di tabel .... bagaimana saya bisa menangani masalah ini?
Shmitov Michael

Jawaban:


1

Di bawah ini akan memerlukan sedikit lebih banyak perencanaan dan pengujian.


Konsep Biru-Hijau:


Inti dari Konsep Biru-Hijau adalah untuk membagi produksi Anda menjadi 2 lingkungan dan mereka identik setiap saat (sinkronisasi data) di mana

  1. Biru (Saat Ini) akan memiliki versi skema / build atau produk saat ini dan akan menjadi lingkungan "LIVE" Anda.

  2. Pada saat yang sama Green akan menjadi lingkungan pementasan / pengujian di mana Anda akan memutakhirkan skema / bangunan atau produk Anda ke rilis NEXT, melakukan uji regresi penuh dan ditandatangani oleh pengguna bisnis Anda. Setelah bahagia, selama periode cut-over, Anda akan mempromosikan Green menjadi lingkungan "LIVE" Anda dan menurunkan Biru menjadi preprod / pementasan atau pengujian untuk rilis berikutnya.

Dengan cara ini, Anda memiliki waktu henti yang sangat sedikit dan risiko kegagalan penempatan pada sistem langsung (yang ada di jendela pemeliharaan, karena Anda melakukan peningkatan) akan sangat diminimalkan. Juga, mengikuti pendekatan Biru-Hijau, Anda akan berosilasi antara versi LIVE dan PREVIOUS yang akan menjadi pementasan untuk versi berikutnya.

Sekali lagi, ini akan membutuhkan lebih banyak perangkat keras / lisensi serta perencanaan dan pengujian.

Sebagian besar langkah dapat diotomatisasi menggunakan DACPAC dan PowerShell. Juga, jika Anda menginstal beberapa instance pada satu server, pastikan untuk menyeimbangkan kembali pengaturan Memori saat beralih antara Biru dan Hijau. Lingkungan LIVE mendapatkan lebih banyak memori daripada lingkungan Pasif.

Di lingkungan saya saat ini, kami telah menerapkan Model Biru / Hijau untuk Penerapan Kode Agile yang memungkinkan kami untuk mempromosikan kode setiap 2 minggu dengan jumlah waktu yang cukup untuk pengujian dan pengakhiran bisnis. Juga, mudah untuk mengembalikan jika terjadi kesalahan. Kami memiliki mayoritas penyebaran otomatis menggunakan Dacpac dan PowerShell.

masukkan deskripsi gambar di sini (Sumber gambar)

Lihat juga artikel Grant Fritchey tentang Pemecahan Masalah Rollback dan Pemulihan; Tantangan dan Strategi


0

Jika database Anda tidak direplikasi, maka, tambahkan dan lepas kolom akan berjalan sangat cepat. Karena menambahkan kolom hanyalah posisi kosong yang dibuat SQL. Drop kolom hanya akan menghapus referensi.

Kalau tidak, jika ada kendala atau indeks pada itu hati-hati.

ADD/DELETEprosedur hanya akan berpengaruh pada eksekusi itu sendiri. Rekomendasi adalah sebelum ada perubahan di dalamnya menjalankan kompilasi ulang

sp_recompile 'myproc'
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.