Elevata disponibilità e protezione dei dati per le configurazioni di gruppo di disponibilitàHigh availability and data protection for availability group configurations

In questo articolo è configurazioni di distribuzione supportate per i gruppi di disponibilità di SQL Server Always On su server Linux.This article presents supported deployment configurations for SQL Server Always On availability groups on Linux servers. Un gruppo di disponibilità supporta la disponibilità elevata e la protezione dei dati.An availability group supports high availability and data protection. Il rilevamento degli errori automatico, failover automatico e la riconnessione dopo il failover trasparente garantire un'elevata disponibilità.Automatic failure detection, automatic failover, and transparent reconnection after failover provide high availability. Le repliche sincronizzate forniscono la protezione dei dati.Synchronized replicas provide data protection.

Nota

Oltre a disponibilità elevata e la protezione dei dati, un gruppo di disponibilità può anche fornire il ripristino di emergenza, piattaforma migrazione tra e lettura di scalabilità orizzontale.In addition to high availability and data protection, an availability group can also provide disaster recovery, cross platform migration, and read scale-out. Questo articolo illustra principalmente le implementazioni per la protezione dati e la disponibilità elevata.This article primarily discusses implementations for high availability and data protection.

Con Windows Server failover clustering, una configurazione comune per la disponibilità elevata utilizza due repliche sincrone e un condivisione di file server di controllo.With Windows Server failover clustering, a common configuration for high availability uses two synchronous replicas and a file-share witness. La condivisione di file di controllo convalida la configurazione del gruppo di disponibilità - stato di sincronizzazione e il ruolo della replica, ad esempio.The file-share witness validates the availability group configuration - status of synchronization, and the role of the replica, for example. Questa configurazione assicura che la replica secondaria scelta come destinazione del failover è disponibili dati più recenti le modifiche alla configurazione gruppo di disponibilità.This configuration ensures that the secondary replica chosen as the failover target has the latest data and availability group configuration changes.

Le soluzioni a disponibilità elevata corrente per Linux non consentire l'inserimento di un controllo esterno come condivisione file di controllo in un cluster di failover di Windows Server.The current high availability solutions for Linux do not accommodate an external witness like the file share witness in a Windows Server failover cluster. Quando è presente alcun cluster di failover di Windows Server, la configurazione del gruppo di disponibilità è archiviata nel database master in istanze di SQL Server coinvolte.When there is no Windows Server failover cluster, the availability group configuration is stored in the master database on participating SQL Server instances. Pertanto, il gruppo di disponibilità richiede almeno tre repliche sincrone per la protezione dati e la disponibilità elevata.Therefore, the availability group requires at least three synchronous replicas for high availability and data protection. Dopo aver creato un gruppo di disponibilità su server Linux, è possibile creare una risorsa cluster.After you create an availability group on Linux servers, create a cluster resource. Le impostazioni delle risorse cluster determinano la configurazione per la disponibilità elevata.The cluster resource settings determine the configuration for high availability.

Scegliere una struttura di gruppo di disponibilità per soddisfare specifici requisiti aziendali per la disponibilità elevata, protezione dei dati e leggere scalabilità orizzontale.Choose an availability group design to meet specific business requirements for high availability, data protection, and read scale-out.

Importante

Le configurazioni seguenti vengono descritti i modelli di progettazione di gruppo di disponibilità e le funzionalità di ogni modello.The following configurations describe the availability group design patterns and the capabilities of each pattern. Questi modelli di progettazione si applicano ai gruppi di disponibilità con CLUSTER_TYPE = EXTERNAL per soluzioni a disponibilità elevata.These design patterns apply to availability groups with CLUSTER_TYPE = EXTERNAL for high availability solutions.

I modelli di progettazione sono due configurazioni di gruppo di disponibilità.The design patters are two availability group configurations. Le configurazioni includono:The configurations include:

  • Tre repliche sincroneThree synchronous replicas

  • Due repliche sincroneTwo synchronous replicas

Le impostazioni predefinite di influenza la configurazioneHow the configuration affects default resource settings

L'impostazione della risorsa cluster required_synchronized_secondaries_to_commit garantisce che ogni transazione viene scritto un numero minimo di log di replica secondaria prima di eseguire il commit della transazione nella replica primaria.The cluster resource setting required_synchronized_secondaries_to_commit guarantees that each transaction is written to a minimum number of secondary replica logs before committing the transaction on the primary replica. Questa impostazione può influenzare un'elevata disponibilità e la protezione dei dati, a seconda della configurazione.This setting can affect both high availability and data protection, depending on the configuration. Quando si installa l'agente di risorse di SQL Server - mssql-server-ha - e creare una risorsa cluster del gruppo di disponibilità, la gestione di cluster rileva la disponibilità del gruppo configurazione e set required_synchronized_secondaries_to_commit di conseguenza.When you install the SQL Server resource agent - mssql-server-ha - and create a cluster resource for the availability group, the cluster manager detects the availability group configuration and sets required_synchronized_secondaries_to_commit accordingly.

Se è supportata dalla configurazione, il parametro dell'agente risorsa required_synchronized_secondaries_to_commit è impostata sul valore che fornisce la protezione dati e la disponibilità elevata.If supported by the configuration, the resource agent parameter required_synchronized_secondaries_to_commit is set to the value that provides high availability and data protection. Per ulteriori informazioni, vedere comprendere SQL Server agent di risorsa per pacemaker.For more information, see Understand SQL Server resource agent for pacemaker.

Le sezioni seguenti illustrano il comportamento predefinito per la risorsa cluster.The following sections explain the default behavior for the cluster resource.

Tre repliche sincroneThree synchronous replicas

Questa configurazione è costituita da tre repliche sincrone.This configuration consists of three synchronous replicas. Per impostazione predefinita, fornisce ad alta disponibilità e protezione dei dati.By default, it provides high availability and data protection. È inoltre possibile fornire lettura scalabilità orizzontale.It can also provide read scale-out.

Tre repliche

Nella tabella seguente viene descritto il comportamento di un protezione dati e la disponibilità elevato basato sulle impostazioni per un gruppo di disponibilità con repliche sincrone tre:The following table describes the high availability and data protection behavior based on the settings for an availability group with three synchronous replicas:

required_synchronized_secondaries_to_commit 00 1 *1 * 22
Failover automatico dopo un'interruzione di replica primariaAutomatic failover after primary replica outage
Replica primaria disponibile dopo l'interruzione di una replica secondariaPrimary replica available after one secondary replica outage
Replica primaria disponibile dopo due interruzioni di replica secondariaPrimary replica available after two secondary replica outages
Failover manuale dopo l'interruzione di replica primaria - possibile perdita di datiManual failover after primary replica outage - possible data loss

*Impostazione quando il gruppo di disponibilità viene aggiunto come risorsa in un cluster predefinita.* Default setting when availability group is added as a resource in a cluster.

Due repliche sincroneTwo synchronous replicas

Questa configurazione consente la protezione dei dati.This configuration enables data protection. Come le altre configurazioni gruppo disponibilità, è possibile attivare lettura scalabilità orizzontale.Like the other availability group configurations, it can enable read scale-out. La configurazione di due repliche sincrone non fornisce la disponibilità elevata automatica.The two synchronous replicas configuration does not provide automatic high availability.

Due repliche sincrone

Questa configurazione richiede due server.This configuration requires two servers. Questi server ricoprire il ruolo della replica primaria e secondaria.These servers fill the role of primary replica and secondary replica.

La configurazione di due repliche sincrone è ottimizzata per i dati di protezione e la distribuzione del carico di lavoro di lettura per i database.The two synchronous replicas configuration is optimized for data protection and distributing the read workload for databases. Per impostazione predefinita, la risorsa è configurata per la protezione dati.By default, the resource is configured for data protection. Questa configurazione fornisce disponibilità elevata perché se l'istanza di SQL Server non riesce, il database non è completamente disponibile o vi è rischio di perdita di dati.This configuration does not provide high availability because if either instance of SQL Server fails, either the database is not fully available or there is risk of data loss.

Nella tabella seguente vengono descritti il comportamento di protezione dati in base ai valori possibili per un gruppo di disponibilità con due repliche sincrone:The following table describes the data protection behavior according to the possible values for an availability group with two synchronous replicas:

required_synchronized_secondaries_to_commit 0 *0 * 11
Failover automatico dopo un'interruzione di replica primariaAutomatic failover after primary replica outage ✔ **✔ **
Replica primaria disponibile dopo l'interruzione di replica secondariaPrimary replica available after secondary replica outage

*Impostazione quando il gruppo di disponibilità viene aggiunto come risorsa in un cluster predefinita.* Default setting when availability group is added as a resource in a cluster.

**In questa configurazione, dopo l'interruzione della replica primaria del gruppo di disponibilità automatico viene eseguito il failover.** In this configuration, after the primary replica outage occurs the availability group automatic fails over. Le applicazioni non possono connettersi al gruppo di disponibilità, fino a quando la replica primaria è in linea - ora come una replica secondaria.Applications cannot connect to the availability group until the primary replica is back on line - now as a secondary replica.

La configurazione di due repliche sincrone può essere più economica perché richiede solo due istanze di SQL Server in due server.The two synchronous replicas configuration may be the most economical because it only requires two instances of SQL Server on two servers.

Comprendere l'agente di risorse di SQL Server per pacemakerUnderstand SQL Server resource agent for pacemaker

SQL Server 2017 CTP 1.4 aggiunto sequence_number a sys.availability_groups per consentire il Pacemaker identificare secondario di aggiornamento delle repliche sono con la replica primaria.SQL Server 2017 CTP 1.4 added sequence_number to sys.availability_groups to allow Pacemaker to identify how up-to-date secondary replicas are with the primary replica. sequence_numberè un valore BIGINT a incremento progressivo costante che rappresenta di aggiornamento di replica del gruppo di disponibilità locale.sequence_number is a monotonically increasing BIGINT that represents how up-to-date the local availability group replica is. Gli aggiornamenti pacemaker il sequence_number con ogni modifica della configurazione gruppo di disponibilità.Pacemaker updates the sequence_number with each availability group configuration change. Esempi di modifiche di configurazione includono il failover, aggiunta di replica o la rimozione.Examples of configuration changes include failover, replica addition, or removal. Il numero viene aggiornato nel server primario, quindi replicato a repliche secondarie.The number is updated on the primary, then replicated to secondary replicas. In questo modo una replica secondaria con configurazione aggiornata ha lo stesso numero di sequenza del database primario.Thus a secondary replica that has up-to-date configuration has the same sequence number as the primary.

Quando il Pacemaker decide di alzare di livello una replica primaria, prima invia un pre-alzare di livello notifica a tutte le repliche.When Pacemaker decides to promote a replica to primary, it first sends a pre-promote notification to all replicas. Le repliche di restituiscono il numero di sequenza.The replicas return the sequence number. Successivamente, quando Pacemaker esegue effettivamente un tentativo di promuovere una replica primaria, la replica solo promuove se stesso se il numero di sequenza è il più elevato di tutti i numeri di sequenza.Next, when Pacemaker actually tries to promote a replica to primary, the replica only promotes itself if its sequence number is the highest of all the sequence numbers. Se il proprio numero di sequenza non corrisponde il numero di sequenza più alto, la replica rifiuta l'operazione Alza di livello.If its own sequence number does not match the highest sequence number, the replica rejects the promote operation. In questo modo, solo la replica con il numero di sequenza più alto può essere alzata di livello e impostata come primaria e non si verifica alcuna perdita dei dati.In this way only the replica with the highest sequence number can be promoted to primary, ensuring no data loss.

Questo processo richiede almeno una replica è disponibile per l'innalzamento di livello con lo stesso numero di sequenza come database primario precedente.This process requires at least one replica available for promotion with the same sequence number as the previous primary. Il set di agente di risorse Pacemaker required_synchronized_secondaries_to_commit in modo che almeno una replica secondaria asincrona è aggiornato e disponibile per essere la destinazione di un failover automatico per impostazione predefinita.The Pacemaker resource agent sets required_synchronized_secondaries_to_commit such that at least one synchronous secondary replica is up-to-date and available to be the target of an automatic failover by default. Con ogni azione di monitoraggio, il valore di required_synchronized_secondaries_to_commit viene calcolato (e aggiornati se necessario).With each monitoring action, the value of required_synchronized_secondaries_to_commit is computed (and updated if necessary). Il required_synchronized_secondaries_to_commit valore è 'numero di repliche sincrone' diviso 2.The required_synchronized_secondaries_to_commit value is 'number of synchronous replicas' divided by 2. In fase di failover, è necessario l'agente di risorsa (total number of replicas - required_synchronized_secondaries_to_commit repliche) per rispondere al pre-promuovere notifica.At failover time, the resource agent requires (total number of replicas - required_synchronized_secondaries_to_commit replicas) to respond to the pre-promote notification. La replica con il più elevato sequence_number viene promossa a primaria.The replica with the highest sequence_number is promoted to primary.

Ad esempio, un gruppo di disponibilità con tre repliche sincrone - una replica primaria e due repliche secondarie sincrone.For example, An availability group with three synchronous replicas - one primary replica and two synchronous secondary replicas.

  • required_synchronized_secondaries_to_commitè 1. (3 / 2 -> 1).required_synchronized_secondaries_to_commit is 1; (3 / 2 -> 1).

  • Il numero di repliche per rispondere ai pre-fini dell'azione di richiesto è 2. (3 - 1 = 2).The required number of replicas to respond to pre-promote action is 2; (3 - 1 = 2).

In questo scenario, è necessario rispondere per il failover deve essere attivata due repliche.In this scenario, two replicas have to respond for the failover to be triggered. Per il failover automatico ha esito positivo dopo un'interruzione della replica primaria, sia nelle repliche secondarie desidera essere aggiornate e rispondere alla pre-promuovere notifica.For successful automatic failover after a primary replica outage, both secondary replicas need to be up-to-date and respond to the pre-promote notification. Se sono online e sincrona, hanno lo stesso numero di sequenza.If they are online and synchronous, they have the same sequence number. Il gruppo di disponibilità Alza di livello uno di essi.The availability group promotes one of them. Se solo una delle repliche secondarie risponde a di alzare di pre-livello azione, l'agente di risorsa non può garantire che il database secondario che ha risposto ha sequence_number il più elevato, e non viene attivato un failover.If only one of the secondary replicas responds to the pre-promote action, the resource agent cannot guarantee that the secondary that responded has the highest sequence_number, and a failover is not triggered.

Importante

Quando required_synchronized_secondaries_to_commit è 0 è rischio di perdita di dati.When required_synchronized_secondaries_to_commit is 0 there is risk of data loss. Durante un'interruzione di replica primaria, l'agente di risorsa non verrà automaticamente avviato un failover.During a primary replica outage, the resource agent does not automatically trigger a failover. È possibile attendere per il sito primario ripristinare o eseguire manualmente il failover utilizzando FORCE_FAILOVER_ALLOW_DATA_LOSS.You can either wait for primary to recover, or manually fail over using FORCE_FAILOVER_ALLOW_DATA_LOSS.

È possibile scegliere di ignorare il comportamento predefinito e impedire l'impostazione della risorsa del gruppo di disponibilità required_synchronized_secondaries_to_commit automaticamente.You can choose to override the default behavior, and prevent the availability group resource from setting required_synchronized_secondaries_to_commit automatically.

Lo script seguente imposta required_synchronized_secondaries_to_commit su 0 in un gruppo di disponibilità denominato <**ag1**>.The following script sets required_synchronized_secondaries_to_commit to 0 on an availability group named <**ag1**>. Prima di eseguire sostituire <**ag1**> con il nome del gruppo di disponibilità.Before you run replace <**ag1**> with the name of your availability group.

sudo pcs resource update <**ag1**> required_synchronized_secondaries_to_commit=0

Per ripristinare il valore predefinito, in base alla configurazione gruppo di disponibilità eseguire:To revert to default value, based on the availability group configuration run:

sudo pcs resource update <**ag1**> required_synchronized_secondaries_to_commit=
Nota

Quando si eseguono i comandi precedenti, il database primario è temporaneamente abbassato di livello a secondario, quindi promossa nuovamente.When you run the preceding commands, the primary is temporarily demoted to secondary, then promoted again. L'aggiornamento della risorsa fa sì che tutte le repliche arrestare e riavviare.The resource update causes all replicas to stop and restart. Il nuovo valore perrequired_synchronized_secondaries_to_commit viene impostata solo una volta le repliche vengono riavviate, non immediatamente.The new value forrequired_synchronized_secondaries_to_commit is only set once replicas are restarted, not instantaneously.