SQL Server
Cette section décrit les tâches de génération nécessaires à la création du serveur SQL. Les clients peuvent choisir d'utiliser l'offre groupée avec une installation préconfigurée ou d'utiliser le processus de génération BYOL (Bring Your Own License) et DIY (Do It Yourself) après avoir commandé une instance de serveur virtuel dans votre VPC. Les clients doivent déterminer l'approche qui correspond à leurs exigences et procéder en conséquence. Les informations ci-dessous expliquent comment choisir un profil de serveur pour répondre à vos besoins.
Commander un serveur virtuel
Un serveur virtuel de la spécification suivante a été sélectionné pour l'hôte du serveur SQL dans ces canevas de déploiement. Pour commander, suivez les instructions de la rubrique Création d'instances de serveur virtuel à l'aide de l'interface utilisateur.
- Profil: mx2d-4x32
- Type: Public
- OS: Windows 2019
- Qté NIC: 1
- Stockage d'instance: 150GB
- Volumes de données :
- sqldb01-data: 1024 Go, Tiered-5IOPS/GB, chiffrement géré par le fournisseur
- sqldb01-log: 1024 Go, Tiered-5IOPS/GB, chiffrement géré par le fournisseur
Compute
Lorsque vous mettez à disposition des serveurs virtuels IBM Cloud pour VPC, vous sélectionnez des profils d'instance dans l'une des trois familles de profils: Balanced, Compute et Memory.
- Les profils équilibrés ont un rapport de 4 Gio de mémoire pour chaque vCPU de calcul.
- Calcul-Les profils de calcul ont un rapport de 2 Gio de mémoire pour chaque unité centrale virtuelle de calcul.
- Les profils de mémoire sont appropriés pour les charges de travail à forte consommation de mémoire, telles que les applications de base de données, et ont un rapport de 8 Gio de mémoire pour chaque vCPU de calcul.
Le traitement transactionnel en ligne (OLTP) implique généralement l'insertion, la mise à jour et la suppression de petites quantités de données dans une base de données par un grand nombre de transactions effectuées par un grand nombre d'utilisateurs. Un minimum recommandé pour un environnement MS SQL OLTP de production est 4 vCore avec 32 Go de mémoire de la famille de profils de mémoire, mx2-4x32. Pour des exigences plus importantes, le profil de mémoire s'étend jusqu'à mx2-128x1024 qui dispose de 128vCPU, de 1024 Gio de mémoire RAM et d'un plafond de bande passante réseau de 80 Gbit / s.
Les environnements d'entrepôt de données SQL Server nécessitent souvent une quantité de mémoire supérieure à celle requise pour les unités centrales virtuelles (vCPU) à 8:1. Par conséquent, vous pouvez être amené à surallouer des ressources sur les unités centrales virtuelles pour satisfaire les exigences en matière de mémoire.
La famille de profils de mémoire inclut les profils qui sont mis à disposition avec le stockage d'instance. Stockage d'instance fournit des unités SSD directement connectées à l'instance de serveur virtuel lors de la mise à disposition de l'instance. Le disque de stockage d'instance fournit un stockage temporaire rapide pour améliorer les performances de nombreuses charges de travail, y compris le traitement transactionnel.
Stockage
Lors de la planification de SQL Server sur IBM Cloud VPC, il existe trois composants de stockage à prendre en compte: les volumes d'amorçage, les volumes de données et le stockage d'instance.
-
Volumes d'amorçage-Lorsque le serveur virtuel est créé, un volume d'amorçage de 100 Go, 3 IOPS/Go est créé à partir du stockage par blocs et connecté à l'instance. Par défaut, les volumes d'amorçage sont chiffrés par le IBM, mais le chiffrement géré par le client est une option. Les volumes d'amorçage ne peuvent pas être déconnectés, supprimés ou augmentés ou réduits. Les volumes d'amorçage sont toujours supprimés lorsque le serveur virtuel est supprimé. Les volumes d'amorçage contiennent les fichiers du système d'exploitation.
-
Volumes de données-Les volumes de données optimisent le stockage par blocs pour VPC et fournissent un stockage de données hautes performances monté sur hyperviseur qui est stocké de manière redondante sur plusieurs disques physiques dans une zone de disponibilité (AZ) afin d'éviter la perte de données en cas de défaillance d'un composant unique. Les volumes de données sont compris entre 10 Go et 2000 Go et le nombre maximal d'E-S/s varie en fonction de la taille du volume et du profil de niveau d'E-S/s sélectionné. Par exemple, le nombre maximal d'IOPS pour un volume de 5 IOPS/Go de 2000 Go est de 10 000 IOPS. Vous pouvez sélectionner un profil de volume qui répond le mieux à vos besoins car les profils de volume sont disponibles en tant que trois niveaux d'IOPS prédéfinis ou en tant que profil d'IOPS personnalisé:
- 3 IOPS/Go-Un profil de niveau à usage général fournit des performances IOPS/Go adaptées à un profil équilibré d'instance de serveur virtuel.
- 5 IOPS/Go-Ce profil fournit des performances IOPS/Go adaptées à un profil de calcul d'instance de serveur virtuel.
- 10 IOPS/Go-Généralement utilisé pour un profil de mémoire d'instance de serveur virtuel.
Pour plus d'informations, voir Niveaux d'IOPS. Le nombre de volumes pouvant être connectés à un serveur virtuel dépend du nombre d'UC virtuelles que le serveur virtuel contient. Pour plus d'informations, voir Limites de connexion de volume. Les volumes de données peuvent être déconnectés et connectés à des serveurs virtuels selon les besoins. Les volumes de données sont chiffrés par défaut avec le chiffrement géré par IBM. Vous pouvez également chiffrer des volumes de données à l'aide de vos propres clés racine. Consultez les conseils relatifs à la capacité de stockage par blocs et aux performances pour savoir comment choisir la taille de volume de stockage par blocs et le niveau de performance optimaux.
-
Stockage d'instance-Le serveur virtuel peut éventuellement inclure un stockage d'instance qui fournit des unités SSD directement connectées à l'instance de serveur virtuel lors de la mise à disposition de l'instance. Le disque de stockage d'instance fournit un stockage temporaire rapide pour améliorer les performances de nombreuses charges de travail, y compris le traitement transactionnel. Les données stockées dans le stockage d'instance sont éphémères, ce qui signifie qu'elles sont liées directement au cycle de vie de l'instance. Le disque de stockage d'instance est automatiquement créé et détruit avec l'instance. Les données de stockage d'instance ne sont toutefois pas perdues lorsqu'une instance est réamorcée. Si les performances sont préoccupantes, MS SQL Server tempdb peut être placé sur le stockage d'instance
Pour plus d'informations, voir A propos de Block Storage for VPC.
Dans le cadre d'opérations de maintenance rares, une migration active du serveur virtuel vers un nouvel hôte peut être nécessaire. Le serveur virtuel va subir une brève pause d'environ 10 secondes, et dans certains cas jusqu'à 30 secondes. L'instance de serveur virtuel n'est pas réamorcée dans le cadre de ce processus. Toutefois, pour les serveurs virtuels avec le stockage d'instance, le serveur sera redémarré. Pour plus d'informations, voir Présentation des opérations de maintenance du cloud .
Connexion au serveur
Reportez-vous à la rubrique Connexion à des instances Windows pour accéder au mot de passe de l'administrateur Windows. Toutefois, en résumé, les commandes suivantes sont utilisées à partir de votre ordinateur portable, où la commande d'instances renvoie l'< INSTANCE_ID > du serveur virtuel:
ibmcloud is instances
ibmcloud is instance-initialization-values <INSTANCE_ID> --private-key @~/.ssh/id_rsa
Rejoindre le domaine
Cette tâche ne doit pas être démarrée tant que le serveur AD n'a pas été installé.
A l'invite Powershell sur le serveur SQL, entrez les commandes suivantes qui permettent au serveur de rejoindre le domaine:
Get-DnsClientServerAddress
capture l'index d'interface pour l'interface Ethernet IPv4 , de sorte que le serveur de noms de domaine puisse être remplacé par le serveur ADDNS à partir du serveur IBM Cloud . La commandeAdd-Computer
échouera si cette étape est omise car le serveur ne pourra pas localiser le contrôleur de domaine.Add-Computer -Server
accepte uniquement le nom de domaine complet.- La commande
Add-Computer
ajoute le serveur au domaine<domain>
à l'aide du serveur ADDNS<ad_server_fqdn>
, puis redémarre le serveur pour que le changement soit effectif.
$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
Connexion au partage SMB de l'hôte bastion
Les commandes PowerShell suivantes sont utilisées pour effectuer les opérations suivantes:
- Vérifiez le statut de SMB2. En règle générale, ce protocole est désactivé dans l'image du serveur virtuel. Si cette option est désactivée, elle peut être activée à l'aide de
Set-SmbServerConfiguration
, car elle est requise pour que SMB fonctionne. - Connectez-vous au partage sur
<bastion_hostname>\Downloads
, en tant qu'unité Z: à l'aide de l'utilisateur<smbuser>
et du mot de passe<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
Configurer le stockage
Les modèles de déploiement Microsoft SQL sur VPC optimisent les espaces de stockage Microsoft. Storage Spaces est une technologie dans Windows Server qui est conceptuellement similaire à RAID et qui est implémentée dans le système d'exploitation. Les espaces de stockage peuvent être utilisés pour regrouper des volumes de données dans un pool de stockage, puis la capacité du pool est utilisée pour créer des espaces de stockage (disques virtuels). Un espace de stockage apparaît sur le système d'exploitation Windows en tant qu'unité standard à partir de laquelle vous pouvez créer des volumes formatés.
Configurer les espaces de stockage
A partir de la console IBM Cloud , capturez les informations sur les volumes de stockage pour le serveur SQL. Par exemple :
sqldb01-data: 0787-ff88b86a-1e29-4f0d-8a69-67b4deda3d5c-lpcn2
sqldb01-log: 0787-1d41b85e-4e8a-499e-b889-13b96db5251c-2w2n2
La commande PowerShell suivante permet de capturer la vue Windows OS du numéro de série à utiliser dans les commandes PowerShell suivantes: Get-StoragePool -IsPrimordial $true | Get-PhysicalDisk -CanPool $True
. Comme le montre
l'exemple suivant, les SerialNumbers peuvent être capturés:
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
Créer un pool de stockage sqldatapool
La commande PowerShell suivante peut être utilisée pour configurer le pool de stockage sqldatapool. Remplacez <SerialNumber>
par le numéro de série du volume sqldb01-data . Cette commande permet d'obtenir ce qui suit:
- Crée un pool de stockage appelé sqldatapool.
- Crée un disque virtuel dans ce pool appelé sqldata pour la segmentation des données (-ResiliencySettingName simple).
- Le disque virtuel est initialisé avec une partition GPT et une lettre d'unité de D.
- Le disque virtuel est formaté avec le système de fichiers NTFS avec une taille de bloc de 64KB et un libellé SQLDATA lui est affecté.
$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 vous utilisez plusieurs volumes de données pour améliorer les performances, cette commande PowerShell doit être modifiée. Exemple pour 2 disques:
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
-NumberOfColumns correspond au nombre de disques sur lesquels les données doivent être segmentées.
Création du pool de stockage sqllogpool
La commande PowerShell suivante peut être utilisée pour configurer le pool de stockage sqllogpool, remplacez <SerialNumber>
par le numéro de série du volume sqldb01-log . Cette commande permet d'obtenir ce qui suit:
- Crée un pool de stockage appelé sqllogpool.
- Crée un disque virtuel dans ce pool appelé sqllog pour la segmentation des données (-ResiliencySettingName simple).
- Le disque virtuel est initialisé avec une partition GPT et une lettre d'unité de E.
- Le disque virtuel est formaté avec le système de fichiers NTFS avec une taille de bloc de 64KB et un libellé SQLLOG lui est affecté.
$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
Initialiser le stockage d'instance pour tempdb
L'unité pour tempdb n'utilise pas d'espaces de stockage car le stockage d'instance se compose d'un seul volume. La commande PowerShell suivante permet de configurer le volume et de remplacer <SerialNumber>
par le numéro
de série du volume de stockage de l'instance. Cette commande permet d'obtenir ce qui suit:
- Crée une unité initialisée avec une partition GPT et lui affecte la lettre d'unité F.
- L'unité est formatée avec le système de fichiers NTFS avec une taille de bloc de 64KB et un libellé TEMPDB lui est affecté.
$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
Installez SQL Server
Le programme d'installation de SQL Server a déjà été utilisé pour télécharger le support et extraire les fichiers sur l'hôte bastion. Copiez les fichiers requis à partir du SMB partagé sur le disque local du serveur SQL à l'aide de la commande
PowerShell Copy-Item "Z:\SQL2019\Extracted" -Destination "C:\Users\Administrator\Downloads\SQL2019\Extracted\" -Recurse
suivante afin que l'installation s'exécute à partir du disque local.
À ce stade, il existe trois options:
- Exécutez le programme d'installation en mode interactif pour installer SQL Server.
- Exécutez le programme d'installation en mode interactif pour capturer un fichier ConfigurationFile.ini pour une installation ultérieure.
- Utilisez un fichier ConfigurationFile.ini existant, c'est-à-dire un formulaire de cet ensemble de documentation et installez SQL Server.
Cette documentation suppose que vous utilisez l'option 3, que vous avez créé un fichier ConfigurationFile.ini et que vous utilisez la commande suivante pour installer 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>
est le mot de passe du compte de service de domaine utilisé pour le service SQL Server et <agt_password>
est le mot de passe du compte de service de domaine utilisé pour l'agent SQL.
Par défaut, SQL Server est installé avec le protocole TCP désactivé et /TCPENABLED="1"
active TCP.
Vérifiez que TCP/IP a été activé sur l'interface du serveur et sur l'adresse de bouclage (127.0.0.1):
- Sur le serveur SQL, ouvrez le gestionnaire de configuration SQL Server .
- Développez le noeud SQL Server Network Configuration pour afficher les protocoles de MSSQLSERVER.
- Dans la zone des détails, cliquez avec le bouton droit de la souris sur le protocole TCP/IP et sélectionnez Propriétés.
- Dans la fenêtre Propriétés TCP/IP, sélectionnez l'onglet Adresses IP.
- Recherchez les interfaces qui possèdent l'adresse IP IPv4 du serveur et l'adresse de bouclage (127.0.0.1).
- Vérifiez que l'option Activé est définie sur Oui. Si la valeur est Non, sélectionnez Oui.
- Cliquez sur OK, puis sur OK à nouveau.
- Le service devra être redémarré pour que les modifications soient prises en compte.
- Sélectionnez les services SQL Server et redémarrez le service SQL Server .
Configurer le pare-feu Windows
Utilisez la commande suivante pour autoriser TCP 1433 via le pare-feu Windows New-NetFirewallRule -DisplayName 'SQL-Inbound' -Profile Domain -Direction Inbound -Action Allow -Protocol TCP -LocalPort 1433
Utilisez la commande suivante pour autoriser TCP 5022 via le pare-feu Windows si vous prévoyez de configurer des groupes de disponibilité
New-NetFirewallRule -DisplayName 'SQL-AG-Inbound' -Profile Domain -Direction Inbound -Action Allow -Protocol TCP -LocalPort 5022
Configurer le serveur NTP
Pour synchroniser automatiquement l'heure à partir de la hiérarchie de domaine AD, exécutez les commandes suivantes:
w32tm /config /syncfromflags:domhier /update
net stop w32time
net start w32time
w32tm /query /status
Installez le module Powershell SQL Server
Comme le serveur SQL n'est pas connecté à Internet, le module doit être téléchargé sur l'hôte bastion et copié dans le répertoire C:\Program Files\WindowsPowerShell \ Modules du serveur SQL, puis installé. Les commandes PowerShell suivantes supposent que vous avez téléchargé le module sur l'hôte bastion et configuré un partage connecté à l'unité Z:
Copy-Item "Z:\SqlServer" -Destination "C:\Program Files\WindowsPowerShell\Modules" -Recurse
Import-Module SQLServer