Definisi masalah
Pengguna kami membutuhkan kemampuan untuk meminta basis data yang sebagian besar mutakhir. Data dapat basi hingga 24 jam dan itu dapat diterima. Apa yang akan menjadi pendekatan biaya terendah untuk mendapatkan dan menjaga basis data kedua dengan salinan produksi? Apakah ada pendekatan yang tidak saya pikirkan?
Beban kerja
Kami memiliki aplikasi pihak ketiga yang kami gunakan untuk memantau aktivitas perdagangan saham. Pada siang hari, banyak perubahan kecil terjadi sebagai bagian dari berbagai aliran pekerjaan (ya, perdagangan ini valid. Tidak, ini mencurigakan, dll). Pada malam hari, kami melakukan operasi berbasis set yang besar (memuat perdagangan hari sebelumnya).
Solusi dan masalah saat ini
Kami menggunakan snapshot basis data . Pukul 10 malam kami turun dan membuat ulang snapshot. Pemrosesan ETL kemudian dimulai. Ini jelas membebani disk kami, tetapi memungkinkan pengguna kami kemampuan untuk query database tanpa mengunci database (mereka menggunakan ujung depan Access). Mereka menggunakannya larut malam dan dini hari sehingga mereka akan melihat waktu henti.
Masalah dengan pendekatan ini adalah dua kali lipat. Yang pertama adalah bahwa jika pemrosesan malam gagal, dan itu tidak terlalu jarang, kami bisa mengembalikan database yang mengakibatkan snapshot dijatuhkan. Masalah lainnya adalah waktu pemrosesan kami melewati SLA kami. Kami berusaha mengatasi ini dengan bekerja sama dengan vendor setelah mengidentifikasi pertanyaan yang ditulis dengan buruk dan kurangnya pengindeksan. Database snapshot juga merupakan penyebab pelambatan ini sebagaimana dibuktikan oleh perbedaan kecepatan ketika hadir versus tidak --- mengejutkan, saya tahu.
Pendekatan dipertimbangkan
Clustering
Kami memiliki pengelompokan basis data yang dihidupkan tetapi itu tidak menjawab kebutuhan membuat data tersedia dan hanya secara umum mempersulit kehidupan admin. Sejak itu dimatikan.
Replikasi SQL Server
Kami mulai melihat replikasi minggu lalu. Teori kami adalah bahwa kami dapat membuat katalog kedua berdiri dan disinkronkan dengan basis data produksi. Sebelum memulai ETL, kami akan memutuskan koneksi dan hanya mengaktifkannya kembali setelah proses ETL selesai.
Admin memulai dengan Replikasi Snapshot tetapi dia khawatir perlu beberapa hari penggunaan CPU yang tinggi untuk menghasilkan snapshot serta konsumsi disk yang diperlukan. Dia menunjukkan bahwa tampaknya untuk menulis semua data ke file fisik sebelum dikirim ke pelanggan sehingga basis data .6TB kami akan menelan biaya 1,8TB dalam biaya penyimpanan. Juga, jika perlu beberapa hari untuk menghasilkan snap, maka itu tidak akan cocok dengan SLA yang diinginkan.
Setelah membaca artikel yang bagus, sepertinya Snapshot mungkin merupakan cara untuk menginisialisasi pelanggan tetapi kemudian kami ingin beralih ke Replikasi Transaksional agar tetap sinkron setelah itu. Saya berasumsi bahwa menghidupkan / mematikan replikasi transaksional tidak akan memaksa reinisialisasi penuh? Kalau tidak, kita akan merusak jendela waktu kita
Mirroring Basis Data
Basis data kami berada dalam mode pemulihan LENGKAP sehingga mirroring basis data adalah pilihan, tetapi saya tahu lebih sedikit tentang hal itu daripada Replikasi. Saya memang menemukan jawaban SO yang mengindikasikan "Pencerminan basis data mencegah data diakses secara langsung, data pencerminan hanya dapat diakses melalui snapshot basis data."
Pengiriman Log
Kedengarannya seperti pengiriman log mungkin juga menjadi pilihan tetapi ini adalah hal lain yang tidak saya ketahui. Apakah ini akan menjadi solusi biaya yang lebih rendah (implementasi dan pemeliharaan) daripada yang lain? Berdasarkan komentar Remus, "Pengiriman log memungkinkan akses hanya baca ke salinan replika, tetapi akan memutuskan koneksi semua pengguna saat menerapkan log cadangan berikutnya yang diterima (mis. Setiap 15-30 menit)." Saya tidak yakin berapa lama waktu henti itu akan diterjemahkan sehingga dapat menyebabkan pengguna cemas.
Sinkronisasi MS
Saya hanya mendengar tentang menggunakan Sinkron pekan terakhir ini dan belum menyelidikinya. Aku benci untuk memperkenalkan teknologi baru untuk sesuatu dengan visibilitas tinggi seperti masalah ini, tetapi jika itu pendekatan terbaik, biarlah.
SSIS
Kami melakukan banyak SSIS di sini sehingga menghasilkan beberapa ratus paket SSIS untuk menjaga sinkronisasi sekunder adalah pilihan bagi kami, meskipun yang jelek . Saya bukan penggemar melakukan ini karena itu banyak overhead pemeliharaan Saya lebih suka tim saya tidak mengambil.
Snapshot "ajaib" SAN
Di masa lalu, saya pernah mendengar admin kami menggunakan beberapa teknologi SAN untuk membuat cadangan instan seluruh disk. Mungkin ada beberapa sihir EMC yang dapat digunakan untuk membuat salinan uberquick dari mdf / ldf dan kita kemudian dapat melepaskan / melampirkan database target.
Cadangkan dan pulihkan
Saya pikir kami mengambil backup penuh seminggu sekali, diferensial setiap malam dan tlog setiap 15 menit. Jika pengguna bisa hidup dengan pemadaman 3-4 jam untuk pengembalian penuh, saya kira ini mungkin pendekatan.
Kendala
Windows 2008 R2, SQL Server 2008 R2 (Edisi Perusahaan), VMWare v5 Edisi Enterprise, penyimpanan EMC SAN dengan drive yang dipetakan ke file vmdk, cadangan penanganan cadangan, dan .6TB data dalam katalog sumber. Ini adalah aplikasi pihak ketiga yang kami sediakan di rumah. Memodifikasi struktur mereka umumnya disukai. Para pengguna tidak dapat pergi tanpa menanyakan database dan menolak untuk dibatasi dengan secara proaktif mengidentifikasi tabel yang mereka monitor untuk melakukan pekerjaan mereka.
DBA kami adalah kontraktor murni saat ini. Full-timer telah berlayar dan kami belum menggantinya. Admin aplikasi tidak berpengalaman dalam masalah SQL Server dan kami memiliki tim admin Storage / VM yang dapat membantu / menghambat upaya ini. Tim pengembangan saat ini tidak terlibat tetapi dapat didaftar berdasarkan pendekatan. Jadi lebih mudah untuk mengimplementasikan dan memelihara solusi akan lebih disukai.
Saya, saya berada di sisi pengembangan rumah sakit sehingga saya hanya dapat mengusulkan pendekatan dan tidak harus berurusan dengan sisi administrasi hal-hal. Jadi tanpa waktu di pelana admin, saya ragu untuk mengatakan satu pendekatan akan lebih unggul dari yang lain --- semuanya tampak hebat menurut surat kabar. Saya sepenuhnya bersedia untuk menjalankan segala arah yang Anda sarankan karena seperti yang saya lihat, itu hanya akan membuat saya lebih berharga sebagai seorang profesional DB. Saya memiliki gerobak dorong tetapi tidak ada jubah holocaust yang tersedia .
Pertanyaan-pertanyaan Terkait
/programming/525637/what-are-the-scenarios-for-using-mirroring-log-shipping-replication-and-cluste
/programming/4303020/sync-databases-mirroring-replication-log-shipping
/programming/4303020/sync-databases-mirroring-replication-log-shipping
http://nilebride.wordpress.com/2011/07/24/log-shipping-vs-mirroring-vs-replication/
Suntingan
Untuk menjawab pertanyaan @ onpnt
Penerimaan latensi data
Pengguna saat ini melihat data yang tertinggal hingga 24 jam. Data hanya terkini pada 2200
Jumlah data berubah dalam menit, jam, dan hari tertentu. Tidak yakin bagaimana mengukurnya. Jam kerja, mungkin ratusan perubahan per jam. Pemrosesan setiap malam, jutaan baris per hari kerja
Konektivitas ke sekunder
Jaringan internal, host virtual terpisah dan penyimpanan khusus
Baca persyaratan pada instance sekunder
Grup Windows akan memiliki akses baca ke tabel sekunder, semua
Up-waktu dari instance sekunder
Tidak ada definisi yang kuat tentang persyaratan up-time. Pengguna ingin selalu tersedia tetapi apakah mereka bersedia membayar untuk itu, mungkin tidak begitu banyak. Secara realistis, saya katakan 23 jam sehari sudah cukup.
Perubahan skema yang ada dan semua objek
Modifikasi yang jarang, mungkin sekali per kuartal untuk objek tabel. Mungkin sebulan sekali untuk objek kode.
Keamanan
Tidak ada kebutuhan keamanan khusus. Izin produksi akan cocok dengan izin salinan. Meskipun ketika saya memikirkannya, kita bisa mencabut pengguna membaca akses ke prod dan hanya membolehkan mereka membaca salinannya ... Bukan keharusan.
Selat @darin
Mengembalikan ke snapshot bisa menjadi pilihan tapi saya pikir ada beberapa alasan mereka tidak mengejar itu. Saya akan periksa dengan admin
@cfradenburg
Asumsi saya adalah bahwa kami hanya akan menggunakan salah satu dari pendekatan ini tetapi itu adalah poin yang baik bahwa mengembalikan akan merusak teknologi sinkronisasi "lainnya". Mereka sedang menyelidiki melakukan menggunakan sihir snapshot EMC. Seperti yang dijelaskan admin, mereka akan mengambil snapshot pada 1900 dan memigrasikan gambar ke zona sekunder. Itu harus selesai pada 2200 dan kemudian mereka akan melakukan detach dan reattach dari database sekunder.
Bungkus
2012-10-29 Kami mengevaluasi sihir snapshot EMC dan beberapa opsi replikasi lainnya, tetapi DBA memutuskan bahwa mereka dapat menentukan Mirroring yang terbaik. Terpilih jawabannya karena mereka semua membantu dan memberi saya banyak pilihan serta "pekerjaan rumah" untuk diselidiki.