Servidor SQL
En esta sección se describen las tareas de compilación necesarias para crear el servidor SQL. Los clientes pueden optar por utilizar la oferta de paquete con una instalación preconfigurada o utilizar el proceso de compilación Bring Your Own License (BYOL) y Do It Yourself (DIY) después de haber solicitado una instancia de servidor virtual en la VPC. Los clientes deben determinar qué enfoque coincide con sus requisitos y proceder en consecuencia. La siguiente información explica cómo elegir un perfil de servidor para que se ajuste a sus necesidades.
Solicitar un servidor virtual
Se ha seleccionado un servidor virtual de la especificación siguiente para el host del servidor SQL en estos patrones de despliegue. Para ordenar, siga las instrucciones en Creación de instancias de servidor virtual utilizando la interfaz de usuario.
- Perfil: mx2d-4x32
- Tipo: Público
- SO: Windows 2019
- Cantidad de NIC: 1
- Almacenamiento de instancia: 150GB
- Volúmenes de datos:
- sqldb01-data: 1024 GB, Tiered-5IOPS/GB, Cifrado gestionado por proveedor
- sqldb01-log: 1024 GB, Tiered-5IOPS/GB, Cifrado gestionado por proveedor
Cálculo
Cuando suministre un servidor virtual de IBM Cloud para VPC, seleccione un Perfiles de instancia de una de las tres familias de perfiles: Equilibrado, Cálculo y Memoria.
- Equilibrado-Los perfiles equilibrados tienen una proporción de 4 GiB de memoria por cada 1 vCPU de cálculo.
- Cálculo-Los perfiles de cálculo tienen una proporción de 2 GiB de memoria por cada 1 vCPU de cálculo.
- Los perfiles de memoria-memoria son los mejores para cargas de trabajo de memoria intensiva, como las aplicaciones de base de datos, y tienen una proporción de 8 GiB de memoria por cada 1 vCPU de cálculo.
El proceso transaccional en línea (OLTP) normalmente implica insertar, actualizar y suprimir pequeñas cantidades de datos en una base de datos mediante un gran número de transacciones realizadas por un gran número de usuarios. Un mínimo recomendado para un entorno MS SQL OLTP de producción es 4 vCore con 32 GB de memoria de la familia de perfiles de memoria, mx2-4x32. Para requisitos mayores, el Perfil de memoria se amplía hasta el mx2-128x1024 que tiene 128vCPU, 1024 GiB RAM y un límite de ancho de banda de red de 80 Gbps.
Los entornos de almacén de datos de SQL Server a menudo requieren más memoria para los requisitos de vCPU que 8:1, por lo tanto, es posible que tenga que sobresuministrar en vCPU para satisfacer los requisitos de memoria.
La familia de perfiles de memoria incluye perfiles que se suministran con almacenamiento de instancias. El almacenamiento de instancia proporciona unidades de estado sólido conectadas directamente a la instancia de servidor virtual cuando se suministra la instancia. El disco de almacenamiento de instancia proporciona un almacenamiento temporal rápido para mejorar el rendimiento de muchas cargas de trabajo, incluido el proceso transaccional.
Almacenamiento
Al planificar SQL Server en IBM Cloud VPC, hay tres componentes de almacenamiento a tener en cuenta: volúmenes de arranque, volúmenes de datos y almacenamiento de instancias.
-
Volúmenes de arranque: cuando se crea el servidor virtual, se crea un volumen de arranque de 100 GB, 3 IOPS/GB a partir del almacenamiento en bloque y se conecta a la instancia. De forma predeterminada, el cifrado gestionado por IBMcifra los volúmenes de arranque, sin embargo, el cifrado gestionado por el cliente es una opción. Los volúmenes de arranque no se pueden desconectar, suprimir, aumentar o reducir en tamaño. Los volúmenes de arranque siempre se suprimen cuando se suprime el servidor virtual. Los volúmenes de arranque contienen los archivos del sistema operativo.
-
Volúmenes de datos-Los volúmenes de datos aprovechan el almacenamiento en bloque para VPC y proporcionan un almacenamiento de datos de alto rendimiento montado en hipervisor que se almacena de forma redundante en varios discos físicos en una zona de disponibilidad (AZ) para evitar la pérdida de datos debido a un error de cualquier componente individual. Los volúmenes de datos van de 10 GB a 2000 GB y el IOPS máximo varía en función del tamaño del volumen y del perfil de nivel de IOPS seleccionado. Por ejemplo, el IOPS máximo para un volumen de 5 IOPS/GB de 2000 GB es de 10.000 IOPS. Puede seleccionar un perfil de volumen que se ajuste mejor a sus requisitos, ya que los perfiles de volumen están disponibles como tres niveles de IOPS predefinidos o como un perfil de IOPS personalizado:
- 3 IOPS/GB-Un perfil de nivel de propósito general proporciona un rendimiento de IOPS/GB adecuado para un perfil equilibrado de instancia de servidor virtual.
- 5 IOPS/GB-Este perfil proporciona un rendimiento de IOPS/GB adecuado para un perfil de cálculo de instancia de servidor virtual.
- 10 IOPS/GB-Normalmente se utiliza para un perfil de memoria de instancia de servidor virtual.
Para obtener más información, consulte Niveles de IOPs. El número de volúmenes que se pueden conectar a un servidor virtual depende de cuántas vCPU contenga el servidor virtual. Para obtener más información, consulte Límites de conexión de volumen. Los volúmenes de datos se pueden desconectar y conectar a servidores virtuales según sea necesario. Los volúmenes de datos se cifran de forma predeterminada con el cifrado gestionado por IBM. También puede cifrar volúmenes de datos utilizando sus propias claves raíz. Consulte Capacidad de almacenamiento en bloque y rendimiento para obtener información sobre cómo elegir el tamaño óptimo del volumen de almacenamiento en bloque y el nivel de rendimiento.
-
Almacenamiento de instancia-Opcionalmente, el servidor virtual puede incluir Almacenamiento de instancia que proporciona unidades de estado sólido conectadas directamente a la instancia de servidor virtual cuando se suministra la instancia. El disco de almacenamiento de instancia proporciona un almacenamiento temporal rápido para mejorar el rendimiento de muchas cargas de trabajo, incluido el proceso transaccional. Los datos almacenados en el almacenamiento de la instancia son efímeros, lo que significa que está vinculado directamente al ciclo de vida de la instancia. El disco de almacenamiento de instancia se crea automáticamente y se destruye con la instancia. Pero los datos de almacenamiento de instancia no se pierden cuando se reinicia la instancia. Si el rendimiento es un problema, MS SQL Server tempdb se puede colocar en el almacenamiento de instancias
Para obtener más información, consulte Acerca de Block Storage for VPC.
En operaciones de mantenimiento poco comunes, puede ser necesaria una migración en directo del servidor virtual a un nuevo host. El servidor virtual experimentará una breve pausa de unos 10 segundos, y en algunos casos de hasta 30 segundos. La instancia de servidor virtual no se rearranca como parte de este proceso. Sin embargo, para los servidores virtuales con almacenamiento de instancia, se reiniciará el servidor. Consulte Visión general de las operaciones de mantenimiento de nube para obtener más información.
Conexión con el servidor
Consulte Conexión a instancias de Windows para acceder a la contraseña del administrador de Windows, sin embargo, en resumen, se utilizan los mandatos siguientes desde el portátil, donde el mandato instances devuelve el < INSTANCE_ID > del servidor virtual:
ibmcloud is instances
ibmcloud is instance-initialization-values <INSTANCE_ID> --private-key @~/.ssh/id_rsa
Unir el dominio
Esta tarea no se debe iniciar hasta que se haya instalado el servidor AD.
En un indicador de Powershell en el servidor SQL, especifique los mandatos siguientes que permiten que el servidor se una al dominio:
Get-DnsClientServerAddress
captura el índice de interfaz para la interfaz Ethernet IPv4 , para que el DNS se pueda cambiar del servidor DNS de IBM Cloud al servidor ADDNS. El mandatoAdd-Computer
fallará si se omite este paso, ya que el servidor no podrá localizar el controlador de dominio. ElAdd-Computer -Server
sólo acepta FQDN.- El mandato
Add-Computer
añade el servidor al dominio<domain>
utilizando el servidor ADDNS<ad_server_fqdn>
y, a continuación, reinicia el servidor para que el cambio entre en vigor.
$dns = "<ADDNS_IP_Address>"
$adserver = "<ad_server_fqdn>"
$domain = "<domain>"
$user = $domain + "\Administrator"
$password = "<password>"
$out=Get-DnsClientServerAddress -InterfaceAlias Ethernet -AddressFamily IPv4 | Select-Object -Property InterfaceIndex
Set-DnsClientServerAddress -InterfaceIndex $out.InterfaceIndex -ServerAddresses ($dns)
$password = ConvertTo-SecureString $password -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ($user, $password)
Add-Computer -DomainName $domain -Server $adserver -Restart -Credential $credential
Conectar con la compartición SMB de host bastión
Los siguientes mandatos de PowerShell se utilizan para realizar lo siguiente:
- Compruebe el estado de SMB2, normalmente este protocolo está inhabilitado en la imagen de servidor virtual. Si está inhabilitado, se puede habilitar utilizando
Set-SmbServerConfiguration
, ya que es necesario para que SMB funcione. - Conéctese a la unidad compartida en
<bastion_hostname>\Downloads
, como la unidad Z: utilizando el usuario<smbuser>
y la contraseña<share_password>
$bastion = "<bastion_hostname>"
$user = "<smbuser>"
$shareuser = $bastion + '\' + $user
$sharepassword = "<share_password>"
$path = '\\' + $bastion + '\' + 'Downloads'
Get-SmbServerConfiguration | Select EnableSMB2Protocol
Set-SmbServerConfiguration -EnableSMB2Protocol $true -Force
New-SmbMapping -LocalPath 'Z:' -RemotePath $path -UserName $shareuser -Password $sharepassword -Persistent $true
Configurar almacenamiento
Los patrones de despliegue de Microsoft SQL en VPC aprovechan los espacios de almacenamiento de Microsoft. Storage Spaces es una tecnología en Windows Server que es conceptualmente similar a RAID, y se implementa en el sistema operativo. Los espacios de almacenamiento se pueden utilizar para agrupar volúmenes de datos en una agrupación de almacenamiento y, a continuación, se utiliza la capacidad de la agrupación para crear espacios de almacenamiento (discos virtuales). Un espacio de almacenamiento aparece en el sistema operativo Windows como una unidad normal a partir de la cual puede crear volúmenes formateados.
Configurar espacios de almacenamiento
En la consola de IBM Cloud , capture la información de volúmenes de almacenamiento para el servidor SQL. Por ejemplo:
sqldb01-data: 0787-ff88b86a-1e29-4f0d-8a69-67b4deda3d5c-lpcn2
sqldb01-log: 0787-1d41b85e-4e8a-499e-b889-13b96db5251c-2w2n2
El siguiente mandato de PowerShell se utiliza para capturar la vista de SO Windows del SerialNumber para su uso en mandatos PowerShell subsiguientes; Get-StoragePool -IsPrimordial $true | Get-PhysicalDisk -CanPool $True
. Como
se puede ver en el ejemplo siguiente, se pueden capturar los números de serie:
Number FriendlyName SerialNumber MediaType CanPool OperationalStatus HealthStatus Usage Size
------ ------------ ------------ --------- ------- ----------------- ------------ ----- ----
1 QEMU QEMU HARDDISK cloud-init-0787_1c6e0975-a584-43ca-b Unspecified True OK Healthy Auto-Select 378 KB
5 Red Hat VirtIO cloud-init- Unspecified True OK Healthy Auto-Select 44 KB
3 Red Hat VirtIO 0787-ff88b86a-1e29-4 Unspecified True OK Healthy Auto-Select 1 TB
4 Red Hat VirtIO 0787-1d41b85e-4e8a-4 Unspecified True OK Healthy Auto-Select 1 TB
2 Red Hat VirtIO 70ab84c0-0e12-4fc2-a Unspecified True OK Healthy Auto-Select 139.7 GB
Crear agrupación de almacenamiento sqldatapool
El siguiente mandato PowerShell se puede utilizar para configurar la agrupación de almacenamiento sqldatapool, sustituya <SerialNumber>
por el número de serie para el volumen sqldb01-data . Este mandato consigue lo siguiente:
- Crea una agrupación de almacenamiento denominada sqldatapool.
- Crea un disco virtual en esta agrupación denominado sqldata para la escritura en bandas (-ResiliencySettingName simple).
- El disco virtual se inicializa con una partición GPT y se le asigna una letra de unidad de D.
- El disco virtual se formatea con el sistema de archivos NTFS con un tamaño de bloque de 64KB y se le asigna una etiqueta de SQLDATA.
$dataserial = "<SerialNumber>"
New-StoragePool -FriendlyName "sqldatapool" -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks (Get-PhysicalDisk -SerialNumber $dataserial) | New-VirtualDisk -FriendlyName "sqldata" -Interleave 65536 -NumberOfColumns 1 -ResiliencySettingName simple –UseMaximumSize | Initialize-Disk -PartitionStyle GPT -PassThru | New-Partition -DriveLetter "D" -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel "SQLDATA" -AllocationUnitSize 65536 -Confirm:$false -UseLargeFRS
Si está utilizando varios volúmenes de datos para aumentar el rendimiento, este mandato PowerShell debe modificarse. Un ejemplo para 2 discos:
New-StoragePool -FriendlyName "sqldatapool" -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks (Get-PhysicalDisk | where {($_.SerialNumber -eq "<Disk1_SerialNumber>") -or ($_.SerialNumber -eq "<Disk2_SerialNumber>")}) | New-VirtualDisk -FriendlyName "sqldata" -Interleave 65536 -NumberOfColumns 2 -ResiliencySettingName simple –UseMaximumSize | Initialize-Disk -PartitionStyle GPT -PassThru | New-Partition -DriveLetter "D" -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel "SQLDATA" -AllocationUnitSize 65536 -Confirm:$false -UseLargeFRS
El valor -NumberOfColumns coincide con el número de discos en los que se van a crear bandas de datos.
Crear la agrupación de almacenamiento sqllogpool
El siguiente mandato PowerShell se puede utilizar para configurar la agrupación de almacenamiento sqllogpool, sustituya <SerialNumber>
por el número de serie para el volumen sqldb01-log . Este mandato consigue lo siguiente:
- Crea una agrupación de almacenamiento denominada sqllogpool.
- Crea un disco virtual en esta agrupación denominado sqllog para la escritura en bandas (-ResiliencySettingName simple).
- El disco virtual se inicializa con una partición GPT y se asigna una letra de unidad de E.
- El disco virtual se formatea con el sistema de archivos NTFS con un tamaño de bloque de 64KB y se le asigna una etiqueta de SQLLOG.
$logserial = "<SerialNumber>"
New-StoragePool -FriendlyName "sqllogpool" -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks (Get-PhysicalDisk -SerialNumber $logserial) | New-VirtualDisk -FriendlyName "sqllog" -Interleave 65536 -NumberOfColumns 1 -ResiliencySettingName simple –UseMaximumSize | Initialize-Disk -PartitionStyle GPT -PassThru | New-Partition -DriveLetter "E" -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel "SQLLOG" -AllocationUnitSize 65536 -Confirm:$false -UseLargeFRS
Inicializar almacenamiento de instancia para tempdb
La unidad para tempdb no utiliza espacios de almacenamiento ya que el almacenamiento de instancia sólo consta de un único volumen. El siguiente mandato de PowerShell se puede utilizar para configurar el volumen, sustituya <SerialNumber>
por el número de serie para el volumen de almacenamiento de instancia. Este mandato consigue lo siguiente:
- Crea una unidad inicializada con una partición GPT y se le asigna una letra de unidad F.
- La unidad se formatea con el sistema de archivos NTFS con un tamaño de bloque de 64KB y se le asigna una etiqueta de TEMPDB.
$tempdbserial = "<SerialNumber>"
Get-Disk | Where SerialNumber -eq $tempdbserial | Initialize-Disk -PartitionStyle GPT -PassThru | New-Partition -DriveLetter "F" -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel "TEMPDB" -AllocationUnitSize 65536 -Confirm:$false -UseLargeFRS
Instale SQL Server
El instalador de SQL Server ya se ha utilizado para descargar el soporte y extraer los archivos en el host bastión. Copie los archivos necesarios del SMB compartido en el disco local del servidor SQL utilizando el siguiente mandato de PowerShell
Copy-Item "Z:\SQL2019\Extracted" -Destination "C:\Users\Administrator\Downloads\SQL2019\Extracted\" -Recurse
para que la instalación se ejecute desde el disco local.
En esta fase hay tres opciones:
- Ejecute el instalador de forma interactiva para instalar SQL Server.
- Ejecute el instalador de forma interactiva para capturar un ConfigurationFile.ini para una última instalación.
- Utilice un ConfigurationFile.ini existente, es decir, uno de este conjunto de documentación e instale SQL Server.
En esta documentación se presupone que está utilizando la opción 3, que ha creado un ConfigurationFile.ini y que está utilizando el mandato siguiente para instalar SQL Server:
C:\Users\Administrator\Downloads\SQL2019\Extracted\SETUP.exe /ConfigurationFile=C:\Users\Administrator\Downloads\ConfigurationFile.ini /TCPENABLED="1" /SQLSVCPASSWORD="<svc_password>" /AGTSVCPASSWORD="<agt_password>"
<svc_password>
es la contraseña de la cuenta de servicio de dominio utilizada para el servicio SQL Server y <agt_password>
es la contraseña de la cuenta de servicio de dominio utilizada para el agente SQL.
De forma predeterminada, SQL Server se instala con el protocolo TCP inhabilitado y /TCPENABLED="1"
habilita TCP.
Verifique que TCP/IP se ha habilitado en la interfaz del servidor y en la dirección de bucle de retorno (127.0.0.1):
- En el servidor SQL, abra el gestor de configuración de SQL Server .
- Expanda el nodo Configuración de red de SQL Server para ver los protocolos para MSSQLSERVER.
- En el área de detalles, pulse con el botón derecho del ratón en el protocolo TCP/IP y seleccione Propiedades.
- En la ventana Propiedades de TCP/IP, elija la pestaña Direcciones IP.
- Busque las interfaces que tienen la dirección IP IPv4 del servidor y la dirección de bucle de retorno (127.0.0.1).
- Verifique que Habilitado esté establecido en Sí. Si se establece en No, seleccione Sí.
- Haga clic en Aceptar y vuelva a hacerlo.
- Será necesario reiniciar el servicio para que los cambios entren en vigor.
- Seleccione Servicios de SQL Server y reinicie el servicio de SQL Server .
Configurar cortafuegos de Windows
Utilice el mandato siguiente para permitir TCP 1433 a través del cortafuegos de Windows New-NetFirewallRule -DisplayName 'SQL-Inbound' -Profile Domain -Direction Inbound -Action Allow -Protocol TCP -LocalPort 1433
Utilice el mandato siguiente para permitir TCP 5022 a través del cortafuegos de Windows si va a configurar grupos de disponibilidad
New-NetFirewallRule -DisplayName 'SQL-AG-Inbound' -Profile Domain -Direction Inbound -Action Allow -Protocol TCP -LocalPort 5022
Configurar el servidor NTP
Para sincronizar la hora automáticamente desde la jerarquía de dominios de AD, ejecute los mandatos siguientes:
w32tm /config /syncfromflags:domhier /update
net stop w32time
net start w32time
w32tm /query /status
Instalar el módulo SQL Server de Powershell
Como el servidor SQL no está conectado a Internet, el módulo tendrá que descargarse en el host bastión copiado en el directorio C:\Program Files\WindowsPowerShell \ Modules del servidor SQL y, a continuación, instalarse. Los siguientes mandatos PowerShell presuponen que ha descargado el módulo en el host bastión y ha configurado una compartición conectada a la unidad Z:
Copy-Item "Z:\SqlServer" -Destination "C:\Program Files\WindowsPowerShell\Modules" -Recurse
Import-Module SQLServer