SQL Server
In diesem Abschnitt werden die Buildtasks beschrieben, die zum Erstellen des SQL-Servers erforderlich sind. Kunden können entweder das Paketangebot mit einer vorkonfigurierten Installation oder den Erstellungsprozess für BYOL (Bring Your Own License) und DIY (Do It Yourself) verwenden, nachdem Sie eine virtuelle Serverinstanz in Ihrer VPC bestellt haben. Kunden sollten ermitteln, welcher Ansatz ihren Anforderungen entspricht, und entsprechend vorgehen. In den folgenden Informationen wird erläutert, wie Sie ein Serverprofil entsprechend Ihren Anforderungen auswählen können.
Virtuellen Server bestellen
In diesen Implementierungsmustern wurde ein virtueller Server der folgenden Spezifikation für den SQL-Server-Host ausgewählt. Anweisungen zur Bestellung finden Sie unter Virtuelle Serverinstanzen über die Benutzerschnittstelle erstellen.
- Profil: mx2d-4x32
- Typ: Public
- Betriebssystem: Windows 2019
- NIC-Menge: 1
- Instanzspeicher: 150GB
- Datenträger:
- sqldb01-data: 1024 GB, Tiered-5IOPS/GB, vom Provider verwaltete Verschlüsselung
- sqldb01-log: 1024 GB, Tiered-5IOPS/GB, vom Provider verwaltete Verschlüsselung
Datenverarbeitungsfunktionalität
Wenn Sie einen virtuellen IBM Cloud -Server für VPC bereitstellen, wählen Sie ein Instanzprofil aus einer von drei Profilfamilien aus: 'Ausgewogen', 'Berechnen' und 'Speicher '.
- Balanced-Ausgeglichene Profile haben ein Verhältnis von 4 GiB Speicher pro 1 vCPU Rechenleistung.
- Compute-Compute-Profile haben ein Verhältnis von 2 GiB Speicher pro 1 vCPU Compute.
- Speicher-Speicherprofile eignen sich am besten für speicherintensive Workloads, wie z. B. Datenbankanwendungen, und haben ein Verhältnis von 8 GiB Speicher pro 1 vCPU Rechenleistung.
Die Onlinetransaktionsverarbeitung (OLTP) beinhaltet in der Regel das Einfügen, Aktualisieren und Löschen von kleinen Datenmengen in einer Datenbank durch eine große Anzahl von Transaktionen durch eine große Anzahl von Benutzern. Ein empfohlenes Minimum für eine MS SQL-OLTP-Produktionsumgebung ist 4 vCore mit 32 GB Speicher aus der Speicherprofilfamilie, mx2-4x32. Bei größeren Anforderungen wird das Speicherprofil auf mx2-128x1024 mit 128vCPU, 1024 GiB RAM und einer Netzbandbreitenbegrenzung von 80 Gb/s erweitert.
SQL Server -Data-Warehouse-Umgebungen erfordern häufig mehr Speicher für vCPU-Anforderungen als 8:1. Daher müssen Sie möglicherweise eine Überbereitstellung auf vCPU durchführen, um die Speicheranforderungen zu erfüllen.
Die Speicherprofilfamilie umfasst Profile, die mit Instanzspeicher bereitgestellt werden. Instanzspeicher stellt Solid-State-Laufwerke bereit, die der virtuellen Serverinstanz direkt zugeordnet sind, wenn die Instanz bereitgestellt wird. Die Instanzspeicherplatte bietet schnellen, temporären Speicher, um die Leistung vieler Workloads, einschließlich der Transaktionsverarbeitung, zu verbessern.
Speicher
Bei der Planung Ihrer SQL Server in IBM Cloud VPCmüssen drei Speicherkomponenten berücksichtigt werden: Bootdatenträger, Datenträger für Daten und Instanzspeicher.
-
Bootdatenträger-Bei der Erstellung eines virtuellen Servers wird ein Bootdatenträger mit 100 GB, 3 IOPS/GB aus Blockspeicher erstellt und der Instanz zugeordnet. Bootdatenträger werden standardmäßig von IBM-verwalteter Verschlüsselung verschlüsselt. Die vom Kunden verwaltete Verschlüsselung ist jedoch eine Option. Bootdatenträger können nicht abgehängt, gelöscht oder vergrößert oder verkleinert werden. Bootdatenträger werden immer gelöscht, wenn der virtuelle Server gelöscht wird. Bootdatenträger enthalten die Betriebssystemdateien.
-
Datenvolumen-Datenträger nutzen Blockspeicher für VPC und stellen einen über Hypervisor angehängten, leistungsfähigen Datenspeicher bereit, der redundant auf mehreren physischen Platten in einer Verfügbarkeitszone (Availability Zone, AZ) gespeichert wird, um Datenverluste aufgrund eines Ausfalls einer einzelnen Komponente zu verhindern. Datenträger für Daten reichen von 10 GB bis 2000 GB und die maximale Anzahl E/A-Operationen pro Sekunde variiert abhängig von der Datenträgergröße und dem ausgewählten IOPS-Tierprofil. Beispiel: Der maximale IOPS-Wert für einen 5 IOPS/GB-Datenträger von 2000 GB beträgt 10.000 IOPS. Sie können ein Datenträgerprofil auswählen, das Ihren Anforderungen am besten entspricht, da Datenträgerprofile als drei vordefinierte IOPS-Schichten oder als angepasstes IOPS-Profil verfügbar sind:
- 3 IOPS/GB-Ein vielseitig einsetzbares Tier-Profil stellt die IOPS/GB-Leistung bereit, die für ein ausgeglichenes Profil der virtuellen Serverinstanz geeignet ist.
- 5 IOPS/GB-Dieses Profil stellt die IOPS/GB-Leistung bereit, die für das Berechnungsprofil einer virtuellen Serverinstanz geeignet ist.
- 10 IOPS/GB-Normalerweise für ein Speicherprofil einer virtuellen Serverinstanz verwendet.
Weitere Informationen hierzu finden Sie unter IOPS-Profile. Die Anzahl der Datenträger, die einem virtuellen Server zugeordnet werden können, hängt davon ab, wie viele vCPUs der virtuelle Server enthält. Weitere Informationen hierzu finden Sie unter Einschränkungen bei der Datenträgerzuordnung. Bei Bedarf können Datenträger abgehängt und virtuellen Servern zugeordnet werden. Datendatenträger werden standardmäßig mit von IBM verwalteter Verschlüsselung verschlüsselt. Sie können Ihre Datendatenträger auch mit Ihren eigenen Rootschlüsseln verschlüsseln. Informationen zur Auswahl der optimalen Größe und Leistungsstufe der Blockspeicherdatenträger finden Sie im Abschnitt Blockspeicherkapazität und -leistung .
-
Instanzspeicher-Optional kann der virtuelle Server Instanzspeicher enthalten, der Solid-State-Laufwerke bereitstellt, die direkt an die virtuelle Serverinstanz angehängt sind, wenn die Instanz bereitgestellt wird. Die Instanzspeicherplatte bietet schnellen, temporären Speicher, um die Leistung vieler Workloads, einschließlich der Transaktionsverarbeitung, zu verbessern. Bei den Daten, die im Instanzspeicher gespeichert werden, handelt es sich um ephemere (kurzlebige) Daten, die unmittelbar an den Lebenszyklus der Instanz gebunden sind. Die Instanzspeicherplatte wird zusammen mit der Instanz automatisch erstellt und gelöscht. Die Instanzspeicherdaten gehen jedoch nicht verloren, wenn eine Instanz neu gestartet wird. Wenn die Leistung von Bedeutung ist, kann MS SQL Server tempdb in den Instanzspeicher gestellt werden
Weitere Informationen finden Sie in Informationen zu Block Storage for VPC.
Bei seltenen Wartungsoperationen kann eine Livemigration des virtuellen Servers auf einen neuen Host erforderlich sein. Der virtuelle Server erhält eine kurze Pause von etwa 10 Sekunden und in einigen Fällen bis zu 30 Sekunden. Das erneute Starten der Virtual Server-Instanz ist kein Bestandteil dieses Prozesses. Bei virtuellen Servern mit Instanzspeicher wird der Server jedoch erneut gestartet. Weitere Informationen finden Sie unter Understanding Cloud Maintenance Operations .
Verbindung zum Server herstellen
Informationen zum Zugriff auf das Kennwort des Windows-Administrators finden Sie unter Verbindung zu Windows-Instanzen herstellen . Kurz gesagt werden die folgenden Befehle von Ihrem Laptop verwendet, wobei der Befehl 'instances' die < INSTANCE_ID > des virtuellen Servers zurückgibt:
ibmcloud is instances
ibmcloud is instance-initialization-values <INSTANCE_ID> --private-key @~/.ssh/id_rsa
Der Domäne beitreten
Diese Task sollte erst nach der Installation des AD-Servers gestartet werden.
Geben Sie an einer Powershell-Eingabeaufforderung auf dem SQL-Server die folgenden Befehle ein, mit denen der Server der Domäne beitreten kann:
- Der
Get-DnsClientServerAddress
erfasst den Schnittstellenindex für die IPv4 -Ethernet-Schnittstelle, sodass der DNS vom IBM Cloud DNS-Server zum ADDNS-Server geändert werden kann. Der BefehlAdd-Computer
schlägt fehl, wenn dieser Schritt fehlt, da der Server den Domänencontroller nicht finden kann.Add-Computer -Server
akzeptiert nur FQDN. - Der Befehl
Add-Computer
fügt den Server mithilfe des ADDNS-Servers<domain>
zur Domäne hinzu<ad_server_fqdn>
und startet den Server erneut, damit die Änderung wirksam wird.
$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
Verbindung zur SMB-Freigabe des Bastionshosts herstellen
Die folgenden PowerShell-Befehle werden verwendet, um Folgendes auszuführen:
- Überprüfen Sie den Status von SMB2. Normalerweise ist dieses Protokoll im Image des virtuellen Servers inaktiviert. Wenn sie inaktiviert ist, kann sie mit
Set-SmbServerConfiguration
aktiviert werden, da sie für den Betrieb von SMB erforderlich ist. - Stellen Sie unter
<bastion_hostname>\Downloads
als Z: -Laufwerk mit dem Benutzer<smbuser>
und dem Kennwort<share_password>
eine Verbindung zur gemeinsam genutzten Ressource her.
$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
Speicher konfigurieren
Die Microsoft SQL on VPC-Bereitstellungsmuster nutzen Microsoft Storage Spaces. Storage Spaces ist eine Technologie in Windows Server, die dem RAID konzeptionell ähnlich ist und im Betriebssystem implementiert ist. Speicherbereiche können verwendet werden, um Datenträger in einem Speicherpool zusammenzufassen. Anschließend wird die Kapazität aus dem Pool verwendet, um Speicherbereiche (virtuelle Platten) zu erstellen. Ein Speicherbereich wird dem Windows-Betriebssystem als reguläres Laufwerk angezeigt, von dem Sie formatierte Datenträger erstellen können.
Speicherbereiche konfigurieren
Erfassen Sie in der IBM Cloud -Konsole die Speicherdatenträgerinformationen für den SQL-Server. Beispiel:
sqldb01-data: 0787-ff88b86a-1e29-4f0d-8a69-67b4deda3d5c-lpcn2
sqldb01-log: 0787-1d41b85e-4e8a-499e-b889-13b96db5251c-2w2n2
Der folgende PowerShell-Befehl wird verwendet, um die Windows-Betriebssystemansicht der Seriennummer für die Verwendung in nachfolgenden PowerShell-Befehlen zu erfassen: Get-StoragePool -IsPrimordial $true | Get-PhysicalDisk -CanPool $True
.
Wie das folgende Beispiel zeigt, können SerialNumbers erfasst werden:
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
sqldatapool-Speicherpool erstellen
Der folgende PowerShell-Befehl kann verwendet werden, um den Speicherpool sqldatapool zu konfigurieren. Ersetzen Sie <SerialNumber>
durch die Seriennummer für den Datenträger sqldb01-data . Dieser Befehl erreicht Folgendes:
- Erstellt einen Speicherpool mit dem Namen sqldatapool.
- Erstellt eine virtuelle Platte mit dem Namen sqldata für Striping (-ResiliencySettingName simple) in diesem Pool.
- Die virtuelle Platte wird mit einer GPT-Partition initialisiert und ein Laufwerkbuchstabe D zugeordnet.
- Die virtuelle Platte wird mit dem NTFS-Dateisystem mit einer Blockgröße von 64KB formatiert und der Bezeichnung SQLDATA zugeordnet.
$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
Wenn Sie mehrere Datenträger zur Leistungssteigerung verwenden, muss dieser PowerShell-Befehl geändert werden. Beispiel für 2 Platten:
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' entspricht der Anzahl der Platten, über die Daten einheitenübergreifend verteilt werden sollen.
Speicherpool 'sqllogpool' erstellen
Der folgende PowerShell-Befehl kann verwendet werden, um den Speicherpool sqllogpool zu konfigurieren. Ersetzen Sie <SerialNumber>
durch die Seriennummer für den Datenträger sqldb01-log . Dieser Befehl erreicht Folgendes:
- Erstellt einen Speicherpool mit dem Namen sqllogpool.
- Erstellt eine virtuelle Platte mit dem Namen sqllog für Striping (-ResiliencySettingName simple) in diesem Pool.
- Die virtuelle Platte wird mit einer GPT-Partition initialisiert und einem Laufwerkbuchstaben von E zugeordnet.
- Die virtuelle Platte wird mit dem NTFS-Dateisystem mit einer Blockgröße von 64KB formatiert und der Bezeichnung SQLLOG zugeordnet.
$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
Instanzspeicher für tempdb initialisieren
Das Laufwerk für tempdb verwendet keine Speicherbereiche, da der Instanzspeicher nur aus einem einzigen Datenträger besteht. Der folgende PowerShell-Befehl kann zum Konfigurieren des Datenträgers verwendet werden. Ersetzen Sie <SerialNumber>
durch die Seriennummer für den Instanzspeicherdatenträger. Dieser Befehl erreicht Folgendes:
- Erstellt ein Laufwerk, das mit einer GPT-Partition initialisiert wurde und dem Laufwerkbuchstabe F zugeordnet ist.
- Das Laufwerk wird mit dem NTFS-Dateisystem mit einer Blockgröße von 64KB formatiert und ihm wird die Bezeichnung TEMPDB zugeordnet.
$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
SQL Server installieren
Das Installationsprogramm SQL Server wurde bereits verwendet, um die Medien herunterzuladen und die Dateien auf den Bastionshost zu extrahieren. Kopieren Sie die erforderlichen Dateien aus dem gemeinsam genutzten SMB auf die lokale Festplatte
des SQL-Servers. Verwenden Sie dazu den folgenden PowerShell-Befehl Copy-Item "Z:\SQL2019\Extracted" -Destination "C:\Users\Administrator\Downloads\SQL2019\Extracted\" -Recurse
, damit die Installation von
der lokalen Festplatte ausgeführt wird.
In diesem Stadium gibt es drei Optionen:
- Führen Sie das Installationsprogramm interaktiv aus, um SQL Serverzu installieren.
- Führen Sie das Installationsprogramm interaktiv aus, um eine Datei ConfigurationFile.ini für eine spätere Installation zu erfassen.
- Verwenden Sie eine vorhandene Datei ConfigurationFile.ini, d. h. eine Datei aus dieser Dokumentation, und installieren Sie SQL Server.
In dieser Dokumentation wird vorausgesetzt, dass Sie Option 3 verwenden, eine Datei ConfigurationFile.ini erstellt haben und den folgenden Befehl zum Installieren von SQL Serververwenden:
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>
ist das Kennwort für den Domänenservice-Account, der für den Service SQL Server verwendet wird, und <agt_password>
ist das Kennwort für den Domänenservice-Account, der für SQL Agent verwendet
wird.
SQL Server wird standardmäßig mit inaktiviertem TCP-Protokolle installiert und /TCPENABLED="1"
aktiviert TCP.
Überprüfen Sie, ob TCP/IP in der Schnittstelle des Servers und der Loopback-Adresse (127.0.0.1) aktiviert wurde:
- Öffnen Sie auf dem SQL Server den SQL Server -Konfigurationsmanager.
- Erweitern Sie den Knoten ' SQL Server -Netzkonfiguration', um die Protokolle für MSSQLSERVER anzuzeigen.
- Klicken Sie im Detailbereich mit der rechten Maustaste auf das TCP/IP-Protokoll und wählen Sie Eigenschaften aus.
- Wählen Sie im Fenster "TCP/IP-Eigenschaften" die Registerkarte "IP-Adressen" aus.
- Suchen Sie nach den Schnittstellen mit der IPv4 -IP-Adresse des Servers und der Loopback-Adresse (127.0.0.1).
- Vergewissern Sie sich, dass Aktiviert auf Ja gesetzt ist. Wenn "Nein" festgelegt ist, wählen Sie "Ja" aus.
- Klicken Sie auf OK und erneut auf OK.
- Der Service muss erneut gestartet werden, damit die Änderungen wirksam werden.
- Wählen Sie SQL Server -Dienste aus und starten Sie den SQL Server -Service erneut.
Windows-Firewall konfigurieren
Verwenden Sie den folgenden Befehl, um TCP 1433 durch die Windows-Firewall zuzulassen New-NetFirewallRule -DisplayName 'SQL-Inbound' -Profile Domain -Direction Inbound -Action Allow -Protocol TCP -LocalPort 1433
Verwenden Sie den folgenden Befehl, um TCP 5022 über die Windows-Firewall zuzulassen, wenn Sie Verfügbarkeitsgruppen konfigurieren möchten.
New-NetFirewallRule -DisplayName 'SQL-AG-Inbound' -Profile Domain -Direction Inbound -Action Allow -Protocol TCP -LocalPort 5022
NTP-Server konfigurieren
Führen Sie die folgenden Befehle aus, um die Zeit automatisch aus der AD-Domänenhierarchie zu synchronisieren:
w32tm /config /syncfromflags:domhier /update
net stop w32time
net start w32time
w32tm /query /status
Powershell-Modul SQL Server installieren
Da der SQL Server nicht mit dem Internet verbunden ist, muss das Modul auf den Bastionshost heruntergeladen werden, der in das Verzeichnis C:\Program Files\WindowsPowerShell\Modules des SQL Servers kopiert wurde, und anschließend installiert werden. Die folgenden PowerShell-Befehle setzen voraus, dass Sie das Modul auf den Bastionshost heruntergeladen und eine gemeinsam genutzte Ressource konfiguriert haben, die mit dem Laufwerk Z: verbunden ist.
Copy-Item "Z:\SqlServer" -Destination "C:\Program Files\WindowsPowerShell\Modules" -Recurse
Import-Module SQLServer