sql >> Base de Datos >  >> RDS >> Sqlserver

Mover bases de datos del sistema en el clúster de conmutación por error de SQL Server

Recientemente, me asignaron a un proyecto:nuestro cliente compró una SAN nueva y quería que reemplazáramos la anterior por una SAN nueva. Las bases de datos del usuario y del sistema utilizaron SAN, mientras tanto, el sistema operativo y SQL se instalaron en los discos locales del servidor. Suerte nosotros..!! La idea era mover las bases de datos de usuarios y sistemas existentes a una nueva SAN y mantener el tiempo de inactividad al mínimo posible. Entonces, para minimizar el tiempo de inactividad, en lugar de reinstalar OS y SQL, decidimos utilizar el siguiente enfoque.

  1. Conecte una nueva SAN a un servidor existente, cree nuevas unidades en él y agregue esas unidades a una instancia de clúster de conmutación por error existente.
  2. Detenga SQL Server, copie las bases de datos master, model y msdb en unidades nuevas e inicie los servicios de SQL.
  3. Mueva las bases de datos de usuarios a nuevas unidades y elimine la antigua SAN.

En mi artículo anterior, expliqué el proceso paso a paso para agregar nuevo almacenamiento a un clúster de conmutación por error existente. Además, demostré el proceso de mover bases de datos de usuarios a nuevas unidades.

En este artículo, voy a demostrar el proceso de mover las bases de datos del sistema a nuevas unidades que utilicé en mi proyecto. En mi artículo anterior, agregamos la unidad a un clúster de conmutación por error existente y en este artículo usaremos la misma unidad. La etiqueta de volumen de la unidad es "E:\ ”, así que creé un directorio llamado “SystemDatabases ” en E:\ manejar. Ver la siguiente imagen:

Actualmente, las bases de datos del sistema están en “F:\MSSQL14.MSSQLSERVER\MSSQL\DATA ” directorio. Queremos mover estas bases de datos a "E:\SystemDatabases ” directorio. A diferencia de las bases de datos de los usuarios, mover las bases de datos del sistema no es un proceso simple. Debemos seguir la secuencia y los pasos correctos; de lo contrario, la instancia de SQL no se iniciará.

Primero, revisemos la ubicación actual de las bases de datos del sistema. Ejecute la siguiente consulta para obtener la ubicación actual de la base de datos del sistema.

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

El siguiente es el resultado:

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

Ahora explicaré el proceso de mover bases de datos a otro directorio de la siguiente manera.

  1. Explicar los pasos para mover bases de datos modelo y msdb.
  2. Explicar los pasos para mover la base de datos tempdb.
  3. Explicar los pasos para mover la base de datos maestra.

Esta demostración le mostrará cómo mover todas las bases de datos del sistema a E:\ unidad, por lo tanto, para reducir el tiempo de inactividad, por lo que reiniciaré los servicios de SQL al final del proceso.

Pasos para mover las bases de datos msdb y model

Para mover las bases de datos modelo y msdb, primero, debemos actualizar las ubicaciones de los archivos en el catálogo del sistema ejecutando la consulta ALTER Database. Para hacer eso, ejecute la siguiente consulta en PowerShell o 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

La salida es la siguiente:

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.

Ahora ejecute la siguiente consulta para verificar que las rutas estén actualizadas en el catálogo del sistema. Para hacer eso, ejecute la siguiente consulta:

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

El siguiente es el resultado:

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

Pasos para mover la base de datos tempDB

Cuando reiniciamos el servidor SQL, volverá a crear automáticamente los archivos tempdb y de registro, por lo que no es necesario mover los archivos tempdb manualmente; todo lo que tenemos que hacer es modificar la ruta de los archivos de la base de datos. Para modificar la ruta de los archivos de la base de datos tempdb, ejecute la siguiente consulta en 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

La salida es la siguiente:

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.

Ahora ejecute la siguiente consulta para verificar que las rutas estén actualizadas en el catálogo del sistema:

SELECT DB_NAME(DATABASE_ID)AS [DATABASE NAME], 

       PHYSICAL_NAME AS [FILE LOCATION] 

 FROM SYS.MASTER_FILES 

 WHERE  DB_NAME(DATABASE_ID) = 'TEMPDB' 

 GO

El siguiente es el resultado:

DatabaseName Logical Name File Path

-------------- ------------------- --------------------------------------------

tempdb tempdev E:\SystemDatabases\tempdb.mdf 

tempdb templog E:\SystemDatabases\templog.ldf

Pasos para mover la base de datos maestra

El proceso de mover la base de datos maestra a otra unidad es diferente al de mover otras bases de datos del sistema. Para mover la base de datos del sistema, realizaremos los siguientes pasos:

  1. Abrir Administrador de configuración de SQL Server 2017 y expanda, haga clic en Servicios de SQL Server . Ver la siguiente imagen:
  2. Haga clic derecho en Servidor SQL (MSSQLSERVER) y haga clic en propiedades. En el cuadro de diálogo de propiedades, seleccione “Parámetros de inicio " pestaña. Ver la siguiente imagen:
  3. Como puede ver en la imagen anterior, en los parámetros existentes, el cuadro de texto contiene la ubicación predeterminada del archivo de datos, el archivo de registro y el registro de errores. Aquí -d  indica la ruta predeterminada del archivo de datos de la base de datos maestra  del mismo modo, -l  indica la ruta predeterminada del archivo de registro de la base de datos maestra. Debemos reemplazar estos parámetros con una nueva ubicación. Así que haga clic en el parámetro del archivo de datos y reemplácelo con “–  dE:\Systemdatabases\master.mdf ” valor y haga clic en Actualizar. Del mismo modo, haga clic en el parámetro del archivo de registro y reemplácelo con “-lE:\Systemdatabases\mastlog.ldf” valor y haga clic en actualizar. Ver la siguiente imagen:

4. Haga clic en Aceptar para cerrar el cuadro de diálogo.

Nota:

Como estamos realizando esta tarea en la instancia de conmutación por error de SQL Server, debemos realizar todos los cambios anteriores en los nodos secundarios (SQL02.Dc.Local)

Reiniciar los servicios de SQL Server.

Una vez que la nueva ruta de msdb, model y tempdb se actualiza en el catálogo de SQL Server, debemos detener los servicios para copiar los archivos de la base de datos en nuevas unidades. Para hacerlo, abra el administrador de configuración de SQL Server 2017>> Haga clic en Servicios>> Haga clic derecho en SQL Server (MSSQLSERVER) y haga clic en "Detener". Ver la siguiente imagen:

Ahora copie todos los archivos de la base de datos del sistema en la nueva unidad. Ver la siguiente imagen:

Ahora inicie el servicio desde el administrador de configuración de SQL Server. Si los servicios se iniciaron correctamente, la ruta del sistema y las bases de datos se actualizaron correctamente. Ejecute la siguiente consulta para revisar la ruta de la base de datos maestra:

SELECT DB_NAME(DATABASE_ID)AS [DATABASE NAME], 

       PHYSICAL_NAME AS [FILE LOCATION] 

 FROM SYS.MASTER_FILES 

 WHERE  DB_NAME(DATABASE_ID) = 'MASTER' 

 GO

El siguiente es el resultado:

DatabaseName Logical Name File Path

-------------- ------------------- --------------------------------------------

master master E:\SystemDatabases\master.mdf 

master mastlog E:\SystemDatabases\mastlog.ldf

Resumen

En este artículo, he explicado el proceso paso a paso para mover las bases de datos del sistema a un nuevo disco en clúster.