Blog
Wednesday, 15. February 2023

Managed Instance Links - On-Prem Managed Instance

Attila
IT–Consultant

Managed Instance Links (“MI-Links”) stellen ein Mittel dar, mit dem man seine SQL–Server Instanz mit einer Azure Managed Instanz verbinden kann. Bei der Einrichtung eines solchen Links sind einige Schritte durchzuführen und einige Voraussetzungen zu betrachten. Ein solcher Link kann eingesetzt werden, um

  • eine Migration einer On-Prem Instanz zu einer Azure Managed Instanz durchzuführen
  • eine Notfallwiederherstellung durchzuführen
  • ein Replikat in die Cloud zu erstellen

In diesem Dokument stellen wir die Schritte vor, die zur Vorbereitung der Umgebung und zum Erstellen eines MI-Links erforderlich sind, der eine Datenreplikation nahezu in Echtzeit zwischen SQL–Server und Azure SQL Managed Instance mithilfe von verteilten Verfügbarkeitsgruppen ermöglicht.

Anforderungen

  • Managed Instance Link Setup Skript Paket welches hier heruntergeladen werden kann.

  • Administratorzugriff auf beide Instanzen mithilfe des T–SQL-Endpunkts.

  • Zertifikatbasierte Authentifizierung mit Austauschen der öffentlichen Schlüssel beider Instanzen

  • Sichere Konnektivität (VPN) zwischen dem lokalen Netzwerk und Azure. Zwischen den beiden Instanzen muss eine Site-to-Site-Konnektivität erstellt werden (ein MI-Link kann nur über private Konnektivität hergestellt werden). Folgende Ports auf der Netzwerksicherheitsgruppe (NSG) im Azure SQL Managed Instance-Subnetz müssen freigeschaltet werden:

    • 1433
    • 5022
    • 11000-11999 (In & Out)
    • Port 5022 auf dem SQL–Server muss freigeschaltet werden
  • Power Shell Zugriff auf die Managed Azure Instanz, wobei mindestens Version 3.9.0 benötigt wird

PS > Install-Module -Name Az.Sql
  • PowerShell Az.Accounts-Modul Version 2.8.0 oder neuer.
PS > Install-Module -Name Az.Accounts
  • SQL–Server-Modul Version 21.1.18256 oder neuer.
PS > Install-Module -Name SqlServer -RequiredVersion 21.1.18256

Trace-Flags (empfohlen):

T9567: aktiviert die Komprimierung des Datastreams für Verfügbarkeitsgruppen während des automatischen Seedings. Die Komprimierung erhöht die Belastung der CPU, kann aber die Übertragungszeiten während des Seedings erheblich verkürzen. Um das Flag einzustellen muss man den SQL Server Configuration Manager starten, SQL–Server Services auswählen und auf den SQL–Server mit Rechtsklick Properties auswählen

Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance
Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance
  • T1800 (optional): optimiert die Leistung, wenn die Protokolldateien für die primären und sekundären Replikate in einer Verfügbarkeitsgruppe auf Datenträgern mit unterschiedlichen Sektorgrößen gehostet werden, z. B. 512 Byte und 4 KB.

Einschränkungen

Obwohl der Managed Instanz Link sehr hilfreich ist, existieren Einschränkungen die ein Setup verhindern könnten. MI-Links unterstützen zur Zeit keine:

  • Systemdatenbanken, also nur Benutzerdatenbanken
  • Verfügbarkeitsgruppen mit mehreren Datenbanken
  • Betriebssysteme wie Windows 10 & 11 (nur Windows Server 2012 oder höher)
  • SQL–Server 2014 oder ältere Versionen (nur SQL–Server 2016 SP3 oder neuer, SQL–Server 2019 CU15 oder neuer, SQL-Server 2022)
  • Datenbanken mit In-Memory Objekten
  • Dateitabellen und Dateistreams
  • Windows-Authentifizierung (nur Zertifikate)

Eine vollständige Liste der Einschränkungen befindet sich in der hier verlinkten Microsoft Dokumentation.

Das Managed Instance Link Setup Module

Dieses Modul automatisiert die Erstellung eines Managed Instance Links. Es prüft und erstellt die lokale Instanz für die Integration in eine verteilte Verfügbarkeitsgruppe (zwischen lokaler Instanz und Azure SQL Managed Instanz).

Wenn die lokale Instanz schon Teil einer Verfügbarkeitsgruppe ist, werden alle beteiligten Instanzen mit geprüft.

Vorbereitung und Validierung der SQL–Server Instance

Zur Vorbereitung und Validierung brauchen wir jeweils das gleiche cmdlet, nämlich ValidateAndPrepareMiLinkSetup.

Ausführungsberechtigung erteilen

PS > Set-ExecutionPolicy Unrestricted -Scope Process

Modul Import (vgl. Download Link im Kapitel "Anforderungen")

PS > Import-Module 'C:\{pathtoscript}\MiLinkSetup.ps1'

Ausführung des Cmdlets

PS > ValidateAndPrepareMiLinkSetup -SqlInstance localhost -ManagedInstanceName azsql4mng01

Das cmdlet ValidateAndPrepareMiLinkSetup

Das cmdlet führt 11 Schritte aus:

  1. Prüft ob die Instanz Teil einer Always On Availability Gruppe oder ob es sich um eine Single Instanz handelt
Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance
  1. Prüft, ob die Instanzversion die Mindestvoraussetzungen erfüllt.
Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance
  1. Prüft den Database Master Key. Falls dieser nicht vorhanden ist, wird er in der Master DB erstellt.
Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance
  1. Die HADR / AlwaysOn Funktion muss aktiviert sein. Falls dies nicht der Fall ist, muss sie manuell aktiviert werden (Neustart erforderlich).
Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance
  1. Importiert die notwendigen Zertifikate
Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance
  1. Überprüft, ob der Database Mirroring Endpoint eine Zertifikatsauthentifizierung verwendet. Sollte dies nicht der Fall sein, wird diese eingerichtet.
Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance
  1. Anschließend wird die Erreichbarkeit des Database Mirroring Endpoint (“DBM”) überprüft.
Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance
  1. Nach einem Azure Login wird sichergestellt, dass die maximale Anzahl der Datenbanken in der Managed Instanz nicht überschritten wird (Max. 100 pro Managed Instanz) und dass die Instanz nicht Teil einer Auto Failover Gruppe ist.
Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance
  1. Das DBM Zertifikat der Managed Instanz wird in die SQL–Server Instanz kopiert.
Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance
  1. Das DBM Zertifikat der SQL–Server Instanz wird in die Managed Instanz kopiert.
Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance
  1. Die Verbindung zwischen den beiden Instanzen wird geprüft.
Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance

Damit sind die Prüfungsschritte abgeschlossen:

Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance

Das cmdlet CreateMiLink

Zur Erstellung des Links zwischen den beiden Instanzen wird das CreateMiLink cmdlet benutzt. Es prüft, ob die Instanzen in einem Link zwischen lokaler und Managed Instanz benutzt werden können. Wenn alles den Anforderungen entspricht, wird ein Link erstellt und die lokale Datenbank in die Managed Instanz synchronisiert.

Wichtig! Wenn die Datenbank Teil einer Always On Gruppe ist, darf nur eine Datenbank in der Gruppe sein, andernfalls erscheint die folgende Fehlermeldung:

Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance

Ausführung

Ausführungberechtigung korrigieren falls nötig

PS > Set-ExecutionPolicy Unrestricted -Scope Process

Modul Import

PS > Import-Module 'C:\{pathtoscript}\MiLinkSetup.ps1'

Die Ausführung des cmdlets kann mit mehreren Parametern je nach Bedarf ausgeführt werden. Hier ein paar Beispiele:

Der Standard Befehl, lediglich mit den Pflichtparametern für

  • die Quellinstanz
  • die (managed) Zielinstanz
  • und die zu übernehmende(n) Datenbank(en)

lautet dann:

PS > CreateMiLink -SqlInstance localhost -ManagedInstanceName azsql4mng01 -DatabaseNameList "AdventureWorks2019"

Der folgende Befehl validiert die DB und wenn kein Full Backup existiert, wird dieses vor der Erstellung des Links erstellt.

PS > CreateMiLink -SqlInstance localhost -ManagedInstanceName azsql4mng01 -DatabaseNameList "AdventureWorks2019" -BackupPathLocation "E:\BACKUP"

Der folgende Aufruf validiert alle Datenbanken und synchronisiert die Datenbanken unter Verwendung einer Parallelität von zwei:

PS > CreateMiLink -SqlInstance localhost -ManagedInstanceName azsql4mng01 -DatabaseNameList "*" -ParallelSeededDatabaseCount 2

Das cmdlet CreateMiLink führt 8 Schritte aus:

  1. Prüft ob die Instanz Teil einer Always On Availability Gruppe ist oder es sich um eine Single Instanz handelt
Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance
  1. Prüft, ob die Instanzversion die Mindestvoraussetzungen erfüllt.
Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance
  1. Nach einem Azure Login wird die Resource Gruppe gesucht, zu welcher die Managed Instanz gehört, und es wird geprüft, dass die maximale Anzahl der Datenbanken in der Managed Instanz nicht überschritten wird (max. 100 DBs pro Managed Instanz).
Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance
  1. Alle Datenbanken werden unter anderem auf folgendes geprüft:
    • ob sie Online sind
    • nicht Teil der Managed Instance sind
    • ob sie weder Filestream Container noch In-Memory Container haben uvm.
Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance
  1. Das Recoverymodell muss bei allen Datenbanken auf FULL gesetzt sein.
Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance
  1. Der Verschlüsselungsstatus jeder Datenbank (in der bereitgestellten Datenbankliste) wird überprüft. Wenn die Datenbank TDE-geschützt ist, wird der Benutzer gefragt, ob das Verschlüsselungszertifikat gesichert und in die verwaltete Azure SQL-Instanz hochgeladen werden soll. Wenn nicht, wird die Datenbank ausgelassen. Wenn es erlaubt ist, wird das TDE-Zertifikat an dem im Parameter BackupPathLocation angegebenen Speicherort gesichert, konvertiert und in Azure SQL Managed Instance hochgeladen.
Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance
  1. Zusammenfassung und Bestätigung der geprüften Datenbanken
Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance
  1. Managed Instanz Link wird erstellt
Mainzer Datenfabrik - Managed Instance Links - On-Prem Managed Instance

Fazit

Der Managed Instanz Link zwischen der lokalen Datenbank und Azure SQL Managed Instance ist damit erstellt und in Betrieb genommen und dadurch die Migrationen einer lokalen auf eine Managed Instanz ohne Ausfall ermöglicht worden.

Sollten Sie Fragen zu diesem Artikel oder Probleme mit bei der Migration haben, stehen wir Ihnen gerne zur Verfügung. Nutzen Sie dafür unverbindlich unser Kontaktformular.

Interesse geweckt?

Unsere Expert:innen stehen Ihnen bei allen Fragen rund um Ihre IT Infrastruktur zur Seite.

Kontaktieren Sie uns gerne über das Kontaktformular und vereinbaren ein unverbindliches Beratungsgespräch mit unseren Berater:innen zur Bedarfsevaluierung. Gemeinsam optimieren wir Ihre Umgebung und steigern Ihre Performance!
Wir freuen uns auf Ihre Kontaktaufnahme!

Taunusstraße 72
55118 Mainz
info@madafa.de
+49 6131 3331612
Bürozeiten
Montag bis Donnerstag:
9:00 - 17:00 Uhr MEZ

Freitags:
9:30 - 14:00 Uhr MEZ
Wir sind Ihre SQL Expert:innen!
Noch Fragen? - Wir haben immer die passende Antwort für Sie!