Continuidade dos negócios e recuperação do banco de dados – SQL Server em LinuxBusiness continuity and database recovery - SQL Server on Linux

APLICA-SE A: simSQL Server nãoBanco de Dados SQL do Azure nãoSQL Data Warehouse do Azure nãoParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Este artigo fornece uma visão geral das soluções de continuidade de negócios para alta disponibilidade e recuperação de desastre no SQL Server.This article provides an overview of business continuity solutions for high availability and disaster recovery in SQL Server.

Todos que implantam o SQL Server têm uma tarefa comum para levar em consideração, que é certificar-se de que todas as instâncias do SQL Server de missão crítica e os bancos de dados dentro delas estarão disponíveis quando os usuários finais e de negócios precisarem delas, independentemente de ser em horário comercial ou o tempo todo.One common task everyone deploying SQL Server has to account for is making sure that all mission critical SQL Server instances and the databases within them are available when the business and end users need them, whether that is 9 to 5 or around the clock. A meta é manter os negócios em funcionamento com o mínimo ou sem qualquer interrupção.The goal is to keep the business up and running with minimal or no interruption. Esse conceito também é conhecido como continuidade de negócios.This concept is also known as business continuity.

O SQL Server 2017 apresenta muitos novos recursos ou aprimoramentos aos existentes, alguns dos quais são de disponibilidade.SQL Server 2017 introduces many new features or enhancements to existing ones, some of which are for availability. A maior adição ao 2017 do SQL Server é o suporte para SQL Server em distribuições do Linux.The biggest addition to SQL Server 2017 is the support for SQL Server on Linux distributions. Para obter uma lista completa dos novos recursos no SQL Server 2017, consulte o tópico Novidades no SQL Server.For a full list of the new features in SQL Server 2017, see the topic What's new in SQL Server.

Este artigo está focado em abordar os cenários de disponibilidade no SQL Server 2017, bem como os novos e aprimorados recursos de disponibilidade no SQL Server 2017.This article is focused on covering the availability scenarios in SQL Server 2017 as well as the new and enhanced availability features in SQL Server 2017. Os cenários incluem os híbridos que serão capazes de estender as implantações do SQL Server no Windows Server e no Linux, bem como aquelas que podem aumentar o número de cópias legíveis de um banco de dados.The scenarios include hybrid ones that will be able to span SQL Server deployments on both Windows Server and Linux, as well as ones that can increase the number of readable copies of a database. Embora este artigo não aborde as opções de disponibilidade externas ao SQL Server, como as fornecidas pela virtualização, tudo discutido aqui se aplica às instalações do SQL Server em uma máquina virtual convidada, seja na nuvem pública ou hospedada em um servidor do hipervisor local.While this article does not cover availability options external to SQL Server, such as those provided by virtualization, everything discussed here applies to SQL Server installations inside a guest virtual machine whether in the public cloud or hosted by an on premises hypervisor server.

Cenários de 2017 do SQL Server usando os recursos de disponibilidadeSQL Server 2017 scenarios using the availability features

Os grupos de disponibilidade, FCIs e envio de logs podem ser usados de diversas formas e não necessariamente apenas para fins de disponibilidade.Availability groups, FCIs, and log shipping can be used in a variety of ways, and not necessarily just for availability purposes. Os recursos de disponibilidade podem ser usados de quatro maneiras principais:There are four main ways the availability features can be used:

  • Alta disponibilidadeHigh availability
  • Recuperação de desastreDisaster recovery
  • Migrações e atualizaçõesMigrations and upgrades
  • Expandindo cópias legíveis de um ou mais bancos de dadosScaling out readable copies of one or more databases

Cada seção abordará os recursos relevantes que podem ser usados nesse cenário específico.Each section will discuss the relevant features that can be used for that particular scenario. O único recurso não abordado é a replicação do SQL Server.The one feature not covered is SQL Server replication. Embora não seja oficialmente designado como um recurso de disponibilidade sob a cobertura do AlwaysOn, ele geralmente é usado para tornar os dados redundantes em determinados cenários.While not officially designated as an availability feature under the Always On umbrella, it is often used for making data redundant in certain scenarios. A replicação será adicionada ao SQL Server no Linux em uma versão futura.Replication will be added to SQL Server on Linux in a future release.

Importante

Os recursos de disponibilidade do SQL Server não substituem a necessidade de ter uma estratégia de backup e restauração bem testada e robusta, o bloco de construção mais fundamental de qualquer solução de disponibilidade.The SQL Server availability features do not replace the requirement to have a robust, well tested backup and restore strategy, the most fundamental building block of any availability solution.

Alta disponibilidadeHigh availability

É muito importante garantir que o banco de dados ou as instâncias do SQL Server estejam disponíveis caso ocorra um problema local para um data center ou uma única região na região da nuvem.Ensuring that SQL Server instances or database are available in the case of a problem that is local to a data center or single region in the cloud region is important. Esta seção abordará como recursos de disponibilidade do SQL Server podem auxiliar nessa tarefa.This section will cover how the SQL Server availability features can assist in that task. Todos os recursos descritos estão disponíveis tanto no Windows Server quanto no Linux.All of the features described are available both on Windows Server as well as on Linux.

Grupos de disponibilidade AlwaysOnAlways on availability groups

Introduzidos no SQL Server 2012, os Grupos de Disponibilidade AlwaysOn (grupos de disponibilidade) fornecem proteção em nível de banco de dados ao enviar cada transação de um banco de dados para outra instância, conhecida como uma réplica, que contém uma cópia do banco de dados em um estado especial.Introduced in SQL Server 2012, Always On Availability Groups (availability groups) provide database-level protection by sending each transaction of a database to another instance, known as a replica, that contains a copy of that database in a special state. Um grupo de disponibilidade pode ser implantado nas Standard ou Enterprise Editions.An availability group can be deployed on Standard or Enterprise Editions. As instâncias que participam de um grupo de disponibilidade podem ser autônomas ou Instâncias de Cluster de Failover AlwaysOn (FCIs, descritas na próxima seção).The instances participating in an availability group can be either standalone or Always On Failover Cluster Instances (FCIs, described in the next section). Como as transações são enviadas a uma réplica conforme acontecem, os grupos de disponibilidade são recomendados onde houver requisitos para o ponto de recuperação inferior e para objetivos de tempo de recuperação.Since the transactions are sent to a replica as they happen, availability groups are recommended where there are requirements for lower recovery point and recovery time objectives. A movimentação de dados entre as réplicas pode ser síncrona ou assíncrona, com a Enterprise Edition, permitindo que até três réplicas (inclusive a primária) sejam síncronas.Data movement between replicas can be synchronous or asynchronous, with Enterprise Edition allowing up to three replicas (including the primary) as synchronous. Um grupo de disponibilidade tem uma cópia de leitura/gravação completa do banco de dados que está na réplica primária, enquanto todas as réplicas secundárias não podem receber transações diretamente de usuários finais ou de aplicativos.An availability group has one fully read/write copy of the database which is on the primary replica, while all secondary replicas cannot receive transactions directly from end users or applications.

Observação

AlwaysOn é um termo coletivo para os recursos de disponibilidade do SQL Server e aborda os grupos de disponibilidade e FCIs.Always On is an umbrella term for the availability features in SQL Server and covers both availability groups and FCIs. AlwaysOn não é o nome do recurso do grupo de disponibilidade.Always On is not the name of the availability group feature.

Como os grupos de disponibilidade fornecem apenas proteção no nível do banco de dados e não no nível de instância, nada que não seja capturado no log de transações ou configurado no banco de dados será necessário para sincronizar manualmente cada réplica secundária.Because availability groups only provide database-level, and not instance-level, protection, anything not captured in the transaction log or configured in the database will need to manually synchronized for each secondary replica. Alguns exemplos de objetos que devem ser sincronizados manualmente são logons no nível de instância, servidores vinculados e trabalhos do SQL Server Agent.Some examples of objects that must be synchronized manually are logins at the instance level, linked servers, and SQL Server Agent jobs.

Um grupo de disponibilidade também tem outro componente chamado ouvinte, que permite que aplicativos e usuários finais se conectem sem a necessidade de saber qual instância do SQL Server está hospedando a réplica primária.An availability group also has another component called the listener, which allows applications and end users to connect without needing to know which SQL Server instance is hosting the primary replica. Cada grupo de disponibilidade deve ter seu próprio ouvinte.Each availability group would have its own listener. Enquanto as implementações do ouvinte são um pouco diferentes no Windows Server em comparação ao Linux, a funcionalidade que fornece e como é usada é a mesma.While the implementations of the listener are slightly different on Windows Server versus Linux, the functionality it provides and how it is used is the same. A figura abaixo mostra um grupo de disponibilidade com base no Windows Server que está usando um Cluster de Failover do Windows Server (WSFC).The picture below shows a Windows Server-based availability group which is using a Windows Server Failover Cluster (WSFC). Um cluster subjacente na camada do sistema operacional é necessário para disponibilidade se estiver no Linux ou no Windows Server.An underlying cluster at the OS layer is required for availability whether it is on Linux or Windows Server. O exemplo mostra uma configuração de dois servidores ou nós simples, na qual um WSFC é o cluster subjacente.The example shows a simple two server, or node, configuration where a WSFC is the underlying cluster.

Grupo de disponibilidade simples

As Standard e Enterprise Editions têm valores máximos diferentes quando se trata de réplicas.Standard and Enterprise Edition have different maximums when it comes to replicas. Um grupo de disponibilidade na Standard Edition, conhecido como um Grupo de Disponibilidade Básico, dá suporte a duas réplicas (uma primária e uma secundária) com apenas um único banco de dados no grupo de disponibilidade.An availability group in Standard Edition, known as a Basic Availability Group, supports two replicas (one primary and one secondary) with only a single database in the availability group. A Enterprise Edition não só permite que vários bancos de dados sejam configurados em um único grupo de disponibilidade, mas também pode ter até nove réplicas no total (uma primária, oito secundárias).Enterprise Edition not only allows multiple databases to be configured in a single availability group, but also can have up to nine total replicas (one primary, eight secondary). A Enterprise Edition também fornece outros benefícios opcionais, como réplicas secundárias legíveis, a capacidade de fazer backups de uma réplica secundária e muito mais.Enterprise edition also provides other optional benefits such as readable secondary replicas, the ability to make backups off of a secondary replica, and more.

Observação

O espelhamento de banco de dados, que foi preterido no SQL Server 2012, não está disponível na versão Linux do SQL Server e também não será ser adicionado.Database mirroring, which was deprecated in SQL Server 2012, is not available on the Linux version of SQL Server nor will it be added. Os clientes que ainda estão usando o espelhamento de banco de dados devem começar a planejar a migração para grupos de disponibilidade, que é a substituição de espelhamento de banco de dados.Customers still using database mirroring should start planning to migrate to availability groups, which is the replacement for database mirroring.

Quando se trata de disponibilidade, os grupos de disponibilidade podem fornecer um failover automático ou manual.When it comes to availability, availability groups can provide either automatic or manual failover. O failover automático poderá ocorrer se a movimentação de dados síncronos for configurada e o banco de dados na réplica primária e secundária estiverem em um estado sincronizado.Automatic failover can occur if synchronous data movement is configured and the database on the primary and secondary replica are in a synchronized state. Contanto que o ouvinte seja usado e o aplicativo usar uma versão posterior do .NET (3.5 com uma atualização ou 4.0 e posterior), o failover deverá ser tratado com pouco ou nenhum impacto para encerrar os usuários se um ouvinte for utilizado.As long as the listener is used and the application uses a later version of .NET (3.5 with an update, or 4.0 and above), the failover should be handled with minimal to no impact to end users if a listener is utilized. O failover para tornar a nova réplica primária uma réplica secundária pode ser configurado para ser automático ou manual e geralmente é medido em segundos.Failover to make a secondary replica the new primary replica can be configured to be automatic or manual, and generally is measured in seconds.

A lista a seguir destaca algumas diferenças de grupos de disponibilidade no Windows Server e no Linux:The list below highlights some differences with availability groups on Windows Server versus Linux:

  • Devido a diferenças na maneira que o cluster subjacente funciona no Linux e no Windows Server, todos os failovers (manuais ou automáticos) de grupos de disponibilidade são feitos por meio do cluster no Linux.Due to differences in the way the underlying cluster works on Linux and Windows Server, all failovers (manual or automatic) of availability groups are done via the cluster on Linux. Em implantações do grupo de disponibilidade com base no Windows Server, os failovers manuais devem ser feitos por meio do SQL Server.On Windows Server-based availability group deployments, manual failovers must be done via SQL Server. Os failovers automáticos são tratados pelo cluster subjacente no Windows Server e no Linux.Automatic failovers are handled by the underlying cluster on both Windows Server and Linux.
  • No SQL Server 2017, a configuração recomendada para grupos de disponibilidade no Linux será um mínimo de três réplicas.In SQL Server 2017, the recommended configuration for availability groups on Linux will be a minimum of three replicas. Isso ocorre devido à maneira que o clustering subjacente funciona.This is due to the way that the underlying clustering works. Uma melhor solução para uma configuração de duas réplicas virá após o lançamento.An improved solution for a two replica configuration will come post-release.
  • No Linux, o nome comum usado por cada ouvinte é definido no DNS e não no cluster, como no Windows Server.On Linux, the common name used by each listener is defined in DNS and not in the cluster like it is on Windows Server.

No SQL Server 2017, há alguns novos recursos e aprimoramentos para grupos de disponibilidade:In SQL Server 2017, there are some new features and enhancements to availability groups:

  • Tipos de clusterCluster types
  • REQUIRED_SECONDARIES_TO_COMMITREQUIRED_SECONDARIES_TO_COMMIT
  • Suporte aprimorado do Coordenador de Transação do Distribuidor (DTC) da Microsoft para configurações com base no Windows ServerEnhanced Microsoft Distributor Transaction Coordinator (DTC) support for Windows Server-based configurations
  • Outros cenários de expansão para bancos de dados de somente leitura (descritos posteriormente neste artigo)Additional scale out scenarios for read only databases (described later in this article)
Tipos de cluster do grupo de disponibilidade AlwaysOnAlways on availability group cluster types

O formulário de disponibilidade interna de clustering no Windows Server é habilitado por meio de um recurso chamado Clustering de Failover.The built-in availability form of clustering in Windows Server is enabled via a feature named Failover Clustering. Ele permite que você compile um WSFC para ser usado com um grupo de disponibilidade ou FCI.It allows you to build a WSFC to be used with an availability group or FCI. A integração de grupos de disponibilidade e FCIs é fornecida por DLLs de recurso com suporte a cluster entregues pelo SQL Server.Integration for availability groups and FCIs is provided by a cluster-aware resource DLLs shipped by SQL Server.

Cada distribuição Linux com suporte entrega sua própria versão da solução de custer Pacemaker.Each supported Linux distribution ships its own version of the Pacemaker cluster solution. O SQL Server 2017 no Linux dá suporte ao uso do Pacemaker.SQL Server 2017 on Linux supports the use of Pacemaker. O Pacemaker é uma solução de pilha aberta. Com ele, cada distribuição pode, então, ser integrada à sua pilha.Pacemaker is an open stack solution that each distribution can then integrate with their stack. Enquanto as distribuições fornecem o Pacemaker, ele não é tão integrado quanto o recurso do Clustering de Failover no Windows Server.While the distributions ship Pacemaker, it is not as integrated as the Failover Clustering feature in Windows Server.

Um WSFC e o Pacemaker são mais semelhantes do que diferentes.A WSFC and Pacemaker are more similar than different. Ambos fornecem uma maneira de obter servidores individuais e combiná-los em uma configuração para fornecer disponibilidade e têm conceitos de coisas como recursos, restrições (mesmo se implementadas de maneira diferente), failover e assim por diante.Both provide a way to take individual servers and combine them in a configuration to provide availability, and have concepts of things like resources, constraints (even if implemented differently), failover, and so on. A fim de dar suporte ao Pacemaker para as configurações do grupo de disponibilidade e da FCI, incluindo itens como failover automático, a Microsoft fornece o pacote mssql-server-ha, que é semelhante, mas não exatamente igual, aos DLLs de recurso em um WSFC para Pacemaker.To support Pacemaker for both availability group and FCI configurations including things like automatic failover, Microsoft provides the mssql-server-ha package, which is similar to, but not exactly the same as, the resource DLLs in a WSFC, for Pacemaker. Uma das diferenças entre um WSFC e o Pacemaker é que não há nenhum recurso de nome de rede no Pacemaker, que é o componente que ajuda a abstrair o nome do ouvinte (ou o nome da FCI) em um WSFC.One of the differences between a WSFC and Pacemaker is that there is no network name resource in Pacemaker, which is the component that helps to abstract the name of the listener (or the name of the FCI) on a WSFC. O DNS fornece essa resolução de nome no Linux.DNS provides that name resolution on Linux.

Por causa da diferença na pilha do cluster, algumas alterações precisam ser feitas para grupos de disponibilidade porque o SQL Server tem que lidar com alguns dos metadados que são nativamente tratados por um WSFC.Because of the difference in the cluster stack, some changes needed to be made for availability groups because SQL Server has to handle some of the metadata that is natively handled by a WSFC. A alteração mais [!IMPORTANT] é a introdução de um tipo de cluster para um grupo de disponibilidade.The most [!IMPORTANT] change is the introduction of a cluster type for an availability group. Isso é armazenado em sys. availability_groups nas colunas cluster_type e cluster_type_desc.This is stored in sys.availability_groups in the cluster_type and cluster_type_desc columns. Há três tipos de cluster:There are three cluster types:

  • WSFCWSFC
  • ExternalExternal
  • NoneNone

Todos os grupos de disponibilidade que exigem disponibilidade devem usar um cluster subjacente, o que no caso do SQL Server 2017 significa um WSFC ou Pacemaker.All availability groups that require availability must use an underlying cluster, which in the case of SQL Server 2017 means a WSFC or Pacemaker. Para grupos de disponibilidade com base no Windows Server que usam um WSFC subjacente, o tipo de cluster padrão é WSFC e não precisa ser definido.For Windows Server-based availability groups that use an underlying WSFC, the default cluster type is WSFC and does not need to be set. Para grupos de disponibilidade com base em Linux, ao criar o grupo de disponibilidade, o tipo de cluster deve ser definido como Externo.For Linux-based availability groups, when creating the availability group, the cluster type must be set to External. A integração com o Pacemaker é configurada depois que o grupo de disponibilidade for criado, enquanto em um WSFC isso é feito no momento da criação.The integration with Pacemaker is configured after the availability group is created, whereas on a WSFC, it is done at creation time.

Um tipo de cluster Nenhum pode ser usado com grupos de disponibilidade do Windows Server e do Linux.A cluster type of None can be used with both Windows Server and Linux availability groups. Definir o tipo de cluster para Nenhum significa que o grupo de disponibilidade não requer um cluster subjacente.Setting the cluster type to None means that the availability group does not require an underlying cluster. Isso significa que o SQL Server 2017 é a primeira versão do SQL Server a dar suporte a grupos de disponibilidade sem um cluster, mas a desvantagem é que não há suporte para essa configuração como uma solução de alta disponibilidade.This means SQL Server 2017 is the first version of SQL Server to support availability groups without a cluster, but the tradeoff is that this configuration is not supported as a high availability solution.

Importante

O SQL Server 2017 não permite a capacidade de alterar um tipo de cluster para um grupo de disponibilidade depois que ele é criado.SQL Server 2017 does not allow the ability to change a cluster type for an availability group after it is created. Isso significa que um grupo de disponibilidade não pode ser alternado de Nenhum para Externo ou WSFC ou vice-versa.This means that an availability group cannot be switched from None to External or WSFC, or vice versa.

Para aqueles que estão procurando apenas adicionar outras cópias de somente leitura de um banco de dados ou como o que um grupo de disponibilidade fornece para migração/atualizações, mas não deseja que seja vinculado à complexidade adicional de um cluster subjacente ou até mesmo a replicação, um grupo de disponibilidade com um tipo de cluster Nenhum é a solução perfeita.For those who are only looking to just add additional read only copies of a database, or like what an availability group provides for migration/upgrades but do not want to be tied to the additional complexity of an underlying cluster or even the replication, an availability group with a cluster type of None is a perfect solution. Para obter mais informações, consulte as seções Migrações e upgrades e Escala de leitura.For more information, see the sections Migrations and Upgrades and read-scale.

A captura de tela abaixo mostra o suporte para os diferentes tipos de cluster no SSMS.The screenshot below shows the support for the different kinds of cluster types in SSMS. Você deve estar executando a versão 17.1 ou posterior.You must be running version 17.1 or later. A captura de tela abaixo é da versão 17.2.The screenshot below is from version 17.2.

Opções do grupo de disponibilidade do SSMS

REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMITREQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT

O SQL Server 2016 aumentou o suporte para o número de réplicas síncronas de duas para três na Enterprise Edition.SQL Server 2016 increased support for the number of synchronous replicas from two to three in Enterprise Edition. No entanto, se uma réplica secundária foi sincronizada, mas a outra estava com problema, não havia como controlar o comportamento para informar à primária para aguardar a réplica com comportamento inadequado ou para permitir que ela prossiga.However, if one secondary replica was synchronized but the other was having a problem, there was no way to control the behavior to tell the primary to either wait for the misbehaving replica or to allow it to move on. Isso significa que a réplica primária, em algum momento, continuará a receber tráfego de gravação, mesmo que a réplica secundária não esteja em um estado sincronizado, o que significa que há perda de dados na réplica secundária.This means that the primary replica at some point would continue to receive write traffic even though the secondary replica would not be in a synchronized state, which means that there is data loss on the secondary replica. No SQL Server 2017, agora há uma opção para poder controlar o comportamento do que acontece quando há réplicas síncronas denominadas REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT.In SQL Server 2017, there is now an option to be able to control the behavior of what happens when there are synchronous replicas named REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT. A opção funciona da seguinte maneira:The option works as follows:

  • Há três valores possíveis: 0, 1 e 2There are three possible values: 0, 1, and 2
  • O valor é o número de réplicas secundárias que devem ser sincronizadas, que tem implicações para perda de dados, disponibilidade do grupo de disponibilidade e failoverThe value is the number of secondary replicas that must be synchronized, which has implications for data loss, availability group availability, and failover
  • Para WSFCs e um tipo de cluster Nenhum, o valor padrão é 0 e pode ser definido manualmente como 1 ou 2For WSFCs and a cluster type of None, the default value is 0, and can be manually set to 1 or 2
  • Para um tipo de cluster Externo, por padrão, o mecanismo de cluster definirá isso e poderá ser substituído manualmente.For a cluster type of External, by default, the cluster mechanism will set this and it can be overridden manually. Para três réplicas síncronas, o valor padrão será 1.For three synchronous replicas, the default value will be 1. No Linux, o valor para REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT é configurado no recurso do grupo de disponibilidade no cluster.On Linux, the value for REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT is configured on the availability group resource in the cluster. No Windows, ele é definido por meio do Transact-SQL.On Windows, it is set via Transact-SQL.

Um valor maior que 0 garante maior proteção de dados, porque se o número necessário de réplicas secundárias não estiver disponível, a primária não estará disponível até que seja resolvida.A value that is higher than 0 ensures higher data protection because if the required number of secondary replicas is not available, the primary will not be available until that is resolved. REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT também afeta o comportamento de failover, pois failover automático não poderá ocorrer se o número correto de réplicas secundárias não estiver no estado apropriado.REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT also affects failover behavior since automatic failover could not occur if the right number of secondary replicas were not in the proper state. No Linux, um valor de 0 não permitirá o failover automático, então no Linux, ao usar o síncrono com o failover automático, o valor deverá ser definido como maior que 0 para alcançar o failover automático.On Linux, a value of 0 will not allow automatic failover, so on Linux, when using synchronous with automatic failover, the value must be set higher than 0 to achieve automatic failover. 0 no Windows Server é o comportamento do SQL Server 2016 e anterior.0 on Windows Server is the SQL Server 2016 and earlier behavior.

Suporte aprimorado ao coordenador de transações distribuídas da MicrosoftEnhanced Microsoft distributed transaction coordinator support

Antes do SQL Server 2016, a única maneira de obter disponibilidade no SQL Server, para aplicativos que necessitam de transações distribuídas que usam o DTC nos bastidores, era ao implantar FCIs.Before SQL Server 2016, the only way to get availability in SQL Server for applications that require distributed transactions which use DTC underneath the covers was to deploy FCIs. Uma transação distribuída pode ser feita de duas maneiras:A distributed transaction can be done in one of two ways:

  • Uma transação que abrange mais de um banco de dados na mesma instância do SQL ServerA transaction that spans more than one database in the same SQL Server instance
  • Uma transação que abrange mais de uma instância do SQL Server ou possivelmente envolve uma fonte de dados que não seja do SQL ServerA transaction that spans more than one SQL Server instance or possibly involves a non-SQL Server data source

O SQL Server 2016 introduziu suporte parcial de DTC com grupos de disponibilidade que abordaram o último cenário.SQL Server 2016 introduced partial support for DTC with availability groups that covered the latter scenario. O SQL Server 2017 conclui a história ao oferecer suporte a ambos os cenários com o DTC.SQL Server 2017 completes the story by supporting both scenarios with DTC.

Outra melhoria no suporte DTC para grupos de disponibilidade é que, no SQL Server 2016, a habilitação do suporte para DTC para um grupo de disponibilidade só poderia ser realizada quando o grupo de disponibilidade fosse criado e não poderia ser adicionada posteriormente.Another enhancement to DTC support for availability groups is that in SQL Server 2016, enabling support for DTC to an availability group could only be done when the availability group was created, and could not be added later. No SQL Server 2017, o suporte DTC também pode ser adicionado a um grupo de disponibilidade depois de ser criado.In SQL Server 2017, DTC support can also be added to an availability group after it is created.

Observação

O suporte DTC só pode ser configurado para bancos de dados em instâncias do SQL Server com base no Windows Server.DTC support can only be configured for databases in Windows Server-based SQL Server instances. Se o DTC for um requisito para seu aplicativo, você deverá usar o Windows Server como o sistema operacional para implantação do SQL Server e não poderá usar o Linux.If DTC is an requirement for your application, you must use Windows Server as the OS for your SQL Server deployment, and cannot use Linux.

Instâncias do cluster de failover do AlwaysOnAlways on failover cluster instances

As instalações de cluster são um recurso do SQL Server desde a versão 6.5.Clustered installations have been a feature of SQL Server since version 6.5. As FCIs são um método comprovado para fornecer disponibilidade para toda a instalação do SQL Server, conhecida como uma instância.FCIs are a proven method of providing availability for the entire installation of SQL Server, known as an instance. Isso significa que tudo dentro da instância, incluindo bancos de dados, trabalhos do SQL Server Agent, servidores vinculados, entre outros, será movido para outro servidor se o servidor adjacente encontrar um problema.This means that everything inside the instance, including databases, SQL Server Agent jobs, linked servers, et al., will move to another server should the underlying server encounter a problem. Todas as FCIs exigem algum tipo de armazenamento compartilhado, mesmo se ele for fornecido através da rede.All FCIs require some sort of shared storage, even if it is provided via networking. Os recursos da FCI só poderão ser executados e controlados por um nó a qualquer momento.The FCI's resources can only be running and owned by one node at any given time. Na imagem abaixo, o primeiro nó do cluster controla a FCI, o que também significa que ele controla os recursos de armazenamento compartilhados associados a ele, indicados por uma linha sólida para o armazenamento.In the picture below, the first node of the cluster owns the FCI, which also means it owns the shared storage resources associated with it denoted by the solid line to the storage.

Instância de Cluster de Failover

Após um failover, a propriedade é alterada conforme a figura abaixo.After a failover, ownership changes as is seen in the picture below.

Após o Failover

Não há perda de dados com uma FCI, mas o armazenamento compartilhado subjacente é um ponto único de falha, pois há uma cópia dos dados.There is zero data loss with an FCI, but the underlying shared storage is a single point of failure since there is one copy of the data. As FCIs geralmente são combinadas com outro método de disponibilidade, como um grupo de disponibilidade ou o envio de logs, para ter cópias redundantes dos bancos de dados.FCIs are often combined with another availability method, such as an availability group or log shipping, to have redundant copies of databases. O método adicional implantado deve usar armazenamento fisicamente separado da FCI.The additional method deployed should use physically separate storage from the FCI. Quando a FCI executar o failover para outro nó, ela será interrompida em um nó e iniciará em outro, o que não é muito diferente de desligar um servidor e ligá-lo.When the FCI fails over to another node, it stops on one node and starts on another, not unlike powering a server off and turning it on. Uma FCI passa pelo processo de recuperação normal, o que significa que todas as transações que precisam que o roll forward seja efetuado serão revertidas, assim como todas as transações que estão incompletas.An FCI goes through the normal recovery process, meaning any transactions that need to be rolled forward will be, and any transactions that are incomplete will be rolled back. Portanto, o banco de dados é consistente de um ponto de dados até o momento da falha ou do failover manual, portanto, sem perda de dados.Therefore, the database is consistent from a data point to the time of the failure or manual failover, hence no data loss. Os bancos de dados estão disponíveis somente após a conclusão da recuperação, portanto o tempo de recuperação dependerá de muitos fatores e geralmente será maior do que a execução de um failover em um grupo de disponibilidade.Databases are only available after recovery is complete, so recovery time will depend on many factors, and will generally be longer than failing over an availability group. A desvantagem é que, ao fazer failover em um grupo de disponibilidade, poderá haver tarefas adicionais necessárias para tornar um banco de dados utilizável, como a habilitação de uma tarefa de trabalhos do SQL Server Agent.The tradeoff is that when you fail over an availability group, there may be additional tasks required to make a database usable, such as enabling a SQL Server Agent jobs job.

Como um grupo de disponibilidade, as FCIs resumem qual nó do cluster subjacente está hospedando-o.Like an availability group, FCIs abstract which node of the underlying cluster is hosting it. Uma FCI sempre mantém o mesmo nome.An FCI always retains the same name. Os aplicativos e usuários finais nunca se conectam aos nós. O nome exclusivo atribuído à FCI é usado.Applications and end users never connect to the nodes; the unique name assigned to the FCI is used. Uma FCI pode participar de um grupo de disponibilidade como uma das instâncias que hospedam uma réplica primária ou secundária.An FCI can participate in an availability group as one of the instances hosing either a primary or secondary replica.

A lista a seguir destaca algumas diferenças de FCIs no Windows Server e no Linux:The list below highlights some differences with FCIs on Windows Server versus Linux:

  • No Windows Server, uma FCI faz parte do processo de instalação.On Windows Server, an FCI is part of the installation process. Uma FCI no Linux é configurada após a instalação do SQL Server.An FCI on Linux is configured after installing SQL Server.
  • O Linux dá suporte a apenas uma única instalação do SQL Server por host, para que todas as FCIs sejam uma instância padrão.Linux only supports a single installation of SQL Server per host, so all FCIs will be a default instance. O Windows Server dá suporte a até 25 FCIs por WSFC.Windows Server supports up to 25 FCIs per WSFC.
  • O nome comum usado pelas FCIs no Linux é definido no DNS e deve ser o mesmo que o recurso criado para a FCI.The common name used by FCIs in Linux is defined in DNS, and should be the same as the resource created for the FCI.

Envio de logsLog shipping

Se os objetivos do ponto de recuperação e do tempo de recuperação forem mais flexíveis ou os bancos de dados não forem considerados altamente de missão crítica, o envio de logs será outro recurso de disponibilidade comprovado no SQL Server.If recovery point and recovery time objectives are more flexible, or databases are not considered to be highly mission critical, log shipping is another proven availability feature in SQL Server. Com base nos backups nativos do SQL Server, o processo de envio de logs automaticamente gera os backups de log de transações, copia-os em uma ou mais instâncias conhecidas como uma espera passiva e aplica automaticamente os backups de log de transações a esse modo de espera.Based on SQL Server's native backups, the process for log shipping automatically generates transaction log backups, copies them to one or more instances known as a warm standby, and automatically applies the transaction log backups to that standby. O envio de logs usa trabalhos do SQL Server Agent para automatizar o processo de backup, cópia e aplicação dos backups de log de transações.Log shipping uses SQL Server Agent jobs to automate the process of backing up, copying, and applying the transaction log backups.

Envio de logs

Possivelmente, a maior vantagem de usar o envio de logs, de alguma forma, é que ele é responsável por erro humano.Arguably the biggest advantage of using log shipping in some capacity is that it accounts for human error. O aplicativo dos logs de transações pode estar atrasado.The application of transaction logs can be delayed. Portanto, se alguém emitir algo parecido com uma ATUALIZAÇÃO sem uma cláusula WHERE, o modo em espera poderá não ter a alteração, então você poderá alternar para ela enquanto repara o sistema primário.Therefore, if someone issues something like an UPDATE without a WHERE clause, the standby may not have the change so you could switch to that while you repair the primary system. Enquanto o envio de logs é fácil de configurar, a troca do primário para um estado de espera passiva, conhecido como uma alteração de função, é sempre manual.While log shipping is easy to configure, switching from the primary to a warm standby, known as a role change, is always manual. Uma alteração de função é iniciada por meio do Transact-SQL e, como um grupo de disponibilidade, todos os objetos não capturados no log de transações devem ser sincronizados manualmente.A role change is initiated via Transact-SQL, and like an availability group, all objects not captured in the transaction log must be manually synchronized. O envio de logs também precisa ser configurado por banco de dados, enquanto um único grupo de disponibilidade pode conter vários bancos de dados.Log shipping also needs to be configured per database, whereas a single availability group can contain multiple databases. Ao contrário de um grupo de disponibilidade ou FCI, o envio de logs não tem nenhuma abstração para uma alteração de função.Unlike an availability group or FCI, log shipping has no abstraction for a role change. Os aplicativos devem ser capazes de lidar com isso.Applications must be able to handle this. Podem ser empregadas técnicas como um alias DNS (CNAME), mas há vantagens e desvantagens, como o tempo necessário que o DNS leva para atualizar após a troca.Techniques such as a DNS alias (CNAME) could be employed, but there are pros and cons, such as the time it takes for DNS to refresh after the switch.

Recuperação de desastreDisaster recovery

Quando seu local de disponibilidade primária passa por um evento catastrófico, como um terremoto ou uma enchente, a empresa deve estar preparada para que seus sistemas fiquem online em outro lugar.When your primary availability location experiences a catastrophic event like an earthquake or flood, the business must be prepared to have its systems come online elsewhere. Esta seção abordará como os recursos de disponibilidade do SQL Server podem auxiliar nessa continuidade dos negócios.This section will cover how the SQL Server availability features can assist with business continuity.

Grupos de disponibilidade AlwaysOnAlways on availability groups

Um dos benefícios dos grupos de disponibilidade é que a alta disponibilidade e a recuperação de desastres podem ser configuradas usando um único recurso.One of the benefits of availability groups is that both high availability and disaster recovery can be configured using a single feature. Sem a necessidade de garantir que o armazenamento compartilhado também é altamente disponível, é mais fácil ter réplicas que são locais em um data center para alta disponibilidade e remotas em outros dados centers para recuperação de desastres, cada uma com armazenamento separado.Without the requirement for ensuring that shared storage is also highly available, it is much easier to have replicas that are local in one data center for high availability, and remote ones in other data centers for disaster recovery each with separate storage. Ter cópias adicionais do banco de dados é a desvantagem para garantir redundância.Having additional copies of the database is the tradeoff for ensuring redundancy. Um exemplo de um grupo de disponibilidade que abrange vários data centers é mostrado abaixo.An example of an availability group that spans multiple data centers is shown below. Uma réplica primária é responsável por manter todas as réplicas secundárias sincronizadas.One primary replica is responsible for keeping all secondary replicas synchronized.

Grupo de disponibilidade

Fora de um grupo de disponibilidade com um tipo de cluster Nenhum, um grupo de disponibilidade requer que todas as réplicas sejam parte do mesmo cluster subjacente, seja um WSFC ou Pacemaker.Outside of an availability group with a cluster type of none, an availability group requires that all replicas are part of the same underlying cluster whether it is a WSFC or Pacemaker. Isso significa que, na figura acima, o WSFC é estendido para trabalhar em dois data centers diferentes, o que adiciona complexidade.This means that in the picture above, the WSFC is stretched to work in two different data centers which adds complexity. independentemente da plataforma (Windows Server ou Linux).regardless of the platform (Windows Server or Linux). Transferir clusters em distância adiciona complexidade.Stretching clusters across distance adds complexity. Introduzido no SQL Server 2016, um grupo de disponibilidade distribuído permite que um grupo de disponibilidade abranja grupos de disponibilidade configurados em diferentes clusters.Introduced in SQL Server 2016, a distributed availability group allows an availability group to span availability groups configured on different clusters. Isso separa a necessidade de ter os nós todos participando no mesmo cluster, o que facilita a configuração de recuperação de desastres.This decouples the requirement to have the nodes all participate in the same cluster, which makes configuring disaster recovery much easier. Para obter mais informações sobre grupos de disponibilidade distribuídos, veja Grupos de disponibilidade distribuídos.For more information on distributed availability groups, see Distributed availability groups.

Grupos de Disponibilidade Distribuídos

Instâncias do cluster de failover do AlwaysOnAlways on failover cluster instances

As FCIs podem ser usadas para recuperação de desastres.FCIs can be used for disaster recovery. Assim como acontece com um grupo de disponibilidade normal, o mecanismo do cluster subjacente deve ser estendido para todos os locais que adicionam complexidade.As with a normal availability group, the underlying cluster mechanism must also be extended to all locations which adds complexity. Há uma consideração adicional sobre as FCIs: o armazenamento compartilhado.There is an additional consideration for FCIs: the shared storage. Os mesmos discos precisam estar disponíveis em sites primários e secundários, então um método externo, como a funcionalidade fornecida pelo fornecedor de armazenamento na camada de hardware ou o uso da Réplica de armazenamento no Windows Server, é necessário para garantir que os discos usados pela FCI existam em outro lugar.The same disks need to be available in the primary and secondary sites, so an external method such as functionality provided by the storage vendor at the hardware layer or using storage Replica in Windows Server, is required to ensure that the disks used by the FCI exist elsewhere.

FCI do AlwaysOn

Envio de logsLog shipping

O envio de logs é um dos métodos mais antigos para fornecer recuperação de desastres aos bancos de dados do SQL Server.Log shipping is one of the oldest methods of providing disaster recovery for SQL Server databases. O envio de logs é geralmente usado em conjunto com grupos de disponibilidade e FCIs para fornecer recuperação de desastres mais simples e econômica na qual outras opções podem ser difíceis devido ao ambiente, habilidades administrativas ou orçamento.Log shipping is often used in conjunction with availability groups and FCIs to provide cost-effective and simpler disaster recovery where other options may be challenging due to environment, administrative skills, or budget. Similar à história de alta disponibilidade para envio de logs, muitos ambientes atrasarão o carregamento de um log de transações para responsabilizar por erro humano.Similar to the high availability story for log shipping, many environments will delay the loading of a transaction log to account for human error.

Migrações e atualizaçõesMigrations and upgrades

Ao implantar novas instâncias ou atualizar as antigas, uma empresa não pode tolerar interrupção longa.When deploying new instances or upgrading old ones, a business cannot tolerate long outage. Esta seção abordará como os recursos de disponibilidade do SQL Server podem ser usados para minimizar o tempo de inatividade em uma alteração de arquitetura planejada, troca de servidor, alteração da plataforma (como Windows Server para Linux ou vice-versa) ou durante a aplicação de patch.This section will discuss how the availability features of SQL Server can be used to minimize the downtime in a planned architecture change, server switch, platform change (such as Windows Server to Linux or vice versa), or during patching.

Observação

Outros métodos, como o uso de backups e a restauração deles em outro lugar, também podem ser usados para migrações e atualizações.Other methods, such as using backups and restoring them elsewhere, can also be used for migrations and upgrades. Eles não são abordados neste documento.They are not discussed in this paper.

Grupos de disponibilidade AlwaysOnAlways on availability groups

Uma instância existente, que contém um ou mais grupos de disponibilidade, pode ser atualizada no local para o SQL Server 2017.An existing instance containing one or more availability groups can be upgraded in place to SQL Server 2017. Enquanto isso requer algum tempo de inatividade, com a quantidade certa de planejamento, ela pode ser minimizada.While this will require some amount of downtime, with the right amount of planning, it can be minimized.

Se a meta é migrar para novos servidores e não alterar a configuração (incluindo o sistema operacional ou a versão do SQL Server), esses servidores podem ser adicionados como nós ao cluster subjacente existente e adicionados ao grupo de disponibilidade.If the goal is to migrate to new servers and not change the configuration (including the operating system or SQL Server version), those servers could be added as nodes to the existing underlying cluster and added to the availability group. Depois que a réplica ou réplicas estiverem no estado correto, poderá ocorrer um failover manual para um novo servidor e, em seguida, os antigos poderão ser removidos do grupo de disponibilidade e, por fim, encerrados.Once the replica or replicas are in the right state, a manual failover could occur to a new server, and then the old ones could be removed from the availability group, and ultimately, decommissioned.

Os grupos de disponibilidade distribuídos também são outro método para migrar para uma nova configuração ou atualizar o SQL Server.Distributed AGs are also another method to migrate to a new configuration or upgrade SQL Server. Como um grupo de disponibilidade distribuído dá suporte a diferentes grupos de disponibilidade subjacentes em arquiteturas diferentes, por exemplo, você poderá alterar do SQL Server 2016 em execução no Windows Server 2012 R2 para o SQL Server 2017 em execução no Windows Server 2016.Because a distributed AG supports different underlying AGs on different architectures, for example, you could change from SQL Server 2016 running on Windows Server 2012 R2 to SQL Server 2017 running on Windows Server 2016.

Grupo de Disponibilidade Distribuído

Por fim, os grupos de disponibilidade com um tipo de cluster Nenhum também podem ser usados para a migração ou atualização.Finally, availability groups with a cluster type of None can also be used for migration or upgrading. Você não pode misturar e corresponder os tipos de cluster em uma configuração de grupo de disponibilidade comum, então todas as réplicas precisariam ser do tipo Nenhum.You cannot mix and match cluster types in a typical availability group configuration, so all replicas would need to be a type of None. Um grupo de disponibilidade distribuído pode ser usado para estender os grupos de disponibilidade configurados com tipos de cluster diferentes.A distributed availability group can be used to span availability groups configured with different cluster types. Esse método também tem suporte em todas as plataformas de sistema operacional diferentes.This method is also supported across the different OS platforms.

Todas as variantes de grupos de disponibilidade para as migrações e atualizações permitem que a parte mais demorada do trabalho seja feita ao longo do tempo – a sincronização de dados.All variants of availability groups for migrations and upgrades allow the most time consuming portion of the work to be done over time - data synchronization. Quando chegar a hora de iniciar a troca para a nova configuração, a transferência será uma breve interrupção versus um longo período de tempo de inatividade em que todo o trabalho, incluindo a sincronização de dados, precisa ser concluído.When it comes time to initiate the switch to the new configuration, the cutover will be a brief outage versus one long period of downtime where all the work, including data synchronization, would need to be completed.

Os grupos de disponibilidade podem fornecer o tempo de inatividade mínimo durante a aplicação de patches do sistema operacional subjacente ao fazer failover manual da réplica primária para a secundária enquanto a aplicação de patch estiver sendo concluída.Availability groups can provide minimal downtime during patching of the underlying OS by manually failing over the primary to a secondary replica while the patching is being completed. Da perspectiva do sistema operacional, isso seria mais comum no Windows Server, já que frequentemente, mas nem sempre, a manutenção do sistema operacional subjacente pode exigir uma reinicialização.From an operating system perspective, doing this would be more common on Windows Server since often, but not always, servicing the underlying OS may require a reboot. Às vezes, a aplicação de patch no Linux precisa de uma reinicialização, mas pode ser pouco frequente.Patching Linux sometimes needs a reboot, but it can be infrequent.

Aplicar patch nas instâncias do SQL Server que participam de um grupo de disponibilidade também pode minimizar o tempo de inatividade dependendo da complexidade da arquitetura do grupo de disponibilidade.Patching SQL Server instances participating in an availability group can also minimize downtime depending on how complex the availability group architecture is. Para aplicar patch em servidores que participam de um grupo de disponibilidade, uma réplica secundária será corrigida primeiro.To patch servers participating in an availability group, a secondary replica is patched first. Depois que o número correto de réplicas for corrigido, a réplica primária terá o failover feito manualmente para outro nó a fim de fazer a atualização.Once the right number of replicas are patched, the primary replica is manually failed over to another node to do the upgrade. Qualquer réplica secundária restante, neste ponto, também pode ser atualizada.Any remaining secondary replicas at that point can be upgraded, too.

Instâncias do cluster de failover do AlwaysOnAlways on failover cluster instances

As FCIs sozinhas não conseguem ajudar a migração ou a atualização tradicionais. Um grupo de disponibilidade ou o envio de logs precisam ser configurados para os bancos de dados na FCI e todos os outros objetos considerados.FCIs on their own cannot assist with a traditional migration or upgrade; an availability group or log shipping would have to be configured for the databases in the FCI and all other objects accounted for. No entanto, as FCIs no Windows Server ainda são uma opção popular para quando os Windows Servers subjacentes precisam ser corrigidos.However, FCIs under Windows Server are still a popular option for when the underlying Windows Servers need to be patched. Um failover manual pode ser iniciado, o que significa uma breve interrupção, em vez de ter a instância completamente indisponível o tempo todo em que o Windows Server está sendo corrigido.A manual failover can be initiated, which means a brief outage instead of having the instance completely unavailable for the entire time Windows Server is being patched. Uma FCI pode ser atualizada no local para o SQL Server 2017.An FCI can be upgraded in place to SQL Server 2017. Para obter informações, consulte Atualizar uma Instância de Cluster de Failover do SQL Server.For information, see Upgrade a SQL Server Failover Cluster Instance.

Envio de logsLog shipping

O envio de logs ainda é uma opção popular para migrar e atualizar bancos de dados.Log shipping is still a popular option to both migrate and upgrade databases. Semelhante a grupos de disponibilidade, mas desta vez usando o log de transações como o método de sincronização, a propagação de dados pode ser iniciada antes da troca do servidor.Similar to availability groups, but this time using the transaction log as the synchronization method, the data propagation can be started well in advance of the server switch. No momento da troca, depois que todo o tráfego for interrompido na origem, um log de transações final precisará ser obtido, copiados e aplicado à nova configuração.At the time of the switch, once all traffic is stopped at the source, a final transaction log would need to be taken, copied, and applied to the new configuration. Nesse momento, o banco de dados pode ser colocado online.At that point, the database can be brought online. O envio de logs geralmente é mais tolerante com redes mais lentas e, por mais que a troca possa ser um pouco maior do que a feita usando um grupo de disponibilidade ou um grupo de disponibilidade distribuído, ele geralmente é medido em minutos, não em horas, dias ou semanas.Log shipping is often more tolerant of slower networks, and while the switch may be slightly longer than one done using an availability group or a distributed availability group, it is usually measured in minutes - not hours, days, or weeks.

Semelhante aos grupos de disponibilidade, o envio de logs pode fornecer uma maneira para alternar para outro servidor no caso de aplicação de patch.Similar to availability groups, log shipping can provide a way to switch to another server in the event of patching.

Outros métodos de implantação do SQL Server e disponibilidadeOther SQL Server deployment methods and availability

Há dois outros métodos de implantação do SQL Server no Linux: contêineres e uso do Azure (ou outro provedor de nuvem pública).There are two other deployment methods for SQL Server on Linux: containers and using Azure (or another public cloud provider). A necessidade geral para disponibilidade, como apresentado neste documento, existe independentemente de como o SQL Server é implantado.The general need for availability as presented throughout this paper exists regardless of how SQL Server is deployed. Esses dois métodos têm algumas considerações especiais quando se trata de tornar o SQL Server altamente disponível.These two methods have some special considerations when it comes to making SQL Server highly available.

Contêineres usando o Docker são uma nova maneira de implantar o SQL Server, tanto no Windows Server quanto no Linux.Containers using Docker are a new way of deploying SQL Server, either for Windows Server or Linux. Um contêiner é uma imagem completa do SQL Server que está para ser executada.A container is a complete image of SQL Server that is ready to run. No entanto, no momento não há suporte nativo para o clustering e, desta forma, alta disponibilidade direta ou recuperação de desastres.However, there is currently no native support for clustering, and thus, direct high availability or disaster recovery. No momento, as opções para disponibilizar os bancos de dados do SQL Server usando os contêineres seriam o envio de logs, backup e restauração.Currently, the options to make SQL Server databases available using containers would be log shipping and backup and restore. Enquanto um grupo de disponibilidade com um tipo de cluster Nenhum pode ser configurado, conforme observado anteriormente, ele não é considerado uma configuração de disponibilidade verdadeira.While an availability group with a cluster type of None can be configured, as noted earlier, it is not considered a true availability configuration. A Microsoft está analisando maneiras para habilitar grupos de disponibilidade ou FCIs usando contêineres.Microsoft is looking at ways to enable availability groups or FCIs using containers.

Se você estiver usando contêineres hoje, se o contêiner estiver perdido, dependendo da plataforma do contêiner, ele poderá ser implantado novamente e anexado ao armazenamento compartilhado que foi usado.If you are using containers today, if the container is lost, depending on the container platform, it can be deployed again and attached to the shared storage that was used. Alguns desses mecanismos são fornecidos pelo orquestrador de contêiner.Some of this mechanism is provided by the container orchestrator. Enquanto isso fornece resiliência, haverá algum tempo de inatividade associado à recuperação de banco de dados e não estará realmente altamente disponível como estaria se usasse um grupo de disponibilidade ou FCI.While this does provide some resiliency, there will be some downtime associated with database recovery and is not truly highly available as it would be if using an availability group or FCI.

As máquinas virtuais Linux IaaS podem ser implantadas com o SQL Server instalado usando o Azure.Linux IaaS virtual machines can be deployed with SQL Server installed using Azure. Assim como as instalações baseadas localmente, uma instalação com suporte requer o uso de STONITH (Shoot the Other Node in the Head), que é externo ao Pacemaker em si.As with on premises-based installations, a supported installation requires the use of STONITH (Shoot the Other Node in the Head) which is external to Pacemaker itself. O STONITH é fornecido por meio de agentes de disponibilidade de isolamento.STONITH is provided via fencing availability agents. Algumas distribuições os enviam como parte da plataforma, outras contam com fornecedores externos de hardware e software.Some distributions ship them as part of the platform, others rely on external hardware and software vendors. Verifique sua distribuição Linux preferencial para ver quais formatos de STONITH são fornecidos para que uma solução com suporte seja implantada na nuvem pública.Check with your preferred Linux distribution to see what forms of STONITH are provided so that a supported solution can be deployed in the public cloud.

Interoperabilidade de distribuição do Linux e de multiplataformaCross-platform and Linux distribution interoperability

Como o SQL Server agora tem suporte no Windows Server e Linux, esta seção aborda os cenários de como eles funcionam juntos para disponibilidade, além de outras finalidades, bem como a história para soluções que vão incorporar mais de uma distribuição do Linux.With SQL Server now supported on both Windows Server and Linux, this section covers the scenarios of how they can work together for availability in addition to other purposes, as well as the story for solutions that will incorporate more than one Linux distribution.

Antes de abordar os cenários de interoperabilidade e de multiplataforma, dois fatos precisam ser declarados:Before covering the cross-platform and interoperability scenarios, two facts need to be stated:

  • Não há nenhum cenário no qual uma FCI com base em WSFC ou um grupo de disponibilidade funcionarão com um grupo de disponibilidade ou uma FCI com base em Linux diretamente.There are no scenarios where a WSFC-based FCI or availability group will work with a Linux-based FCI or availability group directly. Um WSFC não pode ser estendido por um nó do Pacemaker e vice-versa.A WSFC cannot be extended by a Pacemaker node and vice versa.
  • Não há suporte para a combinação de distribuições do Linux com FCIs ou com um grupo de disponibilidade que tem um tipo de cluster Externo.Mixing Linux distributions is not supported with FCIs or an availability group that has a cluster type of External. Todas as réplicas do grupo de disponibilidade neste cenário devem ser configuradas não apenas com a mesma distribuição de Linux, mas também com a mesma versão.All availability group replicas in that scenario must be configured not only the same Linux distribution, but also the same version. As duas formas com suporte que o SQL Server pode operar entre as duas plataformas ou várias distribuições do Linux são grupos de disponibilidade e envio de logs.The two supported ways that SQL Server can operate across the two platforms or multiple distributions of Linux are availability groups and log shipping.

Grupos de disponibilidade distribuídosDistributed availability groups

Os grupos de disponibilidade distribuídos são projetados para abranger as configurações do grupo de disponibilidade, esses dois clusters subjacentes abaixo dos grupos de disponibilidade sendo duas diferentes distribuições do Linux e de WSFCs ou uma em um WSFC e a outra no Linux.Distributed availability groups are designed to span availability group configurations, whether those two underlying clusters underneath the availability groups are two different WSFCs, Linux distributions, or one on a WSFC and the other on Linux. Um grupo de disponibilidade distribuído será o principal método para ter uma solução de plataforma cruzada.A distributed availability group will be the primary method of having a cross platform solution. Um grupo de disponibilidade distribuído também é a principal solução para migrações, como converter de uma infraestrutura do SQL Server com base no Windows Server para uma com base em Linux, se isso for o que sua empresa deseja fazer.A distributed availability group is also the primary solution for migrations such as converting from a Windows Server-based SQL Server infrastructure to a Linux-based one if that is what your company wants to do. Conforme observado acima, os grupos de disponibilidade e, especialmente, os grupos de disponibilidade distribuídos, devem minimizar o tempo que um aplicativo estaria indisponível para uso.As noted above, availability groups, and especially distributed availability groups, would minimize the time that an application would be unavailable for use. Um exemplo de um grupo de disponibilidade distribuído que abrange um WSFC e o Pacemaker é mostrado abaixo.An example of a distributed availability group that spans a WSFC and Pacemaker is shown below.

Grupos de Disponibilidade Distribuídos

Se um grupo de disponibilidade estiver configurado com um tipo de cluster Nenhum, isso poderá abranger o Windows Server e o Linux, bem como várias distribuições do Linux.If an availability group is configured with a cluster type of None, it can span Windows Server and Linux as well as multiple Linux distributions. Como esta não é uma configuração de alta disponibilidade verdadeira, ela não deve ser usada para implantações de missão crítica, mas para cenários de escala de leitura ou migração/atualização.Since this is not a true high availability configuration, it should not be used for mission critical deployments, but for read-scale or migration/upgrade scenarios.

Envio de logsLog shipping

Como o envio de logs baseia-se somente no backup e na restauração, e não existem diferenças nos bancos de dados, estruturas de arquivos, entre outros, para o SQL Server no Windows Server em comparação com o SQL Server no Linux.Since log shipping is just based on backup and restore, and there are no differences in the databases, file structures, etc., for SQL Server on Windows Server versus SQL Server on Linux. Isso significa que o envio de logs pode ser configurado entre uma instalação do SQL Server com base no Windows Server e uma do Linux, bem como entre distribuições do Linux.This means that log shipping can be configured between a Windows Server-based SQL Server installation and a Linux one as well as between distributions of Linux. Todo o resto permanece o mesmo.Everything else remains the same. A única ressalva é que o envio de logs, assim como um grupo de disponibilidade, não funciona quando a fonte estiver em uma versão principal superior do SQL Server em relação a um destino que é uma versão inferior do SQL Server.The only caveat is that log shipping, just like an availability group, cannot work when the source is at a higher SQL Server major version against a target that is at a lower version of SQL Server.

Escala de leituraread-scale

Desde seu lançamento no SQL Server 2012, as réplicas secundárias tiveram a capacidade de serem usadas para consultas somente leitura.Since their introduction in SQL Server 2012, secondary replicas have had the ability to be used for read-only queries. Há duas maneiras que podem ser obtidas com um grupo de disponibilidade: permitindo o acesso direto ao secundário, bem como configurando o roteamento de somente leitura, que requer o uso do ouvinte.There are two ways that can be achieved with an availability group: by allowing direct access to the secondary as well as configuring read only routing which requires the use of the listener. O SQL Server 2016 introduziu a capacidade de balancear carga de conexões de somente leitura por meio do ouvinte usando um algoritmo de round robin, permitindo que as solicitações de somente leitura sejam distribuídas em todas as réplicas legíveis.SQL Server 2016 introduced the ability to load balance read-only connections via the listener using a round robin algorithm, allowing read-only requests to be spread across all readable replicas.

Observação

As réplicas secundárias legíveis são um recurso apenas na Enterprise Edition e cada instância que hospeda uma réplica legível precisaria de uma licença do SQL Server.Readable secondary replicas is a feature only in Enterprise Edition, and each instance hosting a readable replica would need a SQL Server license.

O dimensionamento de cópias legíveis de um banco de dados por meio de grupos de disponibilidade foi introduzido com grupos de disponibilidade distribuídos no SQL Server 2016.Scaling readable copies of a database via availability groups was first introduced with distributed availability groups in SQL Server 2016. Isso permitiria que as empresas tivessem cópias de somente leitura do banco de dados não apenas localmente, mas regional e globalmente com uma quantidade mínima de configuração e reduziria o tráfego de rede e a latência ao executar as consultas localmente.This would allow companies to have read-only copies of the database not only locally, but regionally and globally with a minimal amount of configuration and reduce network traffic and latency by having queries executed locally. Cada réplica primária de um grupo de disponibilidade pode propagar dois grupos de disponibilidade, mesmo se não for a cópia de leitura/gravação completa, então cada grupo de disponibilidade distribuído poderá oferecer suporte a até 27 cópias dos dados que podem ser lidos.Each primary replica of an availability group can seed two other availability groups even if it is not the fully read/write copy, so each distributed availability group can support up to 27 copies of the data that are readable.

Grupos de Disponibilidade Distribuídos

Começando com o SQL Server 2017, é possível criar uma solução de somente leitura quase em tempo real com grupos de disponibilidade configurados com um tipo de cluster Nenhum.Starting with SQL Server 2017, It is possible to create a near-real time, read-only solution with availability groups configured with a cluster type of None. Se a meta é usar grupos de disponibilidade para réplicas secundárias legíveis e não de disponibilidade, isso elimina a complexidade do uso de um WSFC ou Pacemaker, além de oferecer os benefícios legíveis de um grupo de disponibilidade em um método de implantação mais simples.If the goal is to use availability groups for readable secondary replicas and not availability, doing this removes the complexity of using a WSFC or Pacemaker, and gives the readable benefits of an availability group in a simpler deployment method.

A única principal ressalva é que, devido a nenhum cluster subjacente com um tipo de cluster Nenhum, configurar o roteamento somente leitura é um pouco diferente.The only major caveat is that due to no underlying cluster with a cluster type of None, configuring read only routing is a little different. Da perspectiva do SQL Server, um ouvinte ainda é necessário para encaminhar as solicitações, embora não exista nenhum cluster.From a SQL Server perspective, a listener is still required to route the requests even though there is no cluster. Em vez de configurar um ouvinte tradicional, o endereço IP ou o nome da réplica primária são usados.Instead of configuring a traditional listener, the IP address or name of the primary replica is used. A réplica primária é, então, usada para direcionar as solicitações de somente leitura.The primary replica is then used to route the read only requests.

Uma espera passiva para envio de logs pode tecnicamente ser configurada para uso legível ao restaurar o banco de dados WITH STANDBY.A log shipping warm standby can technically be configured for readable usage by restoring the database WITH STANDBY. No entanto, como os logs de transações exigem o uso exclusivo do banco de dados para restauração, isso significa que usuários não podem estar acessando o banco de dados enquanto isso acontece.However, because the transaction logs require exclusive use of the database for restoration, it means that users cannot be accessing the database while that happens. Isso tornará o envio de logs uma solução abaixo do ideal, especialmente se os dados quase em tempo real forem necessários.This makes log shipping a less than ideal solution - especially if near real-time data is required.

Uma coisa que deve ser observada em todos os cenários de escala de leitura com grupos de disponibilidade é que, ao contrário de usar a replicação transacional na qual todos os dados são dinâmicos, cada réplica secundária não está em um estado no qual os índices exclusivos podem ser aplicados, a réplica é uma cópia exata da primária.One thing that should be noted for all read-scale scenarios with availability groups is that unlike using transactional replication where all of the data is live, each secondary replica is not in a state where unique indexes can be applied, the replica is an exact copy of the primary. Isso significa que, se todos os índices forem necessários para relatórios ou os dados precisarem ser manipulados, isso deverá ser feito em bancos de dados na réplica primária.This means that if any indexes are required for reporting or data needs to be manipulated, it must be done on the database(s) on the primary replica. Se você precisar dessa flexibilidade, a replicação será uma solução melhor para dados legíveis.If you need that flexibility, replication is a better solution for readable data.

ResumoSummary

As instâncias e os bancos de dados do SQL Server 2017 podem se tornar altamente disponíveis usando os mesmos recursos no Windows Server e no Linux.Instances and databases of SQL Server 2017 can be made highly available using the same features on both Windows Server and Linux. Além de cenários de disponibilidade padrão de recuperação de desastres e alta disponibilidade local, o tempo de inatividade associado a migrações e atualizações pode ser minimizado com os recursos de disponibilidade do SQL Server.Besides standard availability scenarios of local high availability and disaster recovery, downtime associated with upgrades and migrations can be minimized with the availability features in SQL Server. Os grupos de disponibilidade também podem fornecer cópias adicionais de um banco de dados como parte da mesma arquitetura para expandir cópias legíveis.Availability groups can also provide additional copies of a database as part of the same architecture to scale out readable copies. Se você estiver implantando uma nova solução usando o SQL Server 2017 ou considerando fazer uma atualização, o SQL Server 2017 tem a disponibilidade e a confiabilidade que você precisa.Whether you are deploying a new solution using SQL Server 2017 or considering an upgrade, SQL Server 2017 has the availability and reliability you require.