Considerações sobre instalações de SQL Server em cluster

Após a série de 4 artigos sobre como instalar uma instância em cluster, venho passar algumas considerações básicas sobre o ambiente em que o SQL Server será instalado:

Rede
Considere sempre utilizar, pelo menos, duas redes distintas. Uma para ligar a aplicação com o SQL Server e outra para a gestão da instância. Uma terceira rede poderia ser adicionada para transferencia de ficheiros de backup.
Ah, isso sem contar a rede de storage…

A regra básica é: Dividir ao máximo!

Discos
A mesma regra serve para os discos, tente distribuir os discos por “funções”, tendo o maior número possível de discos isolados. Considere ter um disco dedicado para dados (mdf e ndf), ficheiros de t-log (ldf) e para a TempDB e, talvez, um disco exclusivo para se criar ficheiros para alojar exclusivamente non-clustered indexes – Isso diminuirá a pressão dos ficheiros de dados assim como a sua fragmentação.

Sobre a TempDB, todo o cuidado é pouco…
Em alguns casos, é interessante ter um disco para os ficheiro de T-Log da TempDB separado dos ficheiros de dados. Aliás, falando em ficheiros de dados da TempDB, tenha em atenção o número de ficheiros a se adicionar…Não deixe a configuração default, mas também não exagere na quantidade de ficheiros.
Em casos de cluster, especificamente paraversões de SQL Server 2012+, considere a utilização de um disco local rápido, como um Fusion-IO ou algo com um bom rácico preço/performance.

Atenção as dependências
Tenha muito cuidado ao gerir as dependência de um cluster. Uma dependência mal feita pode custar caro. Um exemplo: Ao se associar os discos ao SQL Server na instalação, estamos automaticamente criando uma dependência no SQL Server Engine. Ou seja, o SQL Server Engine depende dos discos para ficar online, se um disco ficar offline por qualquer motivo, o SQL Server Engine ira ficar offline também. Na mesma onda, o SQL Server Agent depende do SQL Server Engine e, também, ficará offline.

Onde eu quero chegar aqui? A dependência dos discos é importante? Sim, mas por exemplo, um disco de backup não precisa ser uma dependência do SQL Server. Assim como a rede de backups ou a rede de gestão não precisam ser uma dependência do Hostname Virtual do SQL Server.

Configurações gerais
Não se esqueça de definir a memória mínima e máxima e de definir planos de backup, manutenção de índices e estatísticas de uma forma apropriada.

Tenha em conta que um plano de disaster recovery poderá ser necessário, e dependendo da tecnologia utilizada, o servidor de DR pode trazer mais vantagens… Ou seja, não será apenas um servidor de standby, consumindo recursos a espera de um eventual desastre.

Falando em DR, aproveito para lembrar que no SQL Saturday, em Abril, teremos um workshop muito bom de um amigo meu, chamado Edwin Sarmiento, que virá para Portugal especialmente para este evento. O preço do Workshop é de apenas € 100 e ainda é oferecido o curso completo com videos, disponível em https://www.udemy.com/sqlserverhadrdeepdive/. O preço deste Deep Dive, é de $315.

Ou seja, por € 100 você terá a formação directamente com o Edwin e ainda leva o curso para rever os pontos chave.

Ficam aqui os detalhes do workshop. Eu estarei lá!!!

High Availability & Disaster Recovery Deep Dive

High Availability and Disaster Recovery (HA/DR) is an area that every SQL Server DBA needs to be comfortable with. In this full-day workshop, learn what needs to be considered when embarking on a HA/DR project, the different features and technologies available in SQL Server, and implement them accordingly to meet service level agreements of mission-critical databases.

You will learn:
§  What requirements need to be met when implementing an HA/DR project
§  How to identify different SQL Server features and technologies – backup, recovery, database mirroring, log shipping, clustering, AlwaysOn – that can be used in addressing HA/DR requirements
§  How to implement the appropriate technology to meet HA/DR service level agreements

A group discount (20%) for every 5 registrations is available, so if you want to bring along your whole team – contact us to know the details! 

Link para inscrição: https://www.eventbrite.pt/e/bilhetes-high-availability-disaster-recovery-deep-dive-by-edwin-sarmiento-9168803137 

Até a próxima!!!

Passo-a-Passo: Instalação de uma instância SQL Server 2012 em cluster – Parte 4

Chegamos a última parte desta série de artigos. Para fechar com chave de ouro, vamos falar sobre Distributed Transaction Coordinator, ou simplesmente DTC. Vou tentar passar uma explicação simples e, em seguida, demonstrar como se preparar o DTC para uma instância em Cluster.

O que é o MS DTC?
O MS DTC é um serviço do SO, que vem instalado automaticamente e corre sob a conta de serviço “Network Service”. A sua função é assegurar que as transacções distribuídas são consistentes, mesmo que haja uma falha.

Estas transacções distrinbuidas, podem ser inicializaras quando uma transacção está lidando com múltiplos computadores via rede OU quando a transacção esta lidando com múltiplos processos no mesmo computador.

Todos os participantes desta transacção distribuída trabalham em sincroniza com os outros participantes (computadores) envolvidos a transacção, sempre a espera de efectuar um commit ou abortar o trabalho. Por esta razão, temos que garantir que todos os intervenientes podem se comunicar pela rede.

Preciso configurar o MS DTC no meu ambiente?
A resposta a esta questão, é a padrão para o SQL Server: Depende.
Você precisa entender se o sistema em questão irá ou não lidar com transacções distribuídas.
Se você tem mais do que uma instância no mesmo computador, você não irá precisar do DTC. De outra forma, se você tiver um cluster de dois nós com instâncias correndo em nós diferentes e comunicando entre si, o MS DTC será utilizado.

Outra possibilidade, é você ter o SSIS instalado, além da componente de engine. Neste caso, o MS DTC poderá ser necessário também.

Para mais informação, verifique este link:  http://msdn.microsoft.com/en-us/library/ms189910#MSDTC

Como confirgurar o MS DTC em cluster?
Desde o Windows Server 2008, a instalação de mais do que uma instância do MS DTC é permitida em um servidor/cluster. Então para uma instância de SQL Server em cluster, é uma boa pratica ter uma Role exclusiva para o MS DTC e uma dedicada para cada Role contendo o SQL Server.

Como documentado pela Microsoft, o SQL Sevrer segue o seguinte caminho para escolher o MS DTC a ser utilizado:

  • Utiliza o MS DTC instalado no grupo local, senão
    • Utiliza a instância mapeada do MS DTC, senão
      • Utiliza a instância MS DTC padrão do cluster, senão
        • Utiliza o MS DTC local da máquina aonde o serviço esta a correr.

Para configurar o MS DTC em cluster, precisamos de um disco (que não precisa ser exclusivo) e um hostname.

Para configurar um role exclusiva para o MS DTC, siga os passos:

  1. Clique com o botão direito sobre Roles e escolha a opção “Configure Role”.

    Screen Shot 2014-01-02 at 14.18.43

  2. Uma nova janela irá abrir. Clique em “next”.

    Screen Shot 2014-01-02 at 14.18.52

  3. Escolha a opção “Distributed Transaction Coordinator (DTC)”. Clique em  “Next”.

    Screen Shot 2014-01-02 at 14.19.11

  4. Preencha o hostname no campo “Name” e o IP na coluna “Networks. Clique em “Next”.

    Screen Shot 2014-01-02 at 14.20.33

  5. Escolha o disco a ser utilizado. Clique em “Next”.

    Screen Shot 2014-01-02 at 15.14.42

  6. Reveja as configurações e clique em “Next”.

    Screen Shot 2014-01-02 at 15.14.57

  7. A instalação irá correr, e no fim será apresentado um relatório. Clique em “Finish”.

    Screen Shot 2014-01-02 at 15.15.11

  8. Agora você poderá ver uma nova Role criada, com os recursos seleccionados e o serviço do MS DTC.

Para adicionar um instância do MS DTC na Role do SQL Server, siga os passos:

  1. Clique com o botão direito na Rola do SQL Server, clique em: “Add Resource”->”More Resources” -> “Distributed Transaction Coordinator” (como na imagem).

    Screen Shot 2014-01-02 at 15.30.50

  2. O recurso será criado na Role, agora será necessário configura-lo. Clique com o botão direito sobre “New Distributed Transaction Coordinator” e clique em “Properties”.

    Screen Shot 2014-01-02 at 15.31.20

  3. Conforme referido anteriormente, o DTC precisa de um hostname e um disco. Nas dependências, seleccione estes dois recursos e clique em OK.

    Screen Shot 2014-01-02 at 15.32.44

  4. Agora vamos iniciar o recurso.

    Screen Shot 2014-01-02 at 15.32.55

Como preparar a rede para transacções distribuídas?
Nota: Em ambientes de cluster, você deverá efectuar estes passos apenas uma vez.

  1. Em “Server Manager” clique em “Tools”->”Component Services” ou simplesmente execute o comando “dcomcnfg”.

    Screen Shot 2014-01-02 at 15.33.55

  2. Expanda a árvore, clique com o botão direito na instância de MS DTC desejada e escolha a opção “Properties”.

    Screen Shot 2014-01-03 at 11.46.28

  3. Na tab “Security” seleccione “Network DTC Acess” assim como “Allow Inbound” e “Allow Outbound”, como mostrado na imagem. Clique em OK.

    Screen Shot 2014-01-03 at 11.49.02

  • Descrevendo, por alto cada uma das opções…
    • Network DTC Access“: Activa/Desactiva o acesso a rede.
    • Allow inbound“:  Permite a execução de uma transacção distribuída, iniciada em outra máquina, na máquina na qual esta opção esta activa.
    • Allow outbound“:  Permite que uma transacção distribuída iniciada localmente seja executada em uma outra máquina.
    • Enable XA transactions” e “Enable SNA LU 6.2 Transactions“: Activa/Desactiva estas especificações particulares de transações distribuídas.

Resolvendo problemas com o MS DTC
Existe uma tool chamada DTC Ping que pode nos ajudar a verificar se o DTC está funcionando correctamente em todos os computadores que deverão estar envolvidos em uma transacção.

Siga este link para efectuar o Download: http://www.microsoft.com/en-us/download/details.aspx?id=2868

Recomendo a leitura do seguinte artigo, para aprender como utilizar esta tool, assim como resolver possíveis error: Troubleshooting MSDTC issues with the DTCPing tool.

Outra optima tool é a DTC Tester. Aonde podemos simular transacções distribuídas utilizando o SQL Server:

Screen Shot 2014-01-03 at 14.15.25
Para fazer download siga este link: http://support.microsoft.com/kb/293799 .

Fim
Chegamos ao fim desta série. Existem muitas coisas para se falar sobre best practices e configurações particulares do SQL Server. Certamente iremos abordar estes assuntos nos próximos posts!

Obrigado pela leitura!!

    Passo-a-Passo: Instalação de uma instância SQL Server 2012 em cluster – Parte 3

    Em continuação da série, iremos hoje entender como se adicionar um nó a uma instalação já feita, sendo esta uma instância em um nó ou mais.

    Para seguir com is passos seguintes, é obrigatório ter pelo menos um nó instalado. Caso queira começar a instalação do zero, leia a parte 2 desta série.

    Continuando… Conecte no nó em que a instalação será feita, no nosso caso W2012SRV04, e siga os seguintes passos:

    1. Com os mesmo binários utilizados na instalação anterior, clique em Setup.exe.

      Screen Shot 2013-12-09 at 12.38.54

    2. O “SQL Server Installation Center” Abrirá.

      Screen Shot 2013-12-09 at 12.39.28

    3. Ainda no “SQL Server Installation Center”, clique em “Installation” e selecione “Add node to a SQL Server failover cluster”.

      Screen Shot 2013-12-09 at 22.38.41

    4. Aguarde a verificação, e clique em “OK”.

      Screen Shot 2013-12-18 at 14.46.07

    5. O setup irá buscar por actualizações. Mantenha a opção “Include SQL Server product updates” marcada e clique em “Next”.

      Screen Shot 2013-12-09 at 22.39.51

    6. Outra verificação irá correr para identificar possíveis problemas. Clique em “Next”.

      Screen Shot 2013-12-09 at 22.42.01

    7. Indique a chave e clique em “Next”.

      Screen Shot 2013-12-09 at 22.42.17

    8. Aceite os termos e clique em “Next”.

      Screen Shot 2013-12-09 at 22.42.28

    9. Agora confirme as definições de IP, assim como você fez no primeiro nó. Clique em “Next”.

      Screen Shot 2013-12-09 at 22.45.02

    10. Indique as passwords para as contas de serviço do Engine e do Agent. Clique em “Next”.

      Screen Shot 2013-12-09 at 22.45.36

    11. Como no nó anterior, você tem a opção de enviar relatórios de erro para a Microsoft. Clique em “Next”.

      Screen Shot 2013-12-09 at 22.46.14

    12. Agora o setup irá verificar se o processo de instalação irá ser bloqueado durante a instalação. Clique em “Next” no fim desta verificação.

      Screen Shot 2013-12-09 at 22.46.26

    13. Reveja as opções escolhidas e clique em “Install”.

      Screen Shot 2013-12-09 at 22.46.47

    14. Agora tenha paciencia… A instalação está a ser feita :) Clique em “Next” quando estiver completa.

      Screen Shot 2013-12-09 at 22.47.00

    15. Sucesso! O nó agora faz parte da instância!! Verifique se todas as features foram instaladas correctamente. Clique em “Close”.

      Screen Shot 2013-12-09 at 22.56.08

    No fim desta instalação, você terá mais um nó disponível para correr a sua instância. Isso significa que podemos fazer failover do nó  W2012SRV03 para o nó W2012SRV04. Agora temos uma solução de high availability montada, que nós ajudará a recuperar em caso de falha de hardware.

    Por algum outro motivo, como em uma manutenção, você pode querer efectuar um failover manualmente. Para fazer isso abra o  Failover Cluster Manager (o mesmo utilizado no artigo anterior), clique com o botão direito sobre a Role do SQL Server (no nosso caso “SQL Server (DB)”) ae escolha a opção “Move”. Duas opção estarão disponíveis – “Best Possible Node” e “Select Node…”

    Ambas são válidas, mas a segunda te da a oportunidade de escolha o nó para o qual iremos mover a Role. O que é útil no caso de termos mais do que dois nós disponíveis.

    Screen Shot 2013-12-18 at 16.38.27
    É isso por hoje! Estarei de volta em breve com a última parte desta série, falando sobre MS DTC em instância em cluster.

    Até a próxima!!