IBM Cloud Docs
SQL server

SQL server

Esta seção passos através das tarefas de construção necessárias para criar o servidor SQL. Os clientes podem optar por utilizar a oferta de bundle com uma instalação pré-configurada ou utilizar o processo de construção Bring Your Own License (BYOL) e Do It Yourself (DIY) depois de ter ordenado uma instância de servidor virtual em seu VPC. Os clientes devem determinar qual abordagem corresponde aos seus requisitos e proceder em conformidade. As informações abaixo explicam como você escolheria um perfil do servidor para corresponder às suas necessidades.

Ordenar um servidor virtual

Um servidor virtual da especificação a seguir foi selecionado para o host do servidor SQL nesses padrões de implementação. Para ordenar, siga instruções em Criando instâncias do servidor virtual usando a UI.

  • Perfil: mx2d-4x32
  • Tipo: Público
  • OS: Windows 2019
  • NIC Qty: 1
  • Armazenamento de Instância: 150GB
  • Volumes de dados:
    • sqldb01-data: 1024 GB, Tiered-5IOPS/GB, Provider Managed Encryption
    • sqldb01-log: 1024 GB, Tiered-5IOPS/GB, Provider Managed Encryption

Cálculo

Ao provisionar um IBM Cloud servidores virtuais para VPC, você seleciona um Profiles de Instância a partir de uma das três famílias de perfis: Balanced, Compute e Memória.

  • Os perfis balanceados balanceados têm uma proporção de 4 GiB de memória para cada 1 vCPU de computação.
  • Os perfis Computa-Compute têm uma proporção de 2 GiB de memória para cada 1 vCPU de computação.
  • Memória-Os perfis de memória são melhores para cargas de trabalho intensivas de memória, como aplicativos de banco de dados, e possuem uma proporção 8 GiB de memória para cada 1 vCPU de computação.

O Processamento Transaccional Online (OLTP) geralmente envolve a inserção, atualização, exclusão de pequenas quantidades de dados em um banco de dados por grande número de transações por um grande número de usuários. Um mínimo recomendado para um ambiente de produção MS SQL OLTP é de 4 vCore com 32 GB de memória da família do perfil Memória, mx2-4x32. Para requisitos maiores, o Perfil da memória estende-se até o mx2-128x1024 que possui 128vCPU, 1024 GiB RAM e um cap de largura de banda de rede de 80 Gbps.

Os ambientes de data warehouse do SQL Server muitas vezes requerem maior memória aos requisitos de vCPU do que 8:1, portanto, você pode ter que passar por cima de provisão em vCPU para satisfazer os requisitos de memória.

A família do perfil Memória inclui perfis que são provisionados com armazenamento de instância. O armazenamento de instância fornece unidades de estado sólido diretamente conectadas à instância do servidor virtual quando a instância é provisionada. O disco de armazenamento de instância fornece um armazenamento rápido e temporário para melhorar o desempenho de muitas cargas de trabalho incluindo o processamento transacional.

Armazenamento

Ao planejar o seu SQL Server no IBM Cloud VPC, há três componentes de armazenamento a considerar; volumes de inicialização, volumes de dados e armazenamento de instância.

  • Volumes de inicialização-Quando servidor virtual é criado, um volume de inicialização 100 GB, 3 IOPS/GB é criado a partir de armazenamento de blocos e anexado à instância. Por padrão, os volumes de inicialização são criptografados pela criptografia gerenciada pela IBM, no entanto, a criptografia gerenciada pelo cliente é uma opção. Os volumes de inicialização não podem ser desmatados, excluídos ou aumentados ou reduzidos em tamanho. Os volumes de inicialização são sempre excluídos quando o servidor virtual é excluído. Os volumes de inicialização contêm os arquivos do sistema operacional.

  • Volumes de dados-Os volumes de dados alavancam o armazenamento de blocos para VPC e fornece armazenamento de dados hipervisor-montado, de alto desempenho, que é armazenado redundantemente em vários discos físicos em uma Zona de Disponibilidade (AZ) para evitar perda de dados devido ao fracasso de qualquer componente único. Os volumes de dados variam de 10 GB a 2000 GB e o IOPS máximo varia com base no tamanho do volume e no perfil de camada IOPS selecionado. Por exemplo, o IOPS max para um volume de 5 IOPS/GB de 2000 GB é de 10.000 IOPS. Você é capaz de selecionar um perfil de volume que melhor atenda aos seus requisitos como perfis de volume estão disponíveis como três camadas de IOPS predefinidas ou como um perfil IOPS personalizado:

    • 3 IOPS/GB-Um perfil de camada de uso geral oferece desempenho IOPS/GB adequado para um perfil Balanced de instância de servidor virtual.
    • 5 IOPS/GB-Este perfil fornece o desempenho IOPS/GB adequado para um perfil de Computação de instância do servidor virtual.
    • 10 IOPS/GB-Geralmente usado para um perfil Memória de instância de servidor virtual.

    Para mais informações, consulte Camadas de IOPS. O número de volumes que podem ser anexados a um servidor virtual depende de quantas vCPUs o servidor virtual contém. Para obter mais informações, consulte Limites de anexo de volume. Os volumes de dados podem ser desmatados e anexados aos servidores virtuais, conforme necessário. Os volumes de dados são criptografados por padrão com a criptografia gerenciada pela IBM. Também é possível criptografar volumes de dados usando suas próprias chaves raiz. Consulte a Capacidade de armazenamento de blocos e o desempenho na escolha do tamanho do volume de armazenamento de bloco ideal e nível de desempenho.

  • Armazenamento de Instância-Opcionalmente, o servidor virtual pode incluir Armazenamento de Instância o qual fornece unidades de estado sólido diretamente conectadas à instância do servidor virtual quando a instância for provisionada. O disco de armazenamento de instância fornece um armazenamento rápido e temporário para melhorar o desempenho de muitas cargas de trabalho incluindo o processamento transacional. Os dados armazenados no armazenamento de instância são efêmeros, significando que eles estão vinculados diretamente ao ciclo de vida da instância. O disco de armazenamento de instância é automaticamente criado e destruído com a instância. No entanto, os dados de armazenamento de instância não são perdidos quando uma instância é reinicializada. Se o desempenho é uma preocupação então o MS SQL Server tempdb pode ser colocado em armazenamento de instância

Para obter mais informações, consulte Sobre Block Storage for VPC.

Sob raras operações de manutenção, uma migração ao vivo do servidor virtual para um novo hospedeiro pode ser necessária. O servidor virtual experimentará uma breve pausa de cerca de 10 seconds minutos, e em alguns casos até 30 seconds. A instância de servidor virtual não é reinicializada como parte desse processo. No entanto, para servidores virtuais com Storage Instância, então o servidor será reiniciado. Consulte Understanding Cloud Manutenção de Operações para obter mais informações.

Conectando ao servidor

Consulte Conectando-se a instâncias do Windows para acessar a senha do Administrador do Windows, no entanto, em suma os seguintes comandos são utilizados a partir do seu laptop, onde o comando instâncias retorna o < INSTANCE_ID> do servidor virtual:

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

Entrar no domínio

Essa tarefa não deve ser iniciada até depois que o servidor AD foi instalado.

Em um prompt do Powershell no servidor SQL digite os seguintes comandos que permitem que o servidor se junte ao domínio:

  • O Get-DnsClientServerAddress capta o Índice de Interface para a interface Ethernet IPv4 , para que o DNS possa ser alterado do servidor DNS IBM Cloud para o servidor ADDNS. O comando Add-Computer falhará se esta etapa faltar já que o servidor não conseguirá localizar o controlador de domínio. O Add-Computer -Server só aceita FQDN.
  • O comando Add-Computer adiciia o servidor no domínio <domain> usando o servidor ADDNS <ad_server_fqdn> e depois reinicia o servidor para tornar a mudança efetiva.
$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

Conecte-se ao host SMB de bastion share

Os seguintes comandos PowerShell são utilizados para realizar o seguinte:

  • Verifique para ver o status do SMB2, geralmente este protocolo é desativado na imagem do servidor virtual. Se desativado ele pode ser ativado usando Set-SmbServerConfiguration , já que é necessário que o SMB opere.
  • Conecte-se ao compartilhamento no <bastion_hostname>\Downloads, conforme o Z: drive usando o usuário <smbuser> e a senha <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 armazenamento

Os padrões de implementação do Microsoft SQL em VPC alavancam o Microsoft Storage Spaces. O Storage Spaces é uma tecnologia no Windows Server que é conceitualmente semelhante ao RAID, e é implementada no sistema operacional. Os espaços de armazenamento podem ser usados para agrupar volumes de dados juntos em um conjunto de armazenamento e então a capacidade a partir do conjunto é então usada para criar espaços de armazenamento (discos virtuais). Um espaço de armazenamento aparece para o sistema operacional Windows como uma unidade regular a partir da qual é possível criar volumes formatados.

Configurar espaços de armazenamento

A partir do console IBM Cloud , capture as informações de volumes de armazenamento para o servidor SQL. Por exemplo:

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

O comando PowerShell a seguir é usado para capturar a visualização do Windows OS do SerialNumber para uso em comandos subsequentes do PowerShell; Get-StoragePool -IsPrimordial $true | Get-PhysicalDisk -CanPool $True. Como pode ser visto a partir do exemplo a seguir, os SerialNumbers podem ser capturados:

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

Criar conjunto de armazenamento sqldatapool

O comando PowerShell a seguir pode ser usado para configurar o conjunto de armazenamento sqldatapool, substituir <SerialNumber> pelo número de série para o volume sqldb01-data . Este comando alcança o seguinte:

  • Cria um conjunto de armazenamento chamado sqldatapool.
  • Cria um disco virtual neste conjunto chamado sqldata for striping (-ResiliencySettingName simples).
  • O disco virtual é inicializado com uma partição GPT e designou uma letra de unidade de D.
  • O disco virtual é formatado com o filesystem NTFS com um tamanho de bloco de 64KB e designado um rótulo 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

Se você estiver usando vários volumes de dados para o aumento do desempenho, então este comando PowerShell deve ser modificado. Um exemplo 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

O -NumberOfColumns corresponde o número de discos a dados listrados através de.

Criar o conjunto de armazenamento sqllogpool

O comando PowerShell a seguir pode ser usado para configurar o conjunto de armazenamento sqllogpool, substituir <SerialNumber> pelo número de série para o volume sqldb01-log . Este comando alcança o seguinte:

  • Cria um conjunto de armazenamento chamado sqllogpool.
  • Cria um disco virtual neste conjunto chamado sqllog para striping (-ResiliencySettingName simples).
  • O disco virtual é inicializado com uma partição GPT e designou uma letra de unidade de E.
  • O disco virtual é formatado com o filesystem NTFS com um tamanho de bloco de 64KB e atribuído um rótulo 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 armazenamento de instância para tempdb

A unidade para tempdb não usa o Storage Spaces como armazenamento de instância consiste apenas em um único volume. O comando PowerShell a seguir pode ser usado para configurar o volume, substituir <SerialNumber> com o número de série para o volume de armazenamento de instância. Este comando alcança o seguinte:

  • Cria uma unidade inicializada com uma partição GPT e designou uma letra de unidade de F.
  • A unidade é formatada com o filesystem NTFS com um tamanho de bloco de 64KB e designou um rótulo 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

Instalar SQL Server

O instalador do SQL Server já foi usado para fazer o download da mídia e extraiu os arquivos sobre o host de bastião. Copie os arquivos necessários do SMB compartilhados para o disco local do servidor SQL usando o seguinte comando PowerShell Copy-Item "Z:\SQL2019\Extracted" -Destination "C:\Users\Administrator\Downloads\SQL2019\Extracted\" -Recurse para que a instalação seja executada a partir do disco local.

Nesta fase há três opções:

  1. Execute o instalador interativamente para instalar o SQL Server.
  2. Execute o instalador de forma interativa para capturar um ConfigurationFile.ini para uma última instalação.
  3. Use um ConfigurationFile.ini existente, i.e um formulário este conjunto de documentação e instale o SQL Server.

Esta documentação assume que você está usando a opção 3, criaram um ConfigurationFile.ini, e estão usando o seguinte comando para instalar o 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> é a senha para a conta de serviço de domínio usada para o serviço SQL Server e <agt_password> é a senha para a conta de serviço de domínio utilizada para Agente SQL.

Por padrão, o SQL Server é instalado com o protocolo TCP desativado e /TCPENABLED="1" ativa o TCP.

Verifique se o TCP/IP foi ativado na interface do servidor e no endereço de loopback (127.0.0.1):

  1. No servidor SQL, abra o Gerenciador de Configuração do SQL Server .
  2. Expanda o nó de Configuração de Rede do SQL Server para visualizar os Protocolos para MSSQLSERVER.
  3. Na área de detalhes, clique com o botão direito do mouse sobre o protocolo TCP/IP e escolha Propriedades.
  4. A partir da janela Propriedades TCP/IP, escolha a guia Advestidos IP.
  5. Procure as interfaces que tem o endereço IP IPv4 do Servidor e o endereço de loopback (127.0.0.1).
  6. Verifique se Enabled está configurado como Sim. Se configurado para Não, Selecione Sim.
  7. Clique em OK, e OK novamente.
  8. O serviço precisará ser reiniciado para que as mudanças sejam efetivadas.
  9. Selecione SQL Server Services, e reinicie o serviço SQL Server .

Configurar o firewall do Windows

Use o seguinte comando para permitir o TCP 1433 através do firewall do Windows New-NetFirewallRule -DisplayName 'SQL-Inbound' -Profile Domain -Direction Inbound -Action Allow -Protocol TCP -LocalPort 1433

Use o comando a seguir para permitir o TCP 5022 através do firewall do Windows se você for configurar grupos de disponibilidade New-NetFirewallRule -DisplayName 'SQL-AG-Inbound' -Profile Domain -Direction Inbound -Action Allow -Protocol TCP -LocalPort 5022

Configurar o servidor NTP

Para sincronizar o tempo automaticamente a partir da hierarquia de domínio AD, execute os seguintes comandos:

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

Instalar o módulo Powershell SQL Server

Como o servidor SQL não é conectado à Internet, o módulo precisará ser baixado para o host de bastion copiado em todo o diretório C:\Program Files\WindowsPowerShell \ Modules e, em seguida, instalado. Os seguintes comandos PowerShell supõem que você tenha baixado o módulo para o host de bastion e configurado um compartilhamento conectado à unidade Z:

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