IBM Cloud Docs
SQL Server

SQL Server

Questa sezione passi attraverso le attività di build necessarie per creare il server SQL. I clienti possono scegliere di utilizzare l'offerta bundle con un'installazione pre - configurata oppure utilizzare il processo di creazione di Porta Your Own License (BYOL) e Do It Yourself (DIY) dopo aver ordinato un'istanza server virtuale nel proprio VPC. I clienti dovrebbero determinare quale approccio corrisponde ai loro requisiti e procedere di conseguenza. Le informazioni riportate di seguito spiegano come si sceglierebbe un profilo server per abbinare le proprie esigenze.

Ordinare un server virtuale

Un server virtuale della seguente specifica è stato selezionato per l'host server SQL in questi pattern di distribuzione. Per ordinare, seguire le istruzioni all'indirizzo Creazione di istanze server virtuali utilizzando la UI.

  • Profilo: mx2d-4x32
  • Tipo: Pubblico
  • SO: Windows 2019
  • NIC Qtà: 1
  • Memoria istanza: 150GB
  • Volumi di dati:
    • sqldb01-data: 1024 GB, Tiered-5IOPS/GB, Crittografia gestita Provider
    • sqldb01-log: 1024 GB, Tiered-5IOPS/GB, Crittografia gestita Provider

Elaborazione

Quando si prevede un server virtuale IBM Cloud per VPC, si seleziona una Profili di istanza da una delle tre famiglie di profili: Balanced, Compute e Memory.

  • I Profili bilanciati hanno un rapporto di 4 GiB di memoria per ogni 1 vCPU di computi.
  • I profili Compute - Compute hanno un rapporto di 2 GiB di memoria per ogni 1 vCPU di computi.
  • I profili di memoria - Memoria sono migliori per carichi di lavoro intensivi di memoria, come ad esempio le applicazioni di database, e hanno un rapporto 8 GiB di memoria per ogni 1 vCPU di computi.

L'OLTP (online Transactional Processing) comporta tipicamente l'inserimento, l'aggiornamento, la cancellazione di piccole quantità di dati in un database da parte di grandi numeri di transazioni da parte di un gran numero di utenti. Un minimo consigliato per un ambiente MS SQL OLTP di produzione è di 4 vCore con 32 GB di memoria dalla famiglia del profilo Memory, mx2-4x32. Per i requisiti più ampi, il Profilo di memoria si estende fino al mx2-128x1024 che ha 128vCPU, 1024 GiB RAM e un tappo a banda larga da 80 Gbps.

Gli ambienti di data warehouse di SQL Server richiedono spesso una maggiore memoria ai requisiti di vCPU rispetto al 8:1, quindi, potrebbe essere necessario l'eccesso di predisposizione su vCPU per soddisfare i requisiti di memoria.

La famiglia del profilo Memory include i profili che vengono forniti con memoria di istanza. Storage fornisce unità di stato solide direttamente collegate all'istanza del server virtuale quando l'istanza viene fornita. Il disco di memoria dell'istanza fornisce una memoria veloce e temporanea per migliorare le prestazioni di molti carichi di lavoro compresa l'elaborazione transazionale.

Archiviazione

Quando si pianifica il tuo SQL Server su IBM Cloud VPC, ci sono tre componenti di storage da considerare; volumi di avvio, volumi di dati e memoria di istanza.

  • Volumi di avvio - Quando viene creato il server virtuale, un volume di avvio 100 GB, 3 IOPS/GB viene creato da storage blocchi e collegato all'istanza. Per impostazione predefinita, i volumi di boot sono crittografati dalla crittografia gestita da IBM, tuttavia la crittografia gestita dal cliente è un'opzione. I volumi di boot non possono essere staccati, cancellati o aumentati o ridotti di dimensioni. I volumi di boot vengono sempre cancellati quando il server virtuale viene cancellato. I volumi di boot contengono i file del sistema operativo.

  • Volumi di dati - I volumi di dati fanno leva sulla memoria di blocco per VPC e fornisce archiviazione dati ipervisor-montati, che vengono memorizzati ridonatamente su più dischi fisici in una Zona Disponibilità (AZ) per impedire la perdita di dati a causa di un guasto di qualsiasi singolo componente. I volumi di dati variano da 10 GB a 2000 GB e il massimo IOPS varia in base alle dimensioni del volume e al profilo IOPS tier selezionato. Ad esempio, il max IOPS per un volume IOPS/GB di 2000 GB di 2000 GB è 10.000 IOPS. Sei in grado di selezionare un profilo di volume che meglio soddisfa i tuoi requisiti in quanto i profili di volume sono disponibili come tre livelli IOPS predefiniti o come profilo IOPS personalizzato:

    • 3 IOPS/GB - Un profilo di livello general-purpose fornisce prestazioni IOPS/GB adatte ad un'istanza del server virtuale Balanced profile.
    • 5 IOPS/GB - Questo profilo fornisce prestazioni IOPS/GB adatte ad un'istanza del server virtuale Compute profile.
    • 10 IOPS/GB - Tipicamente utilizzato per un profilo di memoria dell'istanza del server virtuale.

    Per ulteriori informazioni, vedi Livelli IOPS. Il numero di volumi che possono essere collegati ad un server virtuale dipende da quante vCPU il server virtuale contiene. Per ulteriori informazioni, vedi Limiti di collegamento del volume. I volumi di dati possono essere staccati e collegati ai server virtuali come richiesto. I volumi di dati sono crittografati per impostazione predefinita con la crittografia gestita da IBM. È inoltre possibile crittografare i volumi di dati utilizzando i propri tasti di root. Fare riferimento a Capacità di archiviazione blocchi e prestazioni consigli sulla scelta della dimensione del volume di archiviazione ottimale e del livello delle prestazioni.

  • Istanza Storage - Opzionalmente, il server virtuale può includere Storage che fornisce unità di stato solide direttamente collegate all'istanza del server virtuale quando l'istanza viene provisata. Il disco di memoria dell'istanza fornisce una memoria veloce e temporanea per migliorare le prestazioni di molti carichi di lavoro compresa l'elaborazione transazionale. I dati memorizzati sulla memoria di istanza sono effimeri, il che significa che è legato direttamente al ciclo di vita dell'istanza. Il disco di memoria dell'istanza viene creato automaticamente e distrutto con l'istanza. I dati di archiviazione dell'istanza non vengono persi, tuttavia, quando viene riavviata un'istanza. Se le prestazioni sono una preoccupazione allora MS SQL Server tempdb può essere inserito nella memoria di istanza

Per ulteriori informazioni, consultare Informazioni su Block Storage for VPC.

In rare operazioni di manutenzione, può essere necessaria una migrazione dal vivo del server virtuale ad un nuovo host. Il server virtuale sperimenterà una breve pausa di circa 10 seconds minuti, e in alcuni casi fino a 30 seconds. L'istanza del server virtuale non viene riavviata come parte di questo processo. Tuttavia, per i server virtuali con istanza Storage, il server verrà riavviato. Fare riferimento a Understanding Cloud Maintenance Operations per ulteriori informazioni.

Connessione al server

Fare riferimento a Connessione alle istanze di Windows per accedere alla password dell'amministratore di Windows, tuttavia, in breve i seguenti comandi vengono utilizzati dal proprio portatile, dove il comando istanze restituisce il < INSTANCE_ID> del server virtuale:

ibmcloud is instances
ibmcloud is instance-initialization-values <INSTANCE_ID> --private-key @~/.ssh/id_rsa

Unire il dominio

Questa attività non deve essere avviata fino a quando non è stato installato il server AD.

In un prompt Powershell sul server SQL inserire i seguenti comandi che consentono al server di unire il dominio:

  • Il Get-DnsClientServerAddress cattura l'Index Index per l'interfaccia Ethernet IPv4 , in modo che il DNS possa essere modificato dal server DNS IBM Cloud al server ADDNS. Il comando Add-Computer non avrà esito positivo se questo passaggio è saltato in quanto il server non sarà in grado di individuare il controller di dominio. Il Add-Computer -Server accetta solo FQDN.
  • Il comando Add-Computer aggiunge il server al dominio <domain> utilizzando il server ADDNS <ad_server_fqdn> e quindi riavvia il server per rendere effettiva la modifica.
$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

Connessione al bastione host SMB share

I seguenti comandi PowerShell sono utilizzati per effettuare quanto segue:

  • Controllare per vedere lo stato del SMB2, tipicamente questo protocollo è disabilitato nell'immagine del server virtuale. Se disabilitato può essere abilitato utilizzando Set-SmbServerConfiguration , in quanto è necessario che SMB operi.
  • Connettersi alla condivisione su <bastion_hostname>\Downloads, come Z: drive utilizzando l'utente <smbuser> e la password <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

Configura archiviazione

L'SQL Microsoft su modelli di distribuzione VPC fa leva su Microsoft Storage Spaces. Storage Spaces è una tecnologia in Windows Server che è concettualmente simile a RAID, ed è implementata nel sistema operativo. Gli spazi di memoria possono essere utilizzati per raggruppare i volumi di dati insieme in un pool di archiviazione e poi la capacità dalla piscina viene poi utilizzata per creare spazi di memoria (dischi virtuali). Uno spazio di archiviazione appare al sistema operativo Windows come un'unità regolare da cui è possibile creare volumi formattati.

Configurare gli spazi di archiviazione

Dalla console IBM Cloud , acquisire le informazioni sui volumi di archiviazione per il server SQL. Ad esempio:

sqldb01-data: 0787-ff88b86a-1e29-4f0d-8a69-67b4deda3d5c-lpcn2
sqldb01-log: 0787-1d41b85e-4e8a-499e-b889-13b96db5251c-2w2n2

Il seguente comando PowerShell viene utilizzato per catturare la vista di Windows OS di SerialNumber da utilizzare nei successivi comandi PowerShell; Get-StoragePool -IsPrimordial $true | Get-PhysicalDisk -CanPool $True. Come si può vedere dal seguente esempio, i SerialNumbers possono essere catturati:

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

Crea lotto di memoria sqldatapool

Il seguente comando PowerShell può essere utilizzato per configurare il lotto di memoria sqldatapool, sostituire <SerialNumber> con il numero di serie per il volume sqldb01-data . Questo comando realizza quanto segue:

  • Crea un pool di archiviazione chiamato sqldatapool.
  • Crea un disco virtuale in questa piscina chiamato sqldata per la striping (-ResiliencySettingName semplice).
  • Il disco virtuale viene inizializzato con una partizione GPT e assegnato una lettera di guida di D.
  • Il disco virtuale viene formattato con il filesystem NTFS con una dimensione di blocco di 64KB e assegnato un'etichetta di 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

Se si utilizzano più volumi di dati per una maggiore prestazione, allora questo comando PowerShell deve essere modificato. Un esempio per 2 dischi:

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

Il -NumberOfColumns corrisponde al numero di dischi in cui strizzare i dati.

Creare il lotto di memoria sqllogpool

Il seguente comando PowerShell può essere utilizzato per configurare il lotto di memoria sqllogpool, sostituire <SerialNumber> con il numero di serie per il volume sqldb01-log . Questo comando realizza quanto segue:

  • Crea un pool di archiviazione chiamato sqllogpool.
  • Crea un disco virtuale in questa piscina chiamato sqllog per la striping (-ResiliencySettingName semplice).
  • Il disco virtuale viene inizializzato con una partizione GPT e assegnato una lettera di guida di E.
  • Il disco virtuale viene formattato con il filesystem NTFS con una dimensione di blocco di 64KB e assegnato un'etichetta di 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

Inizializzare la memoria dell'istanza per tempdb

L'unità per tempdb non utilizza Storage Spaces come memoria di istanza solo composta da un unico volume. Il seguente comando PowerShell può essere utilizzato per configurare il volume, sostituire <SerialNumber> con il numero di serie per il volume di memoria dell'istanza. Questo comando realizza quanto segue:

  • Crea un'unità inizializzata con una partizione GPT e assegnato una lettera di guida di F.
  • L'unità è formattata con il filesystem NTFS con una dimensione di blocco di 64KB e assegnato un'etichetta di 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

Installare SQL Server

L'installer SQL Server è già stato utilizzato per scaricare i supporti ed estratto i file sul bastione host. Copiare i file richiesti dallo SMB condivisi sul disco locale del server SQL utilizzando il seguente comando PowerShell Copy-Item "Z:\SQL2019\Extracted" -Destination "C:\Users\Administrator\Downloads\SQL2019\Extracted\" -Recurse in modo che l'installazione venga eseguita da disco locale.

In questa fase ci sono tre opzioni:

  1. Eseguire l'installer interattivamente per installare SQL Server.
  2. Eseguire l'installatore interattivamente per catturare una ConfigurationFile.ini per quest' ultima installazione.
  3. Utilizzare una ConfigurationFile.ini esistente, i.e uno forma questa serie di documentazione e installare SQL Server.

Questa documentazione presuppone che si stia utilizzando l'opzione 3, aver creato un ConfigurationFile.ini e si sta utilizzando il seguente comando per installare 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> è la password per l'account di servizio del dominio utilizzato per il servizio SQL Server e <agt_password> è la password per l'account di servizio del dominio utilizzato per SQL Agent.

Per impostazione predefinita, SQL Server è installato con protocollo TCP disabilitato e /TCPENABLED="1" abilita TCP.

Verificare che TCP/IP sia stato abilitato sull'interfaccia del server e l'indirizzo loopback (127.0.0.1):

  1. Sul server SQL, aprire il Gestore configurazione di SQL Server .
  2. Espandere il nodo Configurazione di rete SQL Server per visualizzare i protocolli per MSSQLSERVER.
  3. Nell'area dettagli, fare clic con il tasto destro del mouse sul protocollo TCP/IP e scegliere Proprietà.
  4. Dalla finestra Proprietà TCP/IP, scegliere la scheda Indirizzi IP.
  5. Cerca le interfacce che hanno l'indirizzo IP IPv4 di Server e l'indirizzo loopback (127.0.0.1).
  6. Verificare che Abilitato sia impostato su Sì. Se impostato su No, Seleziona Sì.
  7. Clicca su OK e OK di nuovo.
  8. Il servizio dovrà essere riavviato per rendere effettive le modifiche.
  9. Selezionare SQL Server Servizi e riavviare il servizio SQL Server .

Configura firewall Windows

Utilizzare il seguente comando per consentire il TCP 1433 tramite il firewall Windows New-NetFirewallRule -DisplayName 'SQL-Inbound' -Profile Domain -Direction Inbound -Action Allow -Protocol TCP -LocalPort 1433

Utilizzare il seguente comando per consentire il TCP 5022 tramite il firewall di Windows se si desidera configurare i gruppi di disponibilità New-NetFirewallRule -DisplayName 'SQL-AG-Inbound' -Profile Domain -Direction Inbound -Action Allow -Protocol TCP -LocalPort 5022

Configurare il server NTP

Per sincronizzare il tempo automaticamente dalla gerarchia del dominio AD, eseguire i seguenti comandi:

w32tm /config /syncfromflags:domhier /update
net stop w32time
net start w32time
w32tm /query /status

Installare il modulo Powershell SQL Server

Poiché il server SQL non è Internet connesso, il modulo dovrà essere scaricato sull'host bastione copiato attraverso la directory C:\Program Files\WindowsPowerShell \ Modules e poi installato. I seguenti comandi PowerShell ipotizza di aver scaricato il modulo sul bastione host e configurato una condivisione collegata alla Z: drive

Copy-Item "Z:\SqlServer" -Destination "C:\Program Files\WindowsPowerShell\Modules" -Recurse
Import-Module SQLServer