ÇSTech
Published in

ÇSTech

Çiçeksepeti | AWS’den GCP’ye Geçiş : Microsoft SQL Server

Bu yazıda Çiçeksepeti’nde kullanılan veri tabanı sistemlerinden biri olan Microsoft SQL Server’ı, asgari kesinti süresiyle AWS’den GCP’ye nasıl taşıdığımızı anlatacağım.

Görsel Kaynağı: AWS, GCP, Bulut, Veri tabanı

Kullanılan sistemin yapısı ve geçiş sürecindeki gereksinimler

Taşımamız gereken sistem iki makinenin yer aldığı bir failover cluster yapısından oluşmaktaydı. Bu yapı high availability sağlamanın yanı sıra her bir makinede birbirinden bağımsız farklı veri tabanları da yer alıyordu.

Görsel Kaynağı: sqlshack.com

Node-1 makinesinden node-2 makinesine ve node-2 makinesinden node-1 makinesine always on ile sürekli aktarım olan ve canlı sistemlerin kullandığı bu yapıyı ya kesinti olmadan ya da asgari kesinti süresiyle bulut geçişini yapmamız gerekiyordu.

Görsel Kaynağı: illustoon.com

Normal şartlar altında sıfır kesinti ile aktarım yapabilmek için mevcuttaki availability groupa yeni makineleri ekleyip veri senkronizasyonu sağlandıktan sonra birincil makineyi değiştirmek yeterli olacaktır.

Fakat yeni kuracağımız yapıyı GCP’nin önerdiği ekteki dokümandan faydalanarak sıfırdan kurgulamak istediğimiz için mevcuttaki failover cluster yapısını kullanmadık ve taşıma işlemini log shipping ile yapmaya karar verdik.

Taşıma işlemi için sırasıyla yaptığımız işlemler

1- İlk olarak taşıyacağımız makinelerin işletim sürümüyle aynı olacak şekilde iki farklı sanal makine oluşturduk ve sistem güncellemelerini yaptık. Daha sonra bu makinelere gerekli diskleri bağlayarak ilgili klasörleri açtık. Mevcuttaki SQL Server sürümünü kurup kümülatif güncellemesini yaptıktan sonra ekteki dokümandan faydalanarak yeni failover cluster yapısını kurduk. Artık makineler veri aktarımı için hazır hale gelmişti.

2- Node1 makinesinde aldığımız son full backupı yeni kurduğumuz node1 makinesinde restore ettik.

SQL Server üzerinde kullanmış olduğumuz CDC yapısını GCP üzerinde sıfırdan kurgulamak istediğimiz için restore işlemi sırasında KEEP_CDC parametresini kullanmadık.

Aldığımız log backupları yeni makineye aktarabilmek ve log shippingi çalıştırabilmek için iki makine arasında share disk oluşturduk. Gerekli jobları kurduktan sonra yeni makinede düzenli olarak log backuplar restore ediliyor ve yeni makine güncel tutuluyordu. Aynı işlemleri node2 makinesindeki veri tabanları içinde gerçekleştirdik.

Görsel Kaynağı: microsoft.com

3. Veri aktarmayı başlattıktan sonra loginleri, jobları, linked serverı, master altındaki objeleri, operatörleri, mail server ayarlarını da yeni yere taşıyarak gerekli düzenlemeleri yaptık.

Artık geçiş için çoğu şey hazır hale gelmişti.

4. Trafiği yeni makineye alacağımız sırada eski makineye gelen istekleri kestik ve son log backupları yeni makinede restore ettik.

5. Artık eski makine ve yeni makine birebir eşitlenmiş durumdaydı. Eski makinede CDC’yi kapatarak geçişe tamamen hazır hale geldik.

6. DNS güncellemesi yaparak mevcut endpointlerin yeni makineye gelmesini sağladık. Trafik yeni makineye geldikten sonra veri tabanlarını erişime açtık.

7. Artık istekler yeni makineye gelmeye başlamıştı. Trafiğin sorunsuz bir şekilde geldiğinden emin olduktan sonra CDC’yi açarak tüm süreci canlıya aldık.

8. Node1 makinesinde bulunan veri tabanlarının node2 makinesine aktarabilmek için always on yapısını kurarak veri senkronizasyonunu başlattık. Kısa bir süre içerisinde yeni node2 makinesi de artık güncel hale gelmişti.

9. Geçiş sorunsuz bir şekilde tamamlanmıştı. Fakat herhangi bir felaket senaryosuna hazırlıklı olabilmek için daha önce kurduğumuz log shipping yapısını eski makineyi güncel tutacak şekilde düzenledik.

Birkaç gün boyunca trafiği ve projelerin davranışlarını gözlemleyerek sorun olmadığından emin olduktan sonra log shippingi kapatıp eski makineyi tamamen sildik.

Artık geçiş tam anlamıyla bitmiş ve her şey GCP üzerinde çalışmaya başlamıştı.

Teşekkür

Geçiş sürecini birlikte yürüttüğümüz bugrahanbol’a, gerekli altyapıya destek olan Çiçeksepeti Infra Ekibine ve bütün Çiçeksepeti Teknoloji ailesine süreçteki desteklerinden dolayı teşekkür ederim.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store