Share via


SQL Cluster da storage migrasyonu

Spesifik bir migrasyon senaryosunu yapiyor olacagiz. Iki node lu bir SQL clusterimiz var. Su an kullanilan strorage controllerimizi decommission ederek yeni controller a geçmek istiyoruz. Bunun ile beraber disklerimiz de degisecek.
Yani SQL i yeni disklere aktarmak istiyoruz.

Bu senaryoda akla gelen ilk soru hep eski ve yeni diskleri ayni anda iki nodeda da gösterebiliyor muyuz seklinde olur.
Yapilabiliyorsa, isimiz çok daha kolay olur. Ancak storage unit ler farkli ise, sürücü açisindan ikisini de ayni sunuculara baglamak sorunlara neden olabilir. IO request package (IRP) in içine storage controller için komutulari gömen modül DSM, device spesific modüldür. Farkli controller lar bagli olunca farkli sürücülerinde parallel çalismalari gerekebilir, ve burada uyumsuzluklar olusabilir. Ondan hangi DSM lerin parallel çalismalarinin desteklendigi konusunda üreticiye danismak en mantiklisi olur. Bir sunucuda birden fazla farkli üretimden controller kullanilmasi yaygin degildir ve ondan üreticiler bazi DSM lerin parallel çalismalarini desteklerler. Microsoft un generic msdsm.sys de de ortak sürücü olarak kullanilabilir, ancak yine üretici ile durumu teyit etmek gerekir. 
Ayni anda diskleri gösterebiliyorsak, verileri manuel kopyalayabiliriz. SQL sadece disk harfine bakar ve cluster da sadece dependency e. Yani yeni diske eski diskin harfini veririz, bu diski cluster a , sql in grubuna aliriz ve takiben o gruptaki dependencyleri yeni diske yönlendiririz. Bitti. 

Iki storage i ayni anda nodelara baglayamiyorsak. Ilk verileri nasil kopyalayacagimizi düsünmemiz gerekir. Sonra yeni diskleri yine yeni disk gibi ekleyip dependencyler ile yukaridaki sekilde islemi bitirebiliriz. Veya  yeni disklere eski disklerin disk signature larini (gpt diskde disk id guid) yazabiliriz; böylece dependecyleri degistirmeye gerek kalmaz. SQL içi harfa degistirmesi hala gerekir. Cluster signature ile diski tanir ve baska detaylara bakmaz. Ondan ya yeni disk ekleyip bunu SQL grubun içine gömebiliriz, veya cluster in bekledigi signature i eski diskinkini degistirdikten veya eski diski  kaldirdiktan sonra, yeni diske yazabiliriz.

En kolay ve dünyada en yaygin yöntem zaten yeni disklerin eski disklerin klonlari olmasi. Arka tarafta, storage tarafinda bu islemi gerçeklestirebilirsek, node lari eski storage dan yeni storage a yönlendiririz ve baska bir isleme ihtiyacimiz olmaz.Yukarida sürücülerden söz ettigimiz için: fakli storage lar ard arda baglanacaksa, eski sürücüler ilk kaldirilmalidirlar. Yani kutulari ayna anda sunuculara baglamakta bir sorun olmaz, ama bunlarin sürücüleri sorun yaratabilirler, ve kutu bagli olmasada bu sürücüler çalisir. 
Asagidaki senaryoda eski ve yeni diskleri ayni anda nodelara gösteriyoruz. Ve elbette ilk verilerimizi backuplamaliyiz.

Nodelara eski ve yeni diskleri gösterecegiz.
Resourcelari sadece bir node a atip digerini kapatacagiz.
Sadece disk resourcelari online edecegiz.
Verileri kopyalayacagiz.
Eski disklerin harflerini yeni diklere verecegiz.
Eski disklere olan dependencyleri yeni disklere yönlendirecegiz.
MSDTC yi silip yeni disk ile olusturacagiz.
Bütün resourcelari online edip diger node u boot edip bütün resource lari teker teker move edecegiz.
Herseyin düzgün çalistigindan emin olduktan sonra Quorum diskini degistirecegiz  ve son olarak eski diskleri cluster dan çikarip eski storage baglantisini kesecegiz.

1) Iki storage unit lerin iki node da dogru sekilde bagli olduklarin ve LUN larin sorunsuz iki node dan görüldüklerinden emin olunuz.

2) Yani LUN lari olusturunuz ve her iki node un disk managmentinda görebildiginizden emin olunuz. Yeni diskleri initialize, partition, format ve herhangi harf veriniz.

3) Failover cluster manager da yeni diskleri ekleyiniz. Sol tarafta storage seçiliyken, sag tarafta add disk e tiklayiniz:

clip_image001

Takiben ekranin ortasinda diskleri Available Storage altinda görebileceksiniz:

clip_image003

 

4) Eklediginiz diske sag tiklayiniz:

clip_image005

Burada bunu bütün sql gruplara eklenecek bütün diskler için yapmamiz gerekir. Wizard da istenilen SQL grubunu seçebiliriz. MSDTC kullaniliyorsa, onun yeni diskini simdilik Available Storage altinda birakiniz. MSDTC diskinde sadece DTC in logu olur, ondan eski MSDTC grubunu silip, yeni disk ile yeni bir MSDTC olusturmak daha hizli olur.

Bu asamada her SQL grubunuzda hem eski hem de yeni diskleri görebiliyorsunuz. 

5) SQL instance larin ve MSDTC in ayni node da olduklarini kontrol ediniz  ve diger node u kapatniz/shutdown t yapiniz.

6) SQL and SQLDtc application lari offline a çekin:

clip_image007

7) Sonra SQL grubu içerisinde sadece diskleri ve bütün diskleri online ediniz.

clip_image009

8) Simdi bu node da eski ve yeni olmak üzere bütün diskleri failover cluster manager da, disk management da ve windows explorer görebileceksiniz. Windows explorer da bütün disklerin içine girebildiginizden emin olunuz. Istisna:MSDTC diski Available Storage da kalsin.

9) Windows explorer deyken Alt tusuna tiklayiniz, yukarida menü gelecek ve burada Folder options a gidiniz.

clip_image011

Show hidden files and folders i seçiniz, hide extensions for known files types ve hide protected operating system files (recommended) lari uncheck ediniz. (Ikinci uncheck bir popup uyarisi verir):

clip_image013

10) Simdi verileri eski disklerden yeni disklere kopyalayiniz. Burasi asil veri migrasyonu ve istdiginiz bildigini sekilde yapabilirsiniz. Ben bugüne kadar hep en basitinden explorer da copy paste yaptim.  
Simdi eger çok diskimiz varsa asil tehlike, diskleri karistirmamiz. Ondan diskleri not almamiz gerekiyor.  Yani hangi harfden ve cluster disk numarali diskden  hangi harfe/diske ne kopyaladik. 

11) Simdi bütün diskler cluster da ve tuttuklari veriler esit. Simdi SQL disklerini harfden tanidigi için, eski disklerin harflerini herhangi bir harfe degistirip, yeni disklerin harflerini eskilerine degistiriyoruz. Ilk bütün eski disklerinkini degistiriniz ve sonra yenikilerinkileri degistiriniz. Bu asamada çok karisiklar olabiliyor, ondan bu sekilde ilerleyiniz. Disk management da:

clip_image015

clip_image017

clip_image019

12) Simdi SQL açisindan tamamiz. Geriye cluster kaliyor. Ilk önce eski disklerin asagidaki ayarini degistirmemiz gerekir. Yeni disklere geçtikten sonra hala eski diskleri geçici süre cluster da birakacagiz. Bu bir fall back fail safe olacak. Yani herhangi disk ile sorun olursa klonu ayni SQL grubunda hazir da olacak. Ancak simdi bu eski diskde bir sorun olur ve bu cluster da fail ederse, kullanilmamasina ragmen bütün bulundugu cluster grubu fail eder/failover eder. Asagidaki ayar ile bunu engellemis oluyoruz:

Eski disklere sag tiklayiniz, properties, ve ‘if restart is unsuccessful, failover all resources in this service or application:’ i uncheck ediniz.

clip_image021

 

13) Son olarak dependencyleri düzelteceiz. Grubun içindeki bütgn resource lara sag tiklayiniz ve özelliklerine gidiniz. Sonra dependencyleri kontrol ediniz. Ne zaman eski diske dependency varsa, bunu silip yeni diske yeni bir dependency veriniz.  Yani var olanlari eskiden yeni disklere yönlendiriniz.

clip_image023

 

14)   MSDTC yi siliniz:

Ilk isim ve IP leri not ediniz.  Ve sonra MSDTC yi siliniz:

clip_image027
Sonra eski diski Available Storage altina görebilecegiz.

15) Ve yeni bir MSDTC yaratiniz:

clip_image029

clip_image031

Burada yeni diski seçiniz.

16) MSDTC yi online ediniz. Sonra SQL I online ediniz:

clip_image033

Bütün resource lar online oldukdan sonra diger node u boot ediniz ve resource lari teker teker diger node a move ediniz. Her seferinde bir grubun online olmasini hep bekleyiniz.

clip_image035

 

17) Bütün testleri yaptiktan sonra son olarak sira Quorum a gelir. Iki node lu cluster da bir witness disk kullaniliyordur.  Quorum u eski diskden yenisine degistiriz:

Cluster ismine sag tiklayin:
image

Sonra modeli ayni birakin veyeni Quorum diske tiklayin. Bu kadar.

Bundan sonra eger herseyin düzgün çalistigindan eminseniz eski diskleri cluster dan çikarabiliriz:

clip_image037

Bu diskleri sonra Available Storage altinda görebileceksiniz.  Buradan da silebilirsiniz ve takiben eski storage dan LUN lari node lar için unpresent edebilirsiniz.

clip_image039

Basar Güner