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