Geschäftskontinuität und Datenbankwiederherstellung – SQL Server für LinuxBusiness continuity and database recovery - SQL Server on Linux

Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions)

Dieser Artikel bietet eine Übersicht über Lösungen für Geschäftskontinuität für Hochverfügbarkeit und Notfallwiederherstellung in SQL Server.This article provides an overview of business continuity solutions for high availability and disaster recovery in SQL Server.

Eine allgemeine Aufgabe, die jeder berücksichtigen sollte, der SQL Server bereitstellt, ist das Sicherstellen der Verfügbarkeit aller unternehmenskritischen SQL Server-Instanzen und der darin enthaltenen Datenbanken, wenn das Unternehmen oder die Benutzer diese benötigen, ob von 9 bis 17 Uhr oder rund um die Uhr.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. Das Ziel ist, das Unternehmen mit minimaler oder ohne Unterbrechung aufrechtzuerhalten.The goal is to keep the business up and running with minimal or no interruption. Dieses Konzept wird auch als Geschäftskontinuität bezeichnet.This concept is also known as business continuity.

In SQL Server 2017 werden viele neue Funktionen oder Erweiterungen für vorhandene eingeführt, einige davon sind für die Verfügbarkeit.SQL Server 2017 introduces many new features or enhancements to existing ones, some of which are for availability. Die wichtigste Erweiterung für SQL Server 2017 ist die Unterstützung für SQL Server auf Linux-Verteilungen.The biggest addition to SQL Server 2017 is the support for SQL Server on Linux distributions. Eine vollständige Liste der neuen Funktionen in SQL Server 2017 finden Sie unter Neues in SQL Server 2017.For a full list of the new features in SQL Server 2017, see the topic What's new in SQL Server.

Dieser Artikel konzentriert sich auf die Verfügbarkeitsszenarios sowie auf die neuen und erweiterten Verfügbarkeitsfunktionen in 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. Dabei sind auch hybride Szenarios enthalten, durch die SQL Server-Bereitstellungen Windows Server und Linux umfassen können sowie Szenarios, die die Anzahl von lesbaren Kopien einer Datenbank erhöhen können.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. Dieser Artikel behandelt keine Verfügbarkeitsoptionen außerhalb von SQL Server, z.B. solche, die durch die Virtualisierung bereitgestellt werden. Sämtliche Erläuterungen beziehen sich auf Installationen von SQL Server innerhalb eines virtuellen Gastcomputers, der sich entweder in der öffentlichen Cloud befindet oder von einem lokalen Hypervisorserver gehostet wird.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.

SQL Server 2017-Szenarios, die Verfügbarkeitsfunktionen verwendenSQL Server 2017 scenarios using the availability features

Verfügbarkeitsgruppen, FCIs und der Protokollversand können auf verschiedene Arten verwendet werden und nicht nur aus Gründen der Verfügbarkeit.Availability groups, FCIs, and log shipping can be used in a variety of ways, and not necessarily just for availability purposes. Verfügbarkeitsfunktionen können auf vier verschiedene Arten verwendet werden:There are four main ways the availability features can be used:

  • HochverfügbarkeitHigh availability
  • NotfallwiederherstellungDisaster recovery
  • Migrationen und UpgradesMigrations and upgrades
  • Horizontales Hochskalieren von lesbaren Kopien von einer oder mehreren DatenbankenScaling out readable copies of one or more databases

In jedem Abschnitt werden die relevanten Funktionen erläutert, die für ein bestimmtes Szenario verwendet werden können.Each section will discuss the relevant features that can be used for that particular scenario. Die einzige Funktion, die nicht behandelt wird, ist die SQL Server-Replikation.The one feature not covered is SQL Server replication. Diese ist nicht offiziell als Verfügbarkeitsfunktion von Always On festgelegt, sie wird jedoch häufig verwendet, um Daten in bestimmten Szenarios überflüssig zu machen.While not officially designated as an availability feature under the Always On umbrella, it is often used for making data redundant in certain scenarios. Die Replikation wird in einer zukünftigen Version zu SQL Server unter Linux hinzugefügt.Replication will be added to SQL Server on Linux in a future release.

Wichtig

Die SQL Server-Verfügbarkeitsfunktionen ersetzen keine stabile, gut getestete Sicherungs- und Wiederherstellungsstrategie, bei der es sich um den grundlegendsten Baustein jeder Verfügbarkeitslösung handelt.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.

HochverfügbarkeitHigh availability

Es ist wichtig, sicherzustellen, dass SQL Server-Instanzen oder -Datenbanken im Fall eines lokalen Problems eines Rechenzentrums oder einer einzelnen Region in der Cloudregion verfügbar sind.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. Dieser Abschnitt erläutert, wie die SQL Server-Verfügbarkeitsfunktionen Sie bei dieser Aufgabe unterstützen können.This section will cover how the SQL Server availability features can assist in that task. Alle beschriebenen Funktionen sind für Windows Server und Linux verfügbar.All of the features described are available both on Windows Server as well as on Linux.

Always On-VerfügbarkeitsgruppenAlways on availability groups

Die in SQL Server 2012 eingeführten Always On-Verfügbarkeitsgruppen (Verfügbarkeitsgruppen) stellen Schutz auf Datenbankebene bereit, indem sie jede Transaktion einer Datenbank zu einer anderen Instanz (auch als Replikat bezeichnet) senden, die eine Kopie dieser Datenbank in einem speziellen Zustand enthält.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. Eine Verfügbarkeitsgruppe kann auf der Standard Edition oder Enterprise Edition bereitgestellt werden.An availability group can be deployed on Standard or Enterprise Editions. Die Instanzen, die in einer Verfügbarkeitsgruppe enthalten sind, können eigenständig oder Always On-Failoverclusterinstanzen (FCIs, im nächsten Abschnitt beschrieben) sein.The instances participating in an availability group can be either standalone or Always On Failover Cluster Instances (FCIs, described in the next section). Da die Transaktionen direkt an ein Replikat gesendet werden, werden Verfügbarkeitsgruppen empfohlen, wenn Anforderungen für niedrigere Ziele bei Wiederherstellungspunkten und der Wiederherstellungszeit bestehen.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. Das Verschieben von Daten zwischen Replikaten kann synchron oder asynchron erfolgen. Die Enterprise Edition unterstützt bis zu drei synchrone Replikate, einschließlich des primären Replikats.Data movement between replicas can be synchronous or asynchronous, with Enterprise Edition allowing up to three replicas (including the primary) as synchronous. Eine Verfügbarkeitsgruppe enthält eine vollständige Lese-/Schreibkopie der Datenbank, die sich auf dem primären Replikat befindet. Sekundäre Replikate können keine Transaktionen direkt von Benutzern oder Anwendungen erhalten.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.

Hinweis

Always On ist ein Überbegriff für die Verfügbarkeitsfunktionen in SQL Server und schließt Verfügbarkeitsgruppen und FCIs ein.Always On is an umbrella term for the availability features in SQL Server and covers both availability groups and FCIs. Always On ist nicht der Name der Verfügbarkeitsgruppenfunktion.Always On is not the name of the availability group feature.

Da Verfügbarkeitsgruppen nur Schutz auf Datenbankebene bereitstellen, nicht auf Instanzebene, muss alles, was nicht im Transaktionsprotokoll erfasst oder in der Datenbank konfiguriert ist, für jedes sekundäre Replikat manuell synchronisiert werden.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. Einige Beispiele für Objekte, die manuell synchronisiert werden müssen, sind Anmeldungen auf Instanzebene, Verbindungsserver und SQL Server-Agent-Aufträge.Some examples of objects that must be synchronized manually are logins at the instance level, linked servers, and SQL Server Agent jobs.

Eine Verfügbarkeitsgruppe besitzt eine weitere Komponente, die als Listener bezeichnet wird. Durch diesen können Anwendungen und Benutzer eine Verbindung herstellen, ohne zu wissen, welche Instanz von SQL Server das primäre Replikat hostet.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. Jede Verfügbarkeitsgruppe muss ihren eigenen Listener besitzen.Each availability group would have its own listener. Während die Implementierungen des Listeners sich geringfügig zwischen Windows Server und Linux unterscheiden, sind die bereitgestellte Funktionalität und die Verwendung identisch.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. Die untenstehende Abbildung zeigt eine Windows Server-basierte Verfügbarkeitsgruppe, die ein Windows Server-Failovercluster (WSFC) verwendet.The picture below shows a Windows Server-based availability group which is using a Windows Server Failover Cluster (WSFC). Ein zugrunde liegender Cluster auf OS-Ebene ist für die Verfügbarkeit auf Linux oder Windows Server erforderlich.An underlying cluster at the OS layer is required for availability whether it is on Linux or Windows Server. Dieses Beispiel zeigt eine einfache Konfiguration für zwei Server oder Knoten, bei der ein WSFC den zugrunde liegenden Cluster darstellt.The example shows a simple two server, or node, configuration where a WSFC is the underlying cluster.

Einfache Verfügbarkeitsgruppe

Bei Replikaten besitzen die Standard Edition und die Enterprise Edition unterschiedliche Höchstwerte.Standard and Enterprise Edition have different maximums when it comes to replicas. Eine Verfügbarkeitsgruppe in der Standard Edition, die als Basis-Verfügbarkeitsgruppe bezeichnet wird, unterstützt zwei Replikate (ein primäres und ein sekundäres) mit nur einer einzigen Datenbank in der Verfügbarkeitsgruppe.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. In der Enterprise Edition können nicht nur mehrere Datenbanken für eine einzige Verfügbarkeitsgruppe konfiguriert werden, sondern es können auch bis zu neun Replikate (ein primäres, acht sekundäre) vorhanden sein.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). Die Enterprise Edition bietet weitere optionale Vorteile, z.B. lesbare sekundäre Replikate, das Erstellen von Sicherungen aus einem sekundären Replikat usw.Enterprise edition also provides other optional benefits such as readable secondary replicas, the ability to make backups off of a secondary replica, and more.

Hinweis

Die Datenbankspiegelung, die seit SQL Server 2012 veraltet ist, ist nicht für die Linux-Version von SQL Server verfügbar und wird nicht hinzugefügt.Database mirroring, which was deprecated in SQL Server 2012, is not available on the Linux version of SQL Server nor will it be added. Kunden, die die Datenbankspiegelung immer noch verwenden, sollten die Migration zu Verfügbarkeitsgruppen planen, die den Ersatz für die Datenbankspiegelung darstellen.Customers still using database mirroring should start planning to migrate to availability groups, which is the replacement for database mirroring.

Verfügbarkeitsgruppen stellen für die Verfügbarkeit entweder automatische oder manuelle Failover bereit.When it comes to availability, availability groups can provide either automatic or manual failover. Automatische Failover können auftreten, wenn die synchrone Datenverschiebung konfiguriert ist und die Datenbank auf dem primären und sekundären Replikat sich in einem synchronisierten Zustand befindet.Automatic failover can occur if synchronous data movement is configured and the database on the primary and secondary replica are in a synchronized state. Solange der Listener verwendet wird und die Datenbank eine höhere Version von .NET (3.5 mit einem Update oder 4.0 und höher) verwendet, sollte das Failover mit minimaler oder ohne Auswirkungen für den Benutzer behandelt werden.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. Ein Failover, das ein sekundäres Replikat zum neuen primären Replikat macht, kann als automatisch oder manuell konfiguriert werden und wird im Allgemeinen in Sekunden gemessen.Failover to make a secondary replica the new primary replica can be configured to be automatic or manual, and generally is measured in seconds.

Die folgende Liste hebt einige Unterschiede von Verfügbarkeitsgruppen zwischen Windows Server und Linux hervor:The list below highlights some differences with availability groups on Windows Server versus Linux:

  • Da die zugrunde liegenden Cluster unterschiedlich unter Linux und Windows Server funktionieren, werden alle Failover (manuell oder automatisch) von Verfügbarkeitsgruppen über den Cluster unter Linux ausgeführt.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. Bei Bereitstellungen von Windows Server-basierten Verfügbarkeitsgruppen müssen manuelle Failover über SQL Server ausgeführt werden.On Windows Server-based availability group deployments, manual failovers must be done via SQL Server. Automatische Failover werden unter Windows Server und Linux von den zugrunde liegenden Clustern behandelt.Automatic failovers are handled by the underlying cluster on both Windows Server and Linux.
  • Die empfohlene Konfiguration für Verfügbarkeitsgruppen in SQL Server 2017 unter Linux umfasst mindestens drei Replikate.In SQL Server 2017, the recommended configuration for availability groups on Linux will be a minimum of three replicas. Der Grund dafür liegt in der Funktionsweise des zugrunde liegenden Clusterings.This is due to the way that the underlying clustering works. Eine verbesserte Lösung für die Konfiguration mit zwei Replikaten wird nach der Veröffentlichung bereitgestellt.An improved solution for a two replica configuration will come post-release.
  • Unter Linux wird der allgemeine Name, der von jedem Listener verwendet wird, im DNS und nicht wie unter Windows Server im Cluster definiert.On Linux, the common name used by each listener is defined in DNS and not in the cluster like it is on Windows Server.

In SQL Server 2017 gibt es einige neue Funktionen und Erweiterungen für Verfügbarkeitsgruppen:In SQL Server 2017, there are some new features and enhancements to availability groups:

  • ClustertypenCluster types
  • REQUIRED_SECONDARIES_TO_COMMITREQUIRED_SECONDARIES_TO_COMMIT
  • Erweiterte MS DTC-Unterstützung (Microsoft Distributed Transaction Coordinator) für Windows Server-basierte KonfigurationenEnhanced Microsoft Distributor Transaction Coordinator (DTC) support for Windows Server-based configurations
  • Zusätzliche Szenarios für das Aufskalieren von schreibgeschützten Datenbanken (später in diesem Artikel beschrieben)Additional scale out scenarios for read only databases (described later in this article)
Clustertypen von Always On-VerfügbarkeitsgruppenAlways on availability group cluster types

Das integrierte Verfügbarkeitsformular des Clusterings in Windows Server wird über eine Funktion namens Failoverclustering aktiviert.The built-in availability form of clustering in Windows Server is enabled via a feature named Failover Clustering. Dadurch kann ein WSFC erstellt werden, das mit einer Verfügbarkeitsgruppe oder einer FCI verwendet werden kann.It allows you to build a WSFC to be used with an availability group or FCI. Die Integration von Verfügbarkeitsgruppen und FCIs wird über clusterfähige Ressourcen-DLLs bereitgestellt, die in SQL Server enthalten sind.Integration for availability groups and FCIs is provided by a cluster-aware resource DLLs shipped by SQL Server.

Jede unterstützte Linux-Verteilung enthält ihre eigene Version der Pacemaker-Clusterlösung.Each supported Linux distribution ships its own version of the Pacemaker cluster solution. SQL Server 2017 unter Linux unterstützt die Verwendung von Pacemaker.SQL Server 2017 on Linux supports the use of Pacemaker. Bei Pacemaker handelt es sich um eine Open Stack-Lösung, in die sich jede Verteilung mit ihrem Stapel integrieren kann.Pacemaker is an open stack solution that each distribution can then integrate with their stack. Obwohl die Verteilungen Pacemaker enthalten, ist es nicht so integriert wie die Failoverclusteringfunktion unter Windows Server.While the distributions ship Pacemaker, it is not as integrated as the Failover Clustering feature in Windows Server.

Zwischen WSFC und Pacemaker liegen mehr Gemeinsamkeiten als Unterschiede vor.A WSFC and Pacemaker are more similar than different. Beide ermöglichen das Kombinieren von einzelnen Servern in einer Konfiguration, um die Verfügbarkeit zu gewährleisten und enthalten Konzepte für Ressourcen, Einschränken (die jedoch unterschiedlich implementiert sind), Failover usw.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. Microsoft stellt für das Bereitstellen von Pacemaker für Verfügbarkeitsgruppen- und FCI-Konfigurationen, einschließlich des automatischen Failovers, das Paket „mssql-server-ha package“ bereit, das der Ressourcen-DLL in einem WSFC ähnelt, aber nicht identisch mit diesem ist.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. Einer der Unterschiede zwischen einem WSFC und Pacemaker ist, dass es keine Netzwerknamenressource in Pacemaker gibt. Diese Komponente unterstützt Sie beim Abstrahieren des Namens des Listeners (oder des Namens der FCI) auf einem 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. DNS stellt diese Namensauflösung unter Linux bereit.DNS provides that name resolution on Linux.

Aufgrund der Unterschiede im Clusterstapel müssen einige Änderungen für Verfügbarkeitsgruppen vorgenommen werden, da SQL Server einige der Metadaten behandeln muss, die nativ von einem WSFC behandelt werden.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. Die wichtigste [!IMPORTANT] Änderung ist die Einführung eines Clustertyps für Verfügbarkeitsgruppen.The most [!IMPORTANT] change is the introduction of a cluster type for an availability group. Dieser wird in „sys.availability_groups“ in den Spalten „cluster_type“ und „cluster_type_desc“ gespeichert.This is stored in sys.availability_groups in the cluster_type and cluster_type_desc columns. Es gibt drei Clustertypen:There are three cluster types:

  • WSFCWSFC
  • ExternExternal
  • KeineNone

Alle Verfügbarkeitsgruppen, die Verfügbarkeit erfordern, müssen einen zugrunde liegenden Cluster verwenden. Dies ist im Fall von SQL Server 2017 ein WSFC oder 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. Für Windows Server-basierte Verfügbarkeitsgruppen, die einen zugrunde liegenden WSFC verwenden, ist der Standardclustertyp WSFC und muss nicht festgelegt werden.For Windows Server-based availability groups that use an underlying WSFC, the default cluster type is WSFC and does not need to be set. Für Linux-basierte Verfügbarkeitsgruppen muss der Clustertyp beim Erstellen der Verfügbarkeitsgruppe auf „Extern“ festgelegt werden.For Linux-based availability groups, when creating the availability group, the cluster type must be set to External. Die Integration mit Pacemaker wird nach der Erstellung der Verfügbarkeitsgruppe konfiguriert, während dies bei einem WSFC während der Erstellungszeit geschieht.The integration with Pacemaker is configured after the availability group is created, whereas on a WSFC, it is done at creation time.

Der Clustertyp „Keiner“ kann für Windows Server- und Linux-Verfügbarkeitsgruppen verwendet werden.A cluster type of None can be used with both Windows Server and Linux availability groups. Das Festlegen des Clustertyps auf „Keiner“ bedeutet, dass die Verfügbarkeitsgruppe keinen zugrunde liegenden Cluster erfordert.Setting the cluster type to None means that the availability group does not require an underlying cluster. Das bedeutet, dass es sich bei SQL Server 2017 um die erste Version von SQL Server handelt, die Verfügbarkeitsgruppen ohne einen Cluster unterstützen. Der Nachteil hierbei ist jedoch, dass diese Konfiguration nicht als Hochverfügbarkeitslösung unterstützt wird.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.

Wichtig

SQL Server 2017 lässt die Änderung des Clustertyps einer Verfügbarkeitsgruppe nicht zu, nachdem diese erstellt ist.SQL Server 2017 does not allow the ability to change a cluster type for an availability group after it is created. Das bedeutet, dass eine Verfügbarkeitsgruppe nicht von „Keiner“ zu „Extern“ oder „WSFC“ (oder umgekehrt) umgeschaltet werden kann.This means that an availability group cannot be switched from None to External or WSFC, or vice versa.

Für diejenigen, die nur eine zusätzliche schreibgeschützte Kopie einer Datenbank hinzufügen oder festlegen möchten, welche Optionen eine Verfügbarkeitsgruppe für die Migration/Upgrades bereitstellt, aber nicht an die zusätzliche Komplexität eines zugrunde liegenden Clusters oder der Replikation gebunden sein möchten, ist eine Verfügbarkeitsgruppe mit dem Clustertyp „Keiner“ eine ideale Lösung.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. Weitere Informationen finden Sie in den Abschnitten Migrationen und Upgrades und Schreibgeschützte Verfügbarkeitsgruppen.For more information, see the sections Migrations and Upgrades and read-scale.

Der folgende Screenshot zeigt die Unterstützung für die verschiedenen Arten von Clustertypen in SSMS.The screenshot below shows the support for the different kinds of cluster types in SSMS. Sie müssen Version 17.1 oder höher ausführen.You must be running version 17.1 or later. Der folgende Screenshot stammt aus Version 17.2.The screenshot below is from version 17.2.

SSMS AG-Optionen

REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMITREQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT

In SQL Server 2016 wurde die Unterstützung für die Anzahl von synchronen Replikaten in der Enterprise Edition von zwei auf drei erhöht.SQL Server 2016 increased support for the number of synchronous replicas from two to three in Enterprise Edition. Wenn jedoch ein sekundäres Replikat synchronisiert wurde und bei einem anderen ein Problem auftrat, konnte das Verhalten nicht gesteuert werden, um dem primären Replikat mitzuteilen, entweder auf das sich falsch verhaltende Replikat zu warten oder fortzufahren.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. Dadurch erhält das primäre Replikat ab einem bestimmten Punkt weiterhin Schreibdatenverkehr, obwohl das sekundäre Replikat sich nicht in einem synchronisierten Zustand befindet. Dies bedeutet, dass es zu Datenverlust auf dem sekundären Replikat kommt.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. In SQL Server 2017 gibt es nun eine Option, um das Verhalten zu steuern, das auftritt, wenn es synchronisierte Replikate namens REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT gibt.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. Diese Optionen funktionieren folgendermaßen:The option works as follows:

  • Es gibt drei mögliche Werte: 0, 1 und 2.There are three possible values: 0, 1, and 2
  • Der Wert entspricht der Anzahl von sekundären Replikaten, die synchronisiert werden müssen, und hat Auswirkungen auf den Datenverlust, die Verfügbarkeit von Verfügbarkeitsgruppen und auf Failover.The value is the number of secondary replicas that must be synchronized, which has implications for data loss, availability group availability, and failover
  • Für WSFCs und den Clustertyp „Keiner“ ist der Standardwert 0 und kann manuell auf 1 oder 2 festgelegt werden.For WSFCs and a cluster type of None, the default value is 0, and can be manually set to 1 or 2
  • Für den Clustertyp „Extern“ wird dies standardmäßig durch den Clustermechanismus festgelegt und kann manuell überschrieben werden.For a cluster type of External, by default, the cluster mechanism will set this and it can be overridden manually. Bei drei synchronen Replikaten ist der Standardwert 1.For three synchronous replicas, the default value will be 1. Unter Linux wird der Wert für REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT auf der Verfügbarkeitsgruppenressource im Cluster konfiguriert.On Linux, the value for REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT is configured on the availability group resource in the cluster. Unter Windows wird dieser über Transact-SQL festgelegt.On Windows, it is set via Transact-SQL.

Ein Wert, der größer als 0 ist, gewährleistet einen höheren Datenschutz, denn wenn die erforderliche Anzahl von sekundären Replikaten nicht verfügbar ist, ist auch das primäre Replikat nicht verfügbar, bis dies gelöst ist.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 wirkt sich auch auf das Failoververhalten aus, da ein automatisches Failover nicht auftreten kann, wenn sich nicht die richtige Anzahl von sekundären Replikaten im korrekten Zustand befindet.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. Unter Linux lässt ein Wert von 0 keine automatischen Failover zu. Wenn Sie unter Linux also synchrone Replikate mit automatischem Failover verwenden, muss der Wert größer als 0 festgelegt werden, um ein automatisches Failover zu erzielen.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. Unter Windows Server stellt 0 das Verhalten von SQL Server 2016 und früher dar.0 on Windows Server is the SQL Server 2016 and earlier behavior.

Erweiterte Microsoft Distributed Transaction Coordinator-UnterstützungEnhanced Microsoft distributed transaction coordinator support

Vor SQL Server 2016 war die einzige Möglichkeit das Bereitstellen von FCIs, um Verfügbarkeit für Anwendungen in SQL Server bereitzustellen, die verteilte Transaktionen erfordern, die DTC im Hintergrund verwenden.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. Eine verteilte Transaktion kann auf zwei Arten erfolgen:A distributed transaction can be done in one of two ways:

  • Eine Transaktion, die mehr als eine Datenbank auf derselben Instanz von SQL Server umfasstA transaction that spans more than one database in the same SQL Server instance
  • Eine Transaktion, die mehr als eine Instanz von SQL Server oder möglicherweise eine Nicht-SQL Server-Datenquelle umfasstA transaction that spans more than one SQL Server instance or possibly involves a non-SQL Server data source

In SQL Server 2016 wurde eine Teilunterstützung für DTC mit Verfügbarkeitsgruppen eingeführt, die das zweite Szenario abdecken.SQL Server 2016 introduced partial support for DTC with availability groups that covered the latter scenario. SQL Server 2017 unterstützt dann beide Szenarios mit DTC.SQL Server 2017 completes the story by supporting both scenarios with DTC.

Eine andere Erweiterung für die DTC-Unterstützung für Verfügbarkeitsgruppen betrifft die Tatsache, dass in SQL Server 2016 die DTC-Unterstützung für eine Verfügbarkeitsgruppe nur hinzugefügt werden konnte, wenn die Verfügbarkeitsgruppe erstellt wurde. Sie konnte später nicht hinzugefügt werden.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. In SQL Server 2017 kann die DTC-Unterstützung auch nach der Erstellung zu einer Verfügbarkeitsgruppe hinzugefügt werden.In SQL Server 2017, DTC support can also be added to an availability group after it is created.

Hinweis

Die DTC-Unterstützung kann nur für Datenbanken in Windows Server-basierten SQL Server-Instanzen konfiguriert werden.DTC support can only be configured for databases in Windows Server-based SQL Server instances. Wenn DTC eine Voraussetzung für Ihre Anwendung ist, müssen Sie Windows Server als Betriebssystem für Ihre SQL Server-Bereitstellung verwenden. Linux kann nicht verwendet werden.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.

Always On-FailoverclusterinstanzenAlways on failover cluster instances

Gruppierte Installationen sind eine Funktion von SQL Server seit Version 6.5.Clustered installations have been a feature of SQL Server since version 6.5. FCIs sind eine bewährte Methode zum Gewährleisten der Verfügbarkeit für die gesamte Installation von SQL Server, die als Instanz bezeichnet wird.FCIs are a proven method of providing availability for the entire installation of SQL Server, known as an instance. Das bedeutet, dass alle Elemente in der Instanz, einschließlich Datenbanken, SQL Server-Agent-Aufträge, Verbindungsserver auf einen anderen Server verschoben werden, wenn auf dem zugrunde liegenden Server ein Problem auftritt.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. Alle FCIs erfordern freigegebenen Speicher, auch wenn dieser über ein Netzwerk bereitgestellt wird.All FCIs require some sort of shared storage, even if it is provided via networking. Die Ressourcen der FCIs können jeweils nur von einem Knoten gleichzeitig ausgeführt und besessen werden.The FCI's resources can only be running and owned by one node at any given time. In der folgenden Abbildung besitzt der erste Knoten des Clusters die FCI. Das bedeutet, dass dieser auch die freigegebenen Speicherressourcen besitzt, die ihm zugewiesen sind. Dies ist durch die durchgezogene Linie zum Speicher gekennzeichnet.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.

Failoverclusterinstanz

Wie in der folgenden Abbildung dargestellt ändert sich der Besitzer nach einem Failover.After a failover, ownership changes as is seen in the picture below.

Nach einem Failover

Mit einer FCI gibt es keinen Datenverlust, aber der zugrunde liegende freigegebene Speicher ist eine einzelne Fehlerquelle, da eine Kopie der Daten vorhanden ist.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. FCIs werden häufig mit anderen Verfügbarkeitsmethoden kombiniert, z.B. Verfügbarkeitsgruppen und Protokollversand, damit redundante Kopien der Datenbank verfügbar sind.FCIs are often combined with another availability method, such as an availability group or log shipping, to have redundant copies of databases. Die zusätzlich bereitgestellte Methode sollte einen anderen physischen Speicher als die FCI verwenden.The additional method deployed should use physically separate storage from the FCI. Wenn die FCI ein Failover auf einen anderen Knoten ausführt, hält diese im Gegensatz zu einem Server, der ein- und ausgeschaltet wird, auf einem Knoten an und fährt auf einem anderen fort.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. Eine FCI durchläuft den normalen Wiederherstellungsprozess. Das bedeutet, dass alle Transaktionen ein Rollforward ausgeführt wird, die einen benötigen, und für alle unvollständigen Transaktionen wird ein Rollback ausgeführt.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. Daher ist eine Datenbank von einem Datenpunkt aus bis zum Zeitpunkt des Fehlers oder des manuellen Failovers konsistent und es kommt nicht zu Datenverlust.Therefore, the database is consistent from a data point to the time of the failure or manual failover, hence no data loss. Datenbank sind erst verfügbar, wenn die Wiederherstellung abgeschlossen ist. Die Wiederherstellungszeit hängt also von mehreren Faktoren ab und ist im Allgemeinen länger als das Ausführen eines Failovers für eine Verfügbarkeitsgruppe dauert.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. Der Nachteil besteht darin, dass beim Ausführen eines Failovers für eine Verfügbarkeitsgruppe zusätzliche Aufgaben erforderlich sein können, damit die Datenbank verwendet werden kann, z.B. das Aktivieren von SQL Server-Agent-Aufträgen.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.

FCIs abstrahieren genau wie Verfügbarkeitsgruppen, auf welchem Knoten des zugrunde liegenden Clusters diese gehostet werden.Like an availability group, FCIs abstract which node of the underlying cluster is hosting it. Eine FCI behält immer denselben Namen bei.An FCI always retains the same name. Anwendungen und Benutzer verbinden sich nie mit den Knoten, sondern der eindeutige Name, der der FCI zugewiesen ist, wird verwendet.Applications and end users never connect to the nodes; the unique name assigned to the FCI is used. Eine FCI kann in einer Verfügbarkeitsgruppe als eine der Instanzen enthalten sein, die entweder ein primäres oder ein sekundäres Replikat hosten.An FCI can participate in an availability group as one of the instances hosing either a primary or secondary replica.

Die folgende Liste hebt einige Unterschiede von FCIs zwischen Windows Server und Linux hervor:The list below highlights some differences with FCIs on Windows Server versus Linux:

  • Unter Windows Server ist FCI ein Teil des Installationsvorgangs.On Windows Server, an FCI is part of the installation process. Unter Linux wird eine FCI nach der Installation von SQL Server konfiguriert.An FCI on Linux is configured after installing SQL Server.
  • Linux unterstützt nur eine einzige Installation von SQL Server pro Host, sodass alle FCIs eine Standardinstanz darstellen.Linux only supports a single installation of SQL Server per host, so all FCIs will be a default instance. Windows Server unterstützt bis zu 25 FCIs pro WSFC.Windows Server supports up to 25 FCIs per WSFC.
  • Der allgemeine Name, der von FCIs unter Linux verwendet wird, wird in DNS definiert und sollte mit dem der Ressource identisch sein, die für die FCI erstellt wurde.The common name used by FCIs in Linux is defined in DNS, and should be the same as the resource created for the FCI.

ProtokollversandLog shipping

Wenn die Ziele für den Wiederherstellungspunkt und die Wiederherstellungszeit flexibler sind, oder Datenbanken nicht als hoch unternehmenskritisch betrachtet werden, ist der Protokollversand eine weitere bewährte Verfügbarkeitsfunktion in 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. Basierend auf den nativen Sicherungen von SQL Server generiert der Prozess für den Protokollversand automatisch Transaktionsprotokollsicherungen, kopiert diese auf eine oder mehrere Instanzen, die als betriebsbereit bekannt sind, und wendet sie auf diese Standbyinstanzen an.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. Der Protokollversand verwendet SQL Server-Agent-Aufträge, um den Sicherungs- und Kopiervorgang sowie den Anwendungsvorgang der Transaktionsprotokollsicherungen zu automatisieren.Log shipping uses SQL Server Agent jobs to automate the process of backing up, copying, and applying the transaction log backups.

Protokollversand

Der größte Vorteil der Verwendung des Protokollversands in gewissem Umfang ist der, dass menschliche Fehler erfasst werden.Arguably the biggest advantage of using log shipping in some capacity is that it accounts for human error. Die Anwendung der Transaktionsprotokolle kann verzögert werden.The application of transaction logs can be delayed. Wenn jemand also z.B. ein Update ohne eine WHERE-Klausel ausführt, verfügt die Standbyinstanz dadurch nicht über die Änderung, sodass Sie zu dieser wechseln können, während Sie das primäre System reparieren.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. Während der Protokollversand einfach zu konfigurieren ist, ist das Wechseln von der primären zur betriebsbereiten Standbyinstanz, auch als Rollenänderung bezeichnet, immer ein manueller Vorgang.While log shipping is easy to configure, switching from the primary to a warm standby, known as a role change, is always manual. Eine Rollenänderung wird über Transact-SQL initiiert, und alle Objekte, die nicht im Transaktionsprotokoll erfasst sind, müssen wie bei Verfügbarkeitsgruppen manuell synchronisiert werden.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. Der Protokollversand muss pro Datenbank konfiguriert werden, während einzelne Verfügbarkeitsgruppen mehrere Datenbanken enthalten können.Log shipping also needs to be configured per database, whereas a single availability group can contain multiple databases. Im Gegensatz zu Verfügbarkeitsgruppen oder FCIs verfügt der Protokollversand nicht über Abstraktionen für eine Rollenänderung.Unlike an availability group or FCI, log shipping has no abstraction for a role change. Anwendungen müssen damit umgehen können.Applications must be able to handle this. Techniken wie ein DNS-Alias (CNAME) können eingesetzt werden, es gibt jedoch Vor- und Nachteile, z.B. die Zeit, die ein DNS nach dem Wechsel zum Aktualisieren benötigt.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.

NotfallwiederherstellungDisaster recovery

Wenn Ihr primärer Verfügbarkeitsstandort einer Katastrophe wie einem Erdbeben oder einer Überschwemmung ausgesetzt ist, muss das Unternehmen darauf vorbereitet sein, die Systeme an anderer Stelle online schalten zu können.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. Dieser Abschnitt erläutert, wie die SQL Server-Verfügbarkeitsfunktionen Sie bei der Geschäftskontinuität unterstützen können.This section will cover how the SQL Server availability features can assist with business continuity.

Always On-VerfügbarkeitsgruppenAlways on availability groups

Einer der Vorteile von Verfügbarkeitsgruppen ist, dass Hohe Verfügbarkeit und Notfallwiederherstellung mithilfe einer einzigen Funktion konfiguriert werden können.One of the benefits of availability groups is that both high availability and disaster recovery can be configured using a single feature. Ohne die Anforderung, dass die Hochverfügbarkeit des freigegebenen Speichers sichergestellt werden muss, ist es deutlich einfacher, lokale Replikate für die Hochverfügbarkeit in einem Rechenzentrum und Remotereplikate mit jeweils separatem Speicher für die Notfallwiederherstellung in anderen Rechenzentren zu besitzen.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. Das Vorhandensein von zusätzlichen Kopien der Datenbank ist der Nachteil der Gewährleistung von Redundanz.Having additional copies of the database is the tradeoff for ensuring redundancy. Nachfolgend finden Sie ein Beispiel für eine Verfügbarkeitsgruppe, die mehrere Rechenzentren umfasst.An example of an availability group that spans multiple data centers is shown below. Ein primäres Replikat ist dafür verantwortlich, alle sekundären Replikate zu synchronisieren.One primary replica is responsible for keeping all secondary replicas synchronized.

Verfügbarkeitsgruppe

Außerhalb einer Verfügbarkeitsgruppe mit dem Clustertyp „Keiner“ erfordert eine Verfügbarkeitsgruppe, dass alle Replikate Teil desselben zugrunde liegenden Clusters (WSFC oder Pacemaker) sind.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. Das bedeutet, dass WSFC in der obigen Abbildung gestreckt wird, um in zwei verschiedenen Rechenzentren zu arbeiten, wodurch die KomplexitätThis means that in the picture above, the WSFC is stretched to work in two different data centers which adds complexity. unabhängig von der Plattform (Windows Server oder Linux) erhöht wird.regardless of the platform (Windows Server or Linux). Das Strecken von Clustern über Entfernungen erhöht die Komplexität.Stretching clusters across distance adds complexity. In SQL Server 2016 wurde eingeführt, dass eine verteilte Verfügbarkeitsgruppe es einer Verfügbarkeitsgruppe ermöglichen kann, Verfügbarkeitsgruppen zu umfassen, die auf verschiedenen Clustern konfiguriert wurden.Introduced in SQL Server 2016, a distributed availability group allows an availability group to span availability groups configured on different clusters. Dies entkoppelt die Anforderung, dass alle Knoten im selben Cluster enthalten sein müssen. Dadurch wird das Konfigurieren der Notfallwiederherstellung wesentlich einfacher.This decouples the requirement to have the nodes all participate in the same cluster, which makes configuring disaster recovery much easier. Weitere Informationen zu verteilten Verfügbarkeitsgruppen finden Sie unter Verteilte Verfügbarkeitsgruppen.For more information on distributed availability groups, see Distributed availability groups.

Diagramm einer verteilten Verfügbarkeitsgruppe

Always On-FailoverclusterinstanzenAlways on failover cluster instances

FCIs können für die Notfallwiederherstellung verwendet werden.FCIs can be used for disaster recovery. Wie bei einer normalen Verfügbarkeitsgruppe muss der zugrunde liegende Clustermechanismus auf alle Standorte erweitert werden. Dadurch wird die Komplexität erhöht.As with a normal availability group, the underlying cluster mechanism must also be extended to all locations which adds complexity. Zusätzlich muss für FCIs der freigegebene Speicher berücksichtigt werden.There is an additional consideration for FCIs: the shared storage. Dieselben Datenträger müssen für die primären und sekundären Standorte verfügbar sein. Eine externe Methode ist erforderlich, z.B. die Funktionalität, die vom Speicheranbieter auf Hardwareebene oder durch das Verwenden von Speicherreplikaten unter Windows Server bereitgestellt wird, um sicherzustellen, dass die von der FCI verwendeten Datenträger an anderer Stelle vorhanden sind.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.

Always On-FCI

ProtokollversandLog shipping

Der Protokollversand ist eine der ältesten Methoden für die Bereitstellung der Notfallwiederherstellung für SQL Server-Datenbanken.Log shipping is one of the oldest methods of providing disaster recovery for SQL Server databases. Der Protokollversand wird häufig zusammen mit Verfügbarkeitsgruppen und FCIs verwendet, um eine kosteneffektive und einfachere Notfallwiederherstellung bereitzustellen, wenn andere Optionen wegen der Umgebung, der administrativen Fähigkeiten oder des Budgets zu anspruchsvoll sind.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. Ähnlich wie bei der Hochverfügbarkeit für den Protokollverstand wird bei vielen Umgebungen das Laden eines Transaktionsprotokolls verzögert, um menschliche Fehler zu erfassen.Similar to the high availability story for log shipping, many environments will delay the loading of a transaction log to account for human error.

Migrationen und UpgradesMigrations and upgrades

Beim Bereitstellen neuer Instanzen oder beim Aktualisieren von alten kann ein Unternehmen keinen langen Ausfall tolerieren.When deploying new instances or upgrading old ones, a business cannot tolerate long outage. In diesem Abschnitt wird erläutert, wie die Verfügbarkeitsfunktionen von SQL Server verwendet werden können, um die Ausfallzeit bei einem geplanten Architekturwechsel, einem Serverwechsel, einer Plattformänderung (z.B. Windows Server zu Linux oder umgekehrt) oder während des Patchens zu minimieren.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.

Hinweis

Andere Methoden, z.B. das Verwenden von Sicherungen und deren Wiederherstellung an anderer Stelle, können ebenfalls für Migrationen und Upgrades verwendet werden.Other methods, such as using backups and restoring them elsewhere, can also be used for migrations and upgrades. Diese werden in diesem Dokument nicht erläutert.They are not discussed in this paper.

Always On-VerfügbarkeitsgruppenAlways on availability groups

Eine vorhandene Instanz mit einer oder mehreren Verfügbarkeitsgruppen kann auf SQL Server 2017 aktualisiert werden.An existing instance containing one or more availability groups can be upgraded in place to SQL Server 2017. Dies erfordert gewisse Ausfallzeiten, die jedoch durch die richtige Planung minimiert werden können.While this will require some amount of downtime, with the right amount of planning, it can be minimized.

Wenn es das Ziel ist, zu neuen Servern zu migrieren, ohne die Konfiguration zu ändern (einschließlich des Betriebssystems oder der SQL Server-Version), können diese Server als Knoten zum vorhandenen zugrunde liegenden Cluster und zur Verfügbarkeitsgruppe hinzugefügt werden.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. Sobald das Replikat oder die Replikate sich im richtigen Zustand befinden, kann ein manuelles Failover auf einen neuen Server ausgeführt werden. Die alten können dann aus der Verfügbarkeitsgruppe entfernt und letztendlich außer Betrieb genommen werden.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.

Verteilte Verfügbarkeitsgruppen stellen eine weitere Methode zum Migrieren zu einer neuen Konfiguration oder zum Aktualisieren von SQL Server dar.Distributed AGs are also another method to migrate to a new configuration or upgrade SQL Server. Da eine verteilte Verfügbarkeitsgruppe verschiedene zugrunde liegende Verfügbarkeitsgruppen auf verschiedenen Architekturen unterstützt, können Sie z.B. von SQL Server 2016 unter Windows Server 2012 R2 auf SQL Server 2017 unter Windows Server 2016 wechseln.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.

Verteilte Verfügbarkeitsgruppen

Schließlich können Verfügbarkeitsgruppen mit dem Clustertyp „Keiner“ auch für Migrationen und Upgrades verwendet werden.Finally, availability groups with a cluster type of None can also be used for migration or upgrading. Sie können Clustertypen in einer typischen Konfiguration von Verfügbarkeitsgruppen nicht mischen und anpassen, darum müssen alle Replikate den Typ „Keiner“ aufweisen.You cannot mix and match cluster types in a typical availability group configuration, so all replicas would need to be a type of None. Eine verteilte Verfügbarkeitsgruppe kann verwendet werden, um Verfügbarkeitsgruppen zu umfassen, die mit verschiedenen Clustertypen konfiguriert wurden.A distributed availability group can be used to span availability groups configured with different cluster types. Diese Methode wird auf den verschiedenen Betriebssystemplattformen unterstützt.This method is also supported across the different OS platforms.

Alle Varianten von Verfügbarkeitsgruppen für Migrationen und Upgrades ermöglichen das Erledigen der Datensynchronisierung, die den aufwendigsten Teil der Arbeit darstellt, im Lauf der Zeit.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. Wenn der Wechsel zur neuen Konfiguration initiiert werden soll, verursacht die Umstellung einen kurzen Ausfall im Gegensatz zu einer langen Ausfallzeit, in der die gesamte Arbeit, einschließlich der Datensynchronisierung, abgeschlossen werden muss.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.

Verfügbarkeitsgruppen können eine minimale Ausfallzeit während des Patchens des zugrunde liegenden Betriebssystems bereitstellen, indem manuell ein Failover vom primären zu einem sekundären Replikat ausgeführt wird, während der Patchvorgang abgeschlossen wird.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. Aus der Sicht des Betriebssystems wird dieser Vorgang unter Windows Server häufiger ausgeführt, da die Wartung des zugrunde liegenden Betriebssystems oft, aber nicht immer, einen Neustart erfordert.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. Das Patchen von Linux erfordert manchmal einen Neustart, dies ist jedoch selten der Fall.Patching Linux sometimes needs a reboot, but it can be infrequent.

Das Patchen von SQL Server-Instanzen, die in einer Verfügbarkeitsgruppe enthalten sind, kann abhängig von der Architektur der Verfügbarkeitsgruppe ebenfalls die Ausfallzeiten minimieren.Patching SQL Server instances participating in an availability group can also minimize downtime depending on how complex the availability group architecture is. Bevor die Server gepatcht werden, die in einer Verfügbarkeitsgruppe enthalten sind, wird zunächst das sekundäre Replikat gepatcht.To patch servers participating in an availability group, a secondary replica is patched first. Sobald die richtige Anzahl von Replikaten gepatcht wurde, wird ein manuelles Failover des primären Replikats auf einen anderen Knoten ausgeführt, um das Upgrade durchzuführen.Once the right number of replicas are patched, the primary replica is manually failed over to another node to do the upgrade. Alle zu diesem Zeitpunkt verbleibenden sekundären Replikate können ebenfalls aktualisiert werden.Any remaining secondary replicas at that point can be upgraded, too.

Always On-FailoverclusterinstanzenAlways on failover cluster instances

FCIs allein können traditionelle Migrationen und Upgrades nicht unterstützen. Eine Verfügbarkeitsgruppe oder ein Protokollversand muss für die Datenbanken im FCI und alle anderen berücksichtigten Objekte konfiguriert werden.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. FCIs unter Windows Server sind jedoch weiterhin eine beliebte Option, wenn die zugrunde liegenden Windows-Server gepatcht werden müssen.However, FCIs under Windows Server are still a popular option for when the underlying Windows Servers need to be patched. Ein manuelles Failover kann initiiert werden, was einen kurzen Ausfall bedeutet, statt dass die Instanz für die gesamte Zeit nicht verfügbar ist, in der Windows Server gepatcht wird.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. Eine FCI kann auf SQL Server 2017 aktualisiert werden.An FCI can be upgraded in place to SQL Server 2017. Weitere Informationen finden Sie unter Aktualisieren einer SQL Server-Failoverclusterinstanz.For information, see Upgrade a SQL Server Failover Cluster Instance.

ProtokollversandLog shipping

Der Protokollversand ist immer noch eine beliebte Option zum Migrieren und Aktualisieren von Datenbanken.Log shipping is still a popular option to both migrate and upgrade databases. Ähnlich wie bei Verfügbarkeitsgruppen kann die Datenweitergabe vor dem Serverwechsel gestartet werden, dieses Mal wird jedoch das Transaktionsprotokoll als Synchronisierungsmethode verwendet.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. Zum Zweitpunkt des Wechsels, wenn der gesamte Datenverkehr an der Quelle beendet wurde, muss ein letztes Transaktionsprotokoll ausgeführt, kopiert und auf die neue Konfiguration angewendet werden.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. An diesem Punkt kann die Datenbank online geschaltet werden.At that point, the database can be brought online. Der Protokollversand ist häufig toleranter gegenüber langsameren Netzwerken. Während der Wechsel etwas länger als beim Verwenden einer Verfügbarkeitsgruppe oder einer verteilten Verfügbarkeitsgruppe dauern kann, wird dieser üblicherweise in Minuten gemessen, nicht in Stunden, Tagen oder Wochen.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.

Ähnlich wie bei Verfügbarkeitsgruppen kann der Protokollversand eine Möglichkeit bereitstellen, um während des Patchens auf einen anderen Server zu wechseln.Similar to availability groups, log shipping can provide a way to switch to another server in the event of patching.

Andere SQL Server-Bereitstellungsmethoden und VerfügbarkeitOther SQL Server deployment methods and availability

Es gibt zwei Bereitstellungsmethoden für SQL Server unter Linux: Container und das Verwenden von Azure (oder einem anderen öffentlichen Cloudanbieter).There are two other deployment methods for SQL Server on Linux: containers and using Azure (or another public cloud provider). Die allgemeine Notwendigkeit der Verfügbarkeit, die in diesem Dokument erläutert wird, besteht unabhängig von der Bereitstellungsmethode von SQL Server.The general need for availability as presented throughout this paper exists regardless of how SQL Server is deployed. Beide Methoden weisen Besonderheiten auf, wenn SQL Server hoch verfügbar gemacht werden soll.These two methods have some special considerations when it comes to making SQL Server highly available.

Container, die Docker verwenden sind eine neue Möglichkeit für das Bereitstellen von SQL Server unter Windows Server oder Linux.Containers using Docker are a new way of deploying SQL Server, either for Windows Server or Linux. Ein Container ist ein vollständiges Image von SQL Server, das für die Ausführung bereit ist.A container is a complete image of SQL Server that is ready to run. Es gibt jedoch derzeit keine native Unterstützung für das Clustering und dadurch auch nicht für die direkte Hochverfügbarkeit oder die Notfallwiederherstellung.However, there is currently no native support for clustering, and thus, direct high availability or disaster recovery. Die derzeitigen Optionen, um SQL Server-Datenbanken mithilfe von Containern verfügbar zu machen, sind der Protokollversand sowie die Sicherung und Wiederherstellung.Currently, the options to make SQL Server databases available using containers would be log shipping and backup and restore. Obwohl eine Verfügbarkeitsgruppe mit dem Clustertyp „Keiner“ wie bereits erwähnt konfiguriert werden kann, wird dies nicht als echte Konfiguration für Verfügbarkeitsgruppen betrachtet.While an availability group with a cluster type of None can be configured, as noted earlier, it is not considered a true availability configuration. Microsoft arbeitet an Möglichkeiten, um Verfügbarkeitsgruppen oder FCIs beim Verwenden von Containern zu aktivieren.Microsoft is looking at ways to enable availability groups or FCIs using containers.

Wenn Sie Container verwenden und der Container verloren geht, kann er, abhängig von der Containerplattform, erneut bereitgestellt und an den freigegebenen Speicher angefügt werden, der verwendet wurde.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. Einige dieser Mechanismen werden vom Containerorchestrator bereitgestellt.Some of this mechanism is provided by the container orchestrator. Obwohl dadurch Stabilität bereitgestellt wird, kann es zu Ausfällen im Zusammenhang mit der Datenbankwiederherstellung kommen und die Hochverfügbarkeit wird nicht genauso wie bei Verwendung einer Verfügbarkeitsgruppe oder FCI gewährleistet.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.

Virtuelle IaaS-Computer mit Linux können mithilfe von Azure mit einer Installation von SQL Server bereitgestellt werden.Linux IaaS virtual machines can be deployed with SQL Server installed using Azure. Bei lokalen Installationen erfordert eine unterstützte Installation die Verwendung von STONITH (Shoot the Other Node in the Head), das sich außerhalb von Pacemaker befindet.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. STONITH wird über Agents für das Umgrenzen der Verfügbarkeit bereitgestellt.STONITH is provided via fencing availability agents. In einigen Verteilungen sind diese als Teil der Plattform enthalten, andere basieren auf externer Hardware und Softwareanbietern.Some distributions ship them as part of the platform, others rely on external hardware and software vendors. Überprüfen Sie für Ihre bevorzugte Linux-Verteilung, um festzustellen, welche Arten von STONITH bereitgestellt werden, damit eine unterstützte Lösung in der öffentlichen Cloud bereitgestellt werden kann.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.

Interoperabilität – plattformübergreifend und für Linux-VerteilungenCross-platform and Linux distribution interoperability

Da SQL Server nun unter Windows Server und Linux unterstützt wird, deckt dieser Abschnitt die Szenarios ab, wie diese zusätzlich zu anderen Zwecken für die Verfügbarkeit zusammenarbeiten können sowie die Lösungen, durch die mehr als eine Linux-Verteilung integriert werden kann.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.

Bevor die plattformübergreifenden Szenarios und die für die Interoperabilität abgedeckt werden, müssen zwei Fakten festgehalten werden:Before covering the cross-platform and interoperability scenarios, two facts need to be stated:

  • Es gibt keine Szenarios, in denen eine WSFC-basierte FCI oder Verfügbarkeitsgruppe direkt mit einer Linux-basierten FCI oder Verfügbarkeitsgruppe zusammenarbeitet.There are no scenarios where a WSFC-based FCI or availability group will work with a Linux-based FCI or availability group directly. Ein WSFC kann nicht durch einen Pacemaker-Knoten erweitert werden und umgekehrt.A WSFC cannot be extended by a Pacemaker node and vice versa.
  • Das Mischen von Linux-Verteilungen wird von FCIs oder Verfügbarkeitsgruppen mit dem Clustertyp „Extern“ nicht unterstützt.Mixing Linux distributions is not supported with FCIs or an availability group that has a cluster type of External. Alle Replikate von Verfügbarkeitsgruppen in diesem Szenario müssen nicht nur für die gleiche Linux-Verteilung, sondern auch für die gleiche Version konfiguriert werden.All availability group replicas in that scenario must be configured not only the same Linux distribution, but also the same version. Die zwei unterstützten Methoden, durch die SQL Server auf beiden Plattformen oder auf mehreren Verteilungen von Linux arbeiten können, sind Verfügbarkeitsgruppen und der Protokollversand.The two supported ways that SQL Server can operate across the two platforms or multiple distributions of Linux are availability groups and log shipping.

Verteilte VerfügbarkeitsgruppenDistributed availability groups

Verteilte Verfügbarkeitsgruppen wurden dafür entwickelt, mehrere Konfigurationen für Verfügbarkeitsgruppen zu umfassen, unabhängig davon, ob die zwei zugrunde liegenden Cluster der Verfügbarkeitsgruppen zwei verschiedene WSFCs oder Linux-Verteilungen sind oder ob einer sich auf einem WSFC und der andere auf Linux befindet.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. Eine verteilte Verfügbarkeitsgruppe ist die primäre Methode für plattformübergreifende Lösungen.A distributed availability group will be the primary method of having a cross platform solution. Eine verteilte Verfügbarkeitsgruppe ist außerdem die primäre Lösung für Migrationen, z.B. für das Konvertieren von einer Windows Server-basierten SQL Server-Infrastruktur zu einer Linux-basierten, wenn Ihr Unternehmen dies durchführen möchte.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. Wie bereits erwähnt minimieren Verfügbarkeitsgruppen, insbesondere verteilte Verfügbarkeitsgruppen, die Zeit, die eine Anwendung nicht für die Verwendung verfügbar ist.As noted above, availability groups, and especially distributed availability groups, would minimize the time that an application would be unavailable for use. Im Folgenden wird ein Beispiel für eine verteilte Verfügbarkeitsgruppe dargestellt, die einen WSFC und Pacemaker umfasst.An example of a distributed availability group that spans a WSFC and Pacemaker is shown below.

Diagramm: verteilte Verfügbarkeitsgruppe, die einen WSFC und Pacemaker umfasst

Wenn eine Verfügbarkeitsgruppe mit dem Clustertyp „Keiner“ konfiguriert ist, kann diese Windows Server und Linux umfassen sowie mehrere Linux-Verteilungen.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. Da es sich dabei nicht um eine echte Konfiguration für die Hochverfügbarkeit handelt, sollte diese nicht für unternehmenskritische Bereitstellungen verwendet werden, sondern für schreibgeschützte Szenarios sowie für Migrations- und Upgradeszenarios.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.

ProtokollversandLog shipping

Da der Protokollversand nur auf Sicherung und Wiederherstellung basiert, gibt es keine Unterschiede zwischen den Datenbanken, Dateistrukturen usw. für SQL Server unter Windows Server oder 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. Dies bedeutet, dass der Protokollversand zwischen einer Windows Server-basierten Installation von SQL Server und einer Linux-basierten konfiguriert werden kann und ebenfalls zwischen Linux-Verteilungen.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. Alles andere bleibt unverändert.Everything else remains the same. Es muss allerdings berücksichtigt werden, dass der Protokollversand, genau wie eine Verfügbarkeitsgruppe, nicht funktioniert, wenn die Quelle sich auf einer höheren Hauptversion von SQL Server befindet als das Ziel, das sich auf einer früheren Version von SQL Server befindet.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.

Schreibgeschütztread-scale

Seit sekundäre Replikate in SQL Server 2012 eingeführt wurden, können diese für schreibgeschützte Abfragen verwendet werden.Since their introduction in SQL Server 2012, secondary replicas have had the ability to be used for read-only queries. Es gibt zwei Möglichkeiten, wie dies mit einer Verfügbarkeitsgruppe erzielt werden kann: Indem direkter Zugriff auf das sekundäre Replikat gewährt wird oder indem das schreibgeschützte Routing konfiguriert wird, wofür die Verwendung eines Listeners erforderlich ist.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. In SQL Server 2016 wurde die Möglichkeit eingeführt, einen Lastenausgleich für schreibgeschützte Verbindungen über den Listener vorzunehmen, indem ein Roundrobin-Algorithmus verwendet wird. Dadurch können schreibgeschützte Anforderungen über alle lesbaren Replikate verteilt werden.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.

Hinweis

Lesbare sekundäre Replikate sind eine Funktion, die nur in der Enterprise Edition enthalten ist. Jede Instanz, die ein lesbares Replikat hostet, erfordert eine SQL Server-Lizenz.Readable secondary replicas is a feature only in Enterprise Edition, and each instance hosting a readable replica would need a SQL Server license.

Die Skalierung von lesbaren Kopien einer Datenbank über Verfügbarkeitsgruppen wurde erstmals mit den verteilten Verfügbarkeitsgruppen in SQL Server 2016 eingeführt.Scaling readable copies of a database via availability groups was first introduced with distributed availability groups in SQL Server 2016. Dadurch können Unternehmen schreibgeschützte Kopien der Datenbank nicht nur lokal besitzen, sondern auch regional und global mit minimalem Konfigurationsaufwand. Außerdem werden durch lokal ausgeführte Abfragen der Netzwerkdatenverkehr und die Latenz reduziert.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. Jedes primäre Replikat einer Verfügbarkeitsgruppe kann für zwei andere Verfügbarkeitsgruppen ein Seeding ausführen, selbst wenn es sich nicht um eine vollständige Lese-/Schreibkopie handelt. Somit kann jede verteilte Verfügbarkeitsgruppe bis zu 27 lesbare Kopien einer Datei unterstützen.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.

Diagramm: verteilte Verfügbarkeitsgruppe im Zusammenhang mit der Leseskalierung

Ab SQL Server 2017 ist es möglich, eine schreibgeschützte Lösung mit Verfügbarkeitsgruppen mit dem Clustertyp „Keiner“ nahezu in Echtzeit zu erstellen.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. Wenn es das Ziel ist, Verfügbarkeitsgruppen für lesbare sekundäre Replikate und nicht für die Verfügbarkeit zu verwenden, wird dadurch die Komplexität der Verwendung eines WSFC oder von Pacemaker entfernt, außerdem erhalten die lesbaren Replikate die Vorteile einer Verfügbarkeitsgruppe in einer einfacheren Bereitstellungsmethode.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.

Dabei muss allerdings berücksichtigt werden, dass kein Cluster mit dem Clustertyp „Keiner“ vorhanden ist und das Konfigurieren des schreibgeschützten Routings sich dadurch geringfügig unterscheidet.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. Aus der Sicht von SQL Server ist immer noch ein Listener erforderlich, um die Anforderungen weiterzuleiten, obwohl kein Cluster vorhanden ist.From a SQL Server perspective, a listener is still required to route the requests even though there is no cluster. Anstatt einen traditionellen Listener zu konfigurieren, wird die IP-Adresse oder der Name des primären Replikats verwendet.Instead of configuring a traditional listener, the IP address or name of the primary replica is used. Das primäre Replikat wird dann verwendet, um die schreibgeschützten Anforderungen weiterzuleiten.The primary replica is then used to route the read only requests.

Ein betriebsbereiter Protokollversand kann technisch gesehen für die Lesbarkeit konfiguriert werden, indem die Datenbank mit der WITH STANDBY-Klausel wiederherstellen.A log shipping warm standby can technically be configured for readable usage by restoring the database WITH STANDBY. Da die Transaktionsprotokolle jedoch die exklusive Verwendung der Datenbank für die Wiederherstellung benötigen, können Benutzer währenddessen nicht auf die Datenbank zugreifen.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. Dadurch ist der Protokollversand keine ideale Lösung, besonders wenn Daten nahezu in Echtzeit erforderlich sind.This makes log shipping a less than ideal solution - especially if near real-time data is required.

Bei allen Szenarios für die schreibgeschützte horizontale Skalierung mit Verfügbarkeitsgruppen sollte beachtet werden, dass anders als bei der Transaktionsreplikation, bei der Livedaten verwendet werden, die sekundären Replikate sich nicht in einem Zustand befinden, in dem eindeutige Indizes angewendet werden können und das Replikat eine exakte Kopie des primären Replikats ist.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. Wenn die erforderlichen Indizes für die Berichterstellung oder die Daten bearbeitet werden müssen, bedeutet das, dass dies auf den Datenbanken auf dem primären Replikat erfolgen muss.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. Wenn Sie Flexibilität benötigen, ist die Replikation die bessere Lösung für lesbare Daten.If you need that flexibility, replication is a better solution for readable data.

ZusammenfassungSummary

Instanzen und Datenbanken von SQL Server 2017 können hoch verfügbar gemacht werden, indem die gleichen Funktionen unter Windows Server und Linux verwendet werden.Instances and databases of SQL Server 2017 can be made highly available using the same features on both Windows Server and Linux. Neben den Standardszenarios für die lokale Hochverfügbarkeit und die Verfügbarkeit der Notfallwiederherstellung kann die Ausfallzeit bei Upgrades und Migrationen durch die Verfügbarkeitsfunktionen in SQL Server minimiert werden.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. Verfügbarkeitsgruppen können ebenfalls zusätzliche Kopien einer Datenbank als Teil derselben Architektur bereitstellen, um schreibgeschützte Kopien aufzuskalieren.Availability groups can also provide additional copies of a database as part of the same architecture to scale out readable copies. Ob Sie eine neue Lösung mithilfe von SQL Server 2017 bereitstellen möchten oder ein Upgrade erwägen: SQL Server 2017 bietet Ihnen die Verfügbarkeit und Zuverlässigkeit, die Sie benötigen.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.