Récemment, j'ai été affecté à un projet :notre client a acheté un nouveau SAN et il voulait que nous remplacions l'ancien par un nouveau SAN. Les bases de données utilisateur et système utilisaient le SAN, tandis que le système d'exploitation et SQL étaient installés sur les disques locaux du serveur. Nous sommes chanceux..!! L'idée était de déplacer les bases de données utilisateur et système existantes vers un nouveau SAN et de minimiser autant que possible les temps d'arrêt. Ainsi, pour minimiser les temps d'arrêt, au lieu de réinstaller le système d'exploitation et SQL, nous avons décidé d'utiliser l'approche suivante.
- Attachez un nouveau SAN à un serveur existant, créez-y de nouveaux disques et ajoutez ces disques à une instance de cluster de basculement existante.
- Arrêtez SQL Server, copiez les bases de données maître, modèle et msdb sur de nouveaux lecteurs et démarrez les services SQL.
- Déplacez les bases de données utilisateur vers de nouveaux lecteurs et supprimez l'ancien SAN.
Dans mon article précédent, j'ai expliqué le processus étape par étape d'ajout d'un nouveau stockage à un cluster de basculement existant. De plus, j'ai démontré le processus de déplacement des bases de données utilisateur vers de nouveaux lecteurs.
Dans cet article, je vais démontrer le processus de déplacement des bases de données système vers de nouveaux lecteurs que j'ai utilisés dans mon projet. Dans mon article précédent, nous avons ajouté le lecteur à un cluster de basculement existant et dans cet article, nous allons utiliser le même lecteur. L'étiquette de volume du lecteur est "E:\ », j'ai donc créé un répertoire nommé « SystemDatabases " dans E :\ conduire. Voir l'image suivante :
Actuellement, les bases de données système sont sur "F:\MSSQL14.MSSQLSERVER\MSSQL\DATA ” répertoire. Nous voulons déplacer ces bases de données vers "E:\SystemDatabases ” répertoire. Contrairement aux bases de données utilisateur, le déplacement des bases de données système n'est pas un processus simple. Nous devons suivre la séquence et les étapes correctes, sinon l'instance SQL ne démarrera pas.
Examinons d'abord l'emplacement actuel des bases de données système. Exécutez la requête suivante pour obtenir l'emplacement actuel de la base de données système.
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
Voici le résultat :
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
Je vais maintenant expliquer le processus de déplacement des bases de données vers un autre répertoire de la manière suivante.
- Expliquer les étapes de déplacement des bases de données msdb et model
- Expliquez les étapes de déplacement de la base de données tempdb.
- Expliquez les étapes de déplacement de la base de données principale.
Cette démo vous montrera comment déplacer toutes les bases de données système vers E:\ lecteur, donc pour réduire les temps d'arrêt, je redémarrerai donc les services SQL à la fin du processus.
Étapes pour déplacer les bases de données msdb et model
Pour déplacer les bases de données msdb et model, nous devons d'abord mettre à jour les emplacements des fichiers dans le catalogue système en exécutant la requête ALTER Database. Pour ce faire, exécutez la requête suivante dans PowerShell ou 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
Le résultat est le suivant :
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.
Exécutez maintenant la requête suivante pour vérifier que les chemins sont mis à jour dans le catalogue système. Pour cela, exécutez la requête suivante :
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
Voici le résultat :
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
Étapes pour déplacer la base de données tempDB
Lorsque nous redémarrons le serveur SQL - il recrée automatiquement les fichiers tempdb et journaux, nous n'avons donc pas besoin de déplacer les fichiers tempdb manuellement - tout ce que nous avons à faire est de modifier le chemin des fichiers de base de données. Pour modifier le chemin des fichiers de la base de données tempdb, exécutez la requête suivante dans 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
Le résultat est le suivant :
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.
Exécutez maintenant la requête suivante pour vérifier que les chemins sont mis à jour dans le catalogue système :
SELECT DB_NAME(DATABASE_ID)AS [DATABASE NAME], PHYSICAL_NAME AS [FILE LOCATION] FROM SYS.MASTER_FILES WHERE DB_NAME(DATABASE_ID) = 'TEMPDB' GO
Voici le résultat :
DatabaseName Logical Name File Path -------------- ------------------- -------------------------------------------- tempdb tempdev E:\SystemDatabases\tempdb.mdf tempdb templog E:\SystemDatabases\templog.ldf
Étapes pour déplacer la base de données principale
Le processus de déplacement de la base de données master vers un autre lecteur est différent du déplacement d'autres bases de données système. Pour déplacer la base de données système, nous allons effectuer les étapes suivantes :
- Ouvrir Gestionnaire de configuration SQL Server 2017 et développez cliquez sur SQL Server Services . Voir l'image suivante :
- Cliquez avec le bouton droit sur SQL Server (MSSQLSERVER) et cliquez sur propriétés. Dans la boîte de dialogue des propriétés, sélectionnez "Paramètres de démarrage onglet ". Voir l'image suivante :
- Comme vous pouvez le voir dans l'image ci-dessus, dans les paramètres existants, la zone de texte contient l'emplacement par défaut du fichier de données, du fichier journal et du journal des erreurs. Ici -d indique le chemin par défaut du fichier de données de la base de données master de même, -l indique le chemin par défaut du fichier journal de la base de données master. Nous devons remplacer ces paramètres par un nouvel emplacement. Cliquez donc sur le paramètre datafile et remplacez-le par "– dE:\Systemdatabases\master.mdf ” valeur et cliquez sur Mettre à jour. De même, cliquez sur le paramètre du fichier journal et remplacez-le par "-lE:\Systemdatabases\mastlog.ldf" valeur et cliquez sur mettre à jour. Voir l'image suivante :
4. Cliquez sur OK pour fermer la boîte de dialogue.
Remarque :
Comme nous effectuons cette tâche sur l'instance de basculement SQL Server, nous devons effectuer toutes les modifications ci-dessus sur les nœuds secondaires (SQL02.Dc.Local)
Redémarrez les services SQL Server.
Une fois que le nouveau chemin de msdb, model et tempdb est mis à jour dans le catalogue SQL Server, nous devons arrêter les services pour copier les fichiers de base de données sur de nouveaux lecteurs. Pour ce faire, ouvrez le gestionnaire de configuration SQL Server 2017>> Cliquez sur Services>> Faites un clic droit sur SQL Server (MSSQLSERVER) et cliquez sur "Arrêter". Voir l'image suivante :
Copiez maintenant tous les fichiers de la base de données système sur le nouveau lecteur. Voir l'image suivante :
Démarrez maintenant le service à partir du gestionnaire de configuration SQL Server. Si les services ont démarré avec succès, le chemin du système et les bases de données ont été mis à jour avec succès. Exécutez la requête suivante pour vérifier le chemin de la base de données maître :
SELECT DB_NAME(DATABASE_ID)AS [DATABASE NAME], PHYSICAL_NAME AS [FILE LOCATION] FROM SYS.MASTER_FILES WHERE DB_NAME(DATABASE_ID) = 'MASTER' GO
Voici le résultat :
DatabaseName Logical Name File Path -------------- ------------------- -------------------------------------------- master master E:\SystemDatabases\master.mdf master mastlog E:\SystemDatabases\mastlog.ldf
Résumé
Dans cet article, j'ai expliqué le processus étape par étape de déplacement des bases de données système vers un nouveau disque en cluster.