Baru-baru ini, saya ditugaskan ke sebuah proyek – pelanggan kami membeli SAN baru, dan mereka ingin kami mengganti yang lama dengan SAN baru. Basis data pengguna dan sistem menggunakan SAN, sedangkan sistem operasi dan SQL diinstal pada disk lokal server. Beruntung kita..!! Idenya adalah untuk memindahkan database pengguna dan sistem yang ada ke SAN baru dan menjaga waktu henti seminimal mungkin. Jadi, untuk meminimalkan waktu henti, alih-alih menginstal ulang OS dan SQL, kami memutuskan untuk menggunakan pendekatan berikut.
- Lampirkan SAN baru ke server yang ada, buat drive baru di dalamnya, dan tambahkan drive tersebut ke instance cluster failover yang ada.
- Hentikan SQL Server, salin master, model, dan database msdb di drive baru dan mulai layanan SQL.
- Pindahkan database Pengguna ke drive baru dan hapus SAN lama.
Dalam artikel saya sebelumnya, saya menjelaskan proses langkah demi langkah untuk menambahkan penyimpanan baru ke kluster failover yang ada. Selain itu, saya mendemonstrasikan proses pemindahan database pengguna ke drive baru.
Pada artikel ini, saya akan mendemonstrasikan proses pemindahan database sistem ke drive baru yang saya gunakan dalam proyek saya. Dalam artikel saya sebelumnya, kami menambahkan drive ke cluster failover yang ada dan dalam artikel ini kami akan menggunakan drive yang sama. Label volume drive adalah “E:\ ”, jadi saya membuat direktori bernama “SystemDatabases ” di E:\ menyetir. Lihat gambar berikut:
Saat ini, database sistem berada di “F:\MSSQL14.MSSQLSERVER\MSSQL\DATA " direktori. Kami ingin memindahkan database ini ke “E:\SystemDatabases " direktori. Tidak seperti database pengguna, memindahkan database sistem bukanlah proses yang sederhana. Kita harus mengikuti urutan dan langkah yang benar jika tidak, instance SQL tidak akan dimulai.
Pertama, mari kita tinjau lokasi database sistem saat ini. Jalankan kueri berikut untuk mendapatkan lokasi database sistem saat ini.
USE MASTER GO SELECT DB_NAME(DATABASE_ID) AS [DATABASE NAME], NAME AS [LOGICAL NAME], PHYSICAL_NAME AS [FILE PATH] FROM SYS.MASTER_FILES WHERE DATABASE_ID < 4
Berikut adalah outputnya:
DatabaseName Logical Name File Path -------------- ------------------- -------------------------------------------- master master F:\MSSQL14.MSSQLSERVER\MSSQL\DAT\master.mdf master mastlog F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\mastlog.ldf tempdb tempdev F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb.mdf tempdb templog F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\templog.ldf model modeldev F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\model.mdf model modellog F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\modellog.ldf msdb msdbdata F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\msdbdata.mdf msdb msdblog F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\msdblog.ldf
Sekarang saya akan menjelaskan proses pemindahan database ke direktori lain dengan cara sebagai berikut.
- Jelaskan langkah-langkah memindahkan database msdb dan model.
- Jelaskan langkah-langkah memindahkan database tempdb.
- Jelaskan langkah-langkah memindahkan master database.
Demo ini akan menunjukkan cara memindahkan semua database sistem ke E:\ drive, maka untuk mengurangi downtime, jadi saya akan me-restart layanan SQL di akhir proses.
Langkah-langkah untuk memindahkan database msdb dan model
Untuk memindahkan database msdb dan model, pertama, kita perlu memperbarui lokasi file di katalog sistem dengan menjalankan kueri ALTER Database. Untuk melakukannya, jalankan kueri berikut di PowerShell Atau SSMS.
USE MASTER; GO ALTER DATABASE MODEL MODIFY FILE (NAME = MODELDEV, FILENAME = 'E:\SYSTEMDATABASES\MODEL.MDF'); GO ALTER DATABASE MODEL MODIFY FILE (NAME = MODELLOG, FILENAME = 'E:\SYSTEMDATABASES\MODELLOG.LDF'); GO ALTER DATABASE MSDB MODIFY FILE (NAME = MSDBDATA, FILENAME = 'E:\SYSTEMDATABASES\MSDBDATA.MDF'); GO ALTER DATABASE MSDB MODIFY FILE (NAME = MSDBLOG, FILENAME = 'E:\SYSTEMDATABASES\MSDBLOG.LDF'); GO
Outputnya adalah sebagai berikut:
The file "MODELDEV" has been modified in the system catalog. The new path will be used the next time the database is started. The file "MODELLOG" has been modified in the system catalog. The new path will be used the next time the database is started. The file "MSDBDATA" has been modified in the system catalog. The new path will be used the next time the database is started. The file "MSDBLOG" has been modified in the system catalog. The new path will be used the next time the database is started.
Sekarang jalankan kueri berikut untuk memverifikasi jalur yang diperbarui dalam katalog sistem. Untuk melakukannya, jalankan kueri berikut:
SELECT DB_NAME(DATABASE_ID)AS [DATABASE NAME], PHYSICAL_NAME AS [FILE LOCATION] FROM SYS.MASTER_FILES WHERE DB_NAME(DATABASE_ID) IN ('MSDB', 'MODEL') GO
Berikut adalah outputnya:
DatabaseName Logical Name File Path -------------- ------------------- -------------------------------------------- model modeldev E:\SystemDatabases\model.mdf model modellog E:\SystemDatabases\modellog.ldf msdb msdbdata E:\SystemDatabases\msdbdata.mdf msdb msdblog E:\SystemDatabases\msdblog.ldf
Langkah-langkah untuk memindahkan database tempDB
Ketika kita me-restart SQL Server – itu akan secara otomatis membuat ulang file tempdb dan log sehingga kita tidak perlu memindahkan file tempdb secara manual – yang harus kita lakukan adalah mengubah jalur file database. Untuk mengubah jalur file database tempdb, jalankan kueri berikut di PowerShell / SSMS.
USE MASTER; GO ALTER DATABASE TEMPDB MODIFY FILE (NAME = TEMPDEV, FILENAME = 'E:\SYSTEMDATABASES\TEMPDB.MDF'); GO ALTER DATABASE TEMPDB MODIFY FILE (NAME = TEMPLOG, FILENAME = 'E:\SYSTEMDATABASES\TEMPLOG.LDF'); GO
Outputnya adalah sebagai berikut:
The file "tempdev" has been modified in the system catalog. The new path will be used the next time the database is started. The file "templog" has been modified in the system catalog. The new path will be used the next time the database is started.
Sekarang jalankan kueri berikut untuk memverifikasi jalur yang diperbarui dalam katalog sistem:
SELECT DB_NAME(DATABASE_ID)AS [DATABASE NAME], PHYSICAL_NAME AS [FILE LOCATION] FROM SYS.MASTER_FILES WHERE DB_NAME(DATABASE_ID) = 'TEMPDB' GO
Berikut adalah outputnya:
DatabaseName Logical Name File Path -------------- ------------------- -------------------------------------------- tempdb tempdev E:\SystemDatabases\tempdb.mdf tempdb templog E:\SystemDatabases\templog.ldf
Langkah-langkah untuk memindahkan database master
Proses memindahkan database master ke drive lain berbeda dengan memindahkan database sistem lainnya. Untuk memindahkan database sistem, kita akan melakukan langkah-langkah berikut:
- Buka Pengelola konfigurasi SQL Server 2017 dan perluas klik pada Layanan SQL Server . Lihat gambar berikut:
- Klik kanan pada SQL Server (MSSQLSERVER) dan klik pada properti. Di kotak dialog properti, pilih “Parameter Startup ” tab. Lihat gambar berikut:
- Seperti yang Anda lihat pada gambar di atas, pada parameter yang ada kotak teks berisi lokasi default file data, file Log, dan log kesalahan. Di sini -d menunjukkan jalur default file data database master sama halnya, -l menunjukkan jalur default file log dari database master. Kita harus mengganti parameter ini dengan lokasi baru. Jadi klik pada parameter datafile dan ganti dengan “– dE:\Systemdatabases\master.mdf ” dan klik Perbarui. Demikian pula, klik parameter file log dan ganti dengan “-lE:\Systemdatabases\mastlog.ldf” nilai dan klik perbarui. Lihat gambar berikut:
4. Klik OK untuk menutup kotak dialog.
Catatan:
Saat kita melakukan tugas ini pada contoh failover SQL Server, kita harus melakukan semua perubahan di atas pada node sekunder (SQL02.Dc.Local)
Mulai ulang layanan SQL Server.
Setelah jalur baru msdb, model, dan tempdb diperbarui dalam katalog SQL Server, kita harus menghentikan layanan untuk menyalin file database di drive baru. Untuk melakukannya, buka manajer konfigurasi SQL Server 2017>> Klik Layanan>> Klik kanan pada SQL Server (MSSQLSERVER) dan klik "Stop." Lihat gambar berikut:
Sekarang salin semua file database sistem pada drive baru. Lihat gambar berikut:
Sekarang mulai layanan dari manajer konfigurasi SQL Server. Jika layanan berhasil dimulai maka jalur sistem dan database telah berhasil diperbarui. Jalankan kueri berikut untuk meninjau jalur database master:
SELECT DB_NAME(DATABASE_ID)AS [DATABASE NAME], PHYSICAL_NAME AS [FILE LOCATION] FROM SYS.MASTER_FILES WHERE DB_NAME(DATABASE_ID) = 'MASTER' GO
Berikut adalah outputnya:
DatabaseName Logical Name File Path -------------- ------------------- -------------------------------------------- master master E:\SystemDatabases\master.mdf master mastlog E:\SystemDatabases\mastlog.ldf
Ringkasan
Dalam artikel ini, saya telah menjelaskan proses langkah demi langkah untuk memindahkan database sistem ke disk cluster baru.