08 June 2012

Memindahkan File Data Microsoft SQL Server Yang Di Mirror

Kita tahu bahwa dalam database yang di mirror atau partner dalam proses mirroring database, kita tidak dapat menjadikan database tersebut offline atau melakukan detach untuk memindahkan file data Microsoft SQL Server (MSSQL) dari satu drive ke drive lain. Memindahkan file data atau file log dari database yang di mirror berbeda dengan memindahkan file pada database yang berdiri sendiri atau bukan bagian dari mirror. Disini akan di jabarkan langkah demi langkah melakukan hal tersebut. 

Memindahkan file database dapat dilakukan dengan dua cara; pertama melakukan detach pada database untuk kemudian memindahkan file database ke drive target kemudian lakukan attach dari file yang telah di salin. Kedua dengan cara menjalankan perintah ALTER untuk merubah lokasi file pada system catalog view, menjadikan database offline, kemudian menyalin file ke lokasi tujuan dan kemudian menjadikan database online kembali. Pada database yang di mirror, kedua cara tersebut akan menimbulkan error atau tidak dapat bekerja karena database menjadi bagian dari mirror atau database tersebut di mirror. Kita tidak dapat melakukan detach pada database yang di mirror ataupun menjadikannya offline.

Berikut adalah langkah-langkah untuk meminimalisir down time dan memindahkan file database dari lokasi saat ini ke lokasi yang baru untuk database yang di mirror.

Langkah 1
Periksa lokasi file database untuk semua file database. Sebagai contoh kita akan memindahkan file database "NASSP2". Jalankan perintah berikut

sp_helpdb NASSP2

Dari gambar diatas terlihat dua buah file database ditempatkan di drive C:\. Sebagaimana kita tahu, untuk performa terbaik sebaiknya kita tidak meletakan file data satu drive dengan sistem operasi oleh karena itu kita harus pindahkan.

Langkah 2
Periksa konfigurasi mirror database pada database yang akan kita pindahkan file-nya. Jalankan script berikut untuk memeriksa status mirroring database dan nama partnernya.


SELECT (SELECT DB_NAME(7)AS DBName),
database_id,
mirroring_state_desc,
mirroring_role_desc,
mirroring_partner_name,
mirroring_partner_instance
FROM sys.database_mirroring
WHERE database_id=7

Perhatikan pada kolom mirroring_role_description, dari kolom tersebut kita tahu bahwa database yang akan kita pindahkan berperan sebagai prinsipal dala mirroring database, sedangkan kolom mirroring_partner_instance merupakan nama instance yang menjadi partner atau mirror database dalam hal ini adalah LAB04. Jika gambarnya kurang jelas silahkan di klik pada gambar tersebut.

Lankah 3
Jika ukuran databasenya besar, maka kita akan memerlukan waktu lebih lama untuk menyalin file ke drive tujuan. Ini artinya, semakin besar file database maka akan semakin lama waktu downtime yang diperlukan selama proses penyalinan/pemindahan file. Untuk memeinimalisir waktu downtime, kita akan melakukan failover database kita dari prinsipal server ke mirror server dan mengarahkan aplikasi kita ke prinsipal server yang baru untuk menjaga aplikasi tetap online dan proses bisnis tetap berjalan. Jalankan perintah berikut untuk mengalihkan/failover database.

ALTER DATABASE NASSP2 SET PARTNER FAILOVER



Langkah 4
Kita periksa kembali konfigurasi mirroring database untuk melihat status mirroring saat ini. Jalankan kembali script sebagaimana pada langkah 2. Hasilnya akan sama dengan langkah 2 kecuali kolom mirroring_role_description, pada langkah 2 nilai mirroring_role_description adalah Prinsipal karena pada saat itu database berperan sebagai database prinsipal dalam mirroring database, setelah kita melakukan failover, saat ini database berperan sebagai Mirror.

Sekarang Instance Prinsipal telah berubah menjadi Mirror. Komunikasikan dengan programmer anda atau teknikal support supaya koneksi database pada aplikasi di arahkan ke server prinsipal yang baru. Namun biasanya aplikasi yang di desain untuk terhubung dengan server yang menerapkan mirroring, sudah disetting otomatis jika terjadi failover.

Langkah 5
Sebagaimana yang ktia lihat pada langkah 1, file database tersimpan di Drive C:. Sekarang kita akan memindahkan kedua file tersebut dari C ke Drive E, dalam contoh ini adalah ke folder 'E\MSSQL2008\DATA'. Pertama kita jalankan statemen ALTER DATABASE untuk merubah lokasi file di katalog System View pada database Master. Pastikan untuk menjalankan statemen ALTER ini pada setiap file yang akan kita pindahkan ke lokasi yang baru.

ALTER DATABASE NASSP2
MODIFY FILE (NAME='NASSP2_System_Data', FILENAME='E:\MSSQL2008\DATA\nassp2_system_data.mdf')
go
ALTER DATABASE NASSP2
MODIFY FILE (NAME='NASSP2_log', FILENAME='E:\MSSQL2008\DATA\nassp2_log.ldf')
go



Langkah 6
Sekarang, stop instance SQL Server untuk menyalin file data dan file log ke lokasi yang baru. Untuk melakukan ini bisa dilakukan melalui service SQL Server ataupun melalui powershel. Contoh disini menggunakan powershell.
STOP-SERVICE MSSQLSERVER –FORCE


Periksa status service SQL Server.
GET-SERVICE MSSQLSERVER



Langkah 7
Sekarang salin file data dari drive C ke drive tujuan. Dalam contoh ini 'E:\MSSQL2008\DATA'.

Langkah 8
Setelah kedua file selesai di salin, jalankan service sql server. Sekali lagi anda dapat menjalankan service ini melalui configuration tool atau melalui powershell, dalam contoh ini adalah melalui powershell.
START-SERVICE MSSQLSERVER


Periksa kembali staus service SQL Server, Pastikan service telah runing....
GET-SERVICE MSSQLSERVER



Langkah 9
Setelah SQL Server runing. Arahkan kembali principal server dari posisi saat ini ke server yang telah kita perbaiki. Lakukan Langkah 1 untuk memeriksa lokasi file dan jalankan langkah 2 untuk memeriksa status mirror.


Sumber : Terjemahan Bebas dari mssqltips.com