Die Migration der Citrix Datenbanken ist eine Aufgabe, die jeder Citrix Administrator früher oder später erledigen soll. Hier finden sie die entsprechende Screenshot-Anleitung dazu.
Die offizielle Herstellerdokumentation finden Sie unter folgendem Link: How to Migrate XenDesktop Database to New SQL Server
Konfigurationsschritte
Die Migration der Datenbanken lässt sich in folgende Schritte unterteilen:
01. Sichern Sie alle betroffenen Komponenten (Datenbanken und Citrix Delivery Controller)
02. Wiederherstellungsmodus der Citrix Datenbanken ändern
03. Monitoring und Logging Funktionalität auf allen Delivery Controllern deaktivieren.
04. Einen Full-Backup der drei Citrix Datenbanken inkl. die Backups der Transaktion-Logs erstellen.
05. Die Datenbank-Backups auf den ersten DB-Server (Principal) kopieren.
06. Die Datenbank-Backups auf den zweiten DB-Server (Mirror) kopieren.
07. Die drei DBs auf dem ersten DB-Server (Principal) wiederherstellen.
08. Die drei DBs mit Option RESTORE WITH NORECOVERY auf dem zweiten DB-Server (Mirror) wiederherstellen.
09. Die Login-Accounts für alle DDCs einrichten auf beiden Datenbanken erstellen
10. Das Mapping und die Rollen-Mitgliedschaft bzw. Zugriffsberechtigung anpassen
11. Die Spiegelung für die drei Citrix DBs einrichten
12. Die bestehenden Datenbank-Verbindungen zwischen den DDCs und die DB trennen. (auf jedem Delivery Controller)
13. Die die migrierten Datenbanken anbinden (auf jedem Delivery Controller)
14. Die bestehende Kommunikation Verifizieren
15. Monitoring und Logging aktivieren
2. Wiederherstellungsmodus ändern
Diesen Schritt wird auf dem Standalone-SQL-Server ausgeführt. Passen Sie die Eigenschaften der drei aktuellen Citrix-Datenbanken (Site, Monitoring, Logging) an.
Soll Zustand
3. Monitoring und Logging Funktionalität deaktivieren
Die schnellste Methode dafür, ist die Verwendung den folgenden PowerShell Befehlen:
##Disable Monitoring
Set-MonitorConfiguration -DataCollectionEnabled $false
##Disable Configuration Logging
Set-LogSite -State Disabled
4. Backup der Citrix Datenbanken erstellen
Diese Schritte wirden auf dem Standalone-SQL-Server ausgeführt.
1. Datenbank auswählen > Tasks > Sichern > Sichrungstyp: Vollständig
2. Sichrungstyp: Vollständig
Einfachheitshalber verwerde ich den Standardpfad:
SQL 2016: - C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup
SQL 2017: - C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Backup
3. Datenbank auswählen > Tasks > Sichern > Sichrungstyp: Transaktionsprotokoll
4. Für weitere Datenbanken wiederholen (Monitoring, Logging):
5 - 6. Die Backups kopieren
Kopieren Sie die erstellten DBs auf beiden Datenbank-Server.
C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Backup
7. DBs auf dem Principal-Server wiederherstellen
1. Datenbanken > Rechtemaustaste > Datenbank wiederherstellen
2. Quelle auswählen
3. Hinzufügen
4. Die Datenbank auswählen
5. In diesem Fall werden keine weiteren Optionen angepasst. Wiederherstellungsstatus: RESTORE WITH RECOVERY
Den Wizard mit OK beenden.
8. DBs auf dem Mirror-Server wiederherstellen
Wiederholen Sie die Schritte 1-5. Klicken Sie auf die Registerkarte Optionen. In diesem Fall RESTORE WITH NORECOVERY auswählen.
9. Login-Accounts erstellen
Führen folgende Befehlskette auf jedem DB-Server aus.
create login [Domainname\DC-Servername$] from windows
10. Berechtigung anpassen
Passen Sie die Berechtigung des oberen User-Accounts (Machine Account: CTX-DDC1$) an, falls die Berechtigung/Rollen nicht automatisch übernommen wird.
Account auswählen > Rechtemaustaste > Eingenschaften
Logging Datenbank
Monitoring Datenbank
Site Datenbank
11. Datenbank Spiegelung Wizard Step-by-Step
1
2
3
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Wiederholen Sie die oberen Schritte auch für zwei weiteren Datenbanken: Logging und Monitoring
16. Wenn folgende Fehlermeldung auftritt, handelt es sich höchstwahrscheinlich um einen Bug in SQL Management Studio ab 17.x. Die alte Version 16.x funktioniert fehlerfrei.
Fehler beim Starten der Spiegelung. Die DB-Name-Datenbank kann nicht geöffnet werden. Sie wird zurzeit wiederherstellt. (Microsoft SQL Server, Fehler: 927)
17. Endergebnis
Principal Instance:
Mirror Instance:
12. Datenbank-Verbindungen zwischen den DDCs und die DB trennen
Auf den Citrix Delivery Controller alle bestehenden Datenbank-Verbindungen zwischen Citrix und SQL Server trennen.
## Kommunikation zwischen DDCs und der Datenbank trennen:
Set-ConfigDBConnection -DBConnection $null
Set-AcctDBConnection -DBConnection $null
Set-AnalyticsDBConnection -DBConnection $null # 7.6 and newer
Set-AppLibDBConnection -DBConnection $null # 7.8 and newer
Set-OrchDBConnection -DBConnection $null # 7.11 and newer
Set-TrustDBConnection -DBConnection $null # 7.11 and newer
Set-HypDBConnection -DBConnection $null
Set-ProvDBConnection -DBConnection $null
Set-BrokerDBConnection -DBConnection $null
Set-EnvTestDBConnection -DBConnection $null
Set-SfDBConnection -DBConnection $null
Set-MonitorDBConnection -DataStore Monitor -DBConnection $null
Set-MonitorDBConnection -DBConnection $null
Set-LogDBConnection -DataStore Logging -DBConnection $null
Set-LogDBConnection -DBConnection $null
Set-AdminDBConnection -DBConnection $null -force
13. Die bereits migrierten Datenbanken anbinden (auf jedem Delivery Controller)
##
## Ersetzen Sie durch den neuen SQL-Server und die Instanz, falls vorhanden
## Ersetzen Sie durch den Namen Ihrer wiederhergestellten Datenbank
## Beispiel:
### $ServerName=”PrinzipalSQLServerDNSName.domain.com”
### $DBName =”CitrixSitekonfigurationDatenbank”
### $LogDBName = “CitrixProtokollierungDatanbank”
### $MonitorDBName = “CitrixMonitoringDatanbank”
### $FailoverPartner = “MirrorSQLDNSname.domain.com”
##
$ServerName=”SQL-M01.demo.lab”
$DBName =”CTX_DB_Site”
$LogDBName = “CTX_DB_Conf”
$MonitorDBName = “CTX_DB_Mon”
$FailoverPartner = “SQL-M02.demo.lab”
$cs=”Server=$ServerName;Initial Catalog=$DBName;Integrated Security=True;Failover Partner=$FailoverPartner”
$csLogging= “Server=$ServerName;Initial Catalog=$LogDBName;Integrated Security=True;Failover Partner=$FailoverPartner”
$csMonitoring = “Server=$ServerName;Initial Catalog=$MonitorDBName;Integrated Security=True;Failover Partner=$FailoverPartner”
Set-AdminDBConnection -DBConnection $cs
Set-ConfigDBConnection -DBConnection $cs
Set-AcctDBConnection -DBConnection $cs
Set-AnalyticsDBConnection -DBConnection $cs
Set-HypDBConnection -DBConnection $cs
Set-ProvDBConnection -DBConnection $cs
#Set-PvsVmDBConnection -DBConnection $cs
Set-BrokerDBConnection -DBConnection $cs
Set-EnvTestDBConnection -DBConnection $cs
Set-LogDBConnection -DBConnection $cs
Set-LogDBConnection -DataStore Logging -DBConnection $null
Set-LogDBConnection -DBConnection $null
Set-LogDBConnection -DBConnection $cs
Set-LogDBConnection -DataStore Logging -DBConnection $csLogging
Set-MonitorDBConnection -DBConnection $cs
Set-MonitorDBConnection -DataStore Monitor -DBConnection $null
Set-MonitorDBConnection -DBConnection $null
Set-MonitorDBConnection -DBConnection $cs
Set-MonitorDBConnection -DataStore Monitor -DBConnection $csMonitoring
Set-AppLibDBConnection –DBConnection $cs # 7.8 and newer
Set-SfDBConnection -DBConnection $cs
14. Verifizieren Sie die DB-Kommunikation
Get-AcctServiceStatus
Get-AdminServiceStatus
Get-BrokerServiceStatus
Get-ConfigServiceStatus
Get-EnvTestServiceStatus
Get-HypServiceStatus
Get-LogServiceStatus
Get-MonitorServiceStatus
Get-ProvServiceStatus
Get-SfServiceStatus
Get-AppLibServiceStatus
15. Aktivieren Sie Monitoring und Logging
##Enable Monitoring
Set-MonitorConfiguration -DataCollectionEnabled $true
##Enable Configuration Logging
Set-LogSite -State Enabled
Anschließend können wir die Ergebnisse verifizieren:
Get-BrokerDBConnection
Get-LogDBConnection
Get-MonitorDBConnection
Die Mirgration der Citrix Datenbanken ist hiermit erfolgreich abgeschlossen.
Das Ergebnis könnte dann so aussehen:
Nach DB-Migration
Vor DB-Migration:
Empfehlung:
Es ist zu empfehlen, dass die initial konfigurierte Prinzipal-Datenbank immer die Prinzipal-DB bleibt. Dadurch könnte solche Meldungen vermieden werden: Kontakt mit Datenbank 'CTX_DB_Site' auf 'SQL2017-01' konnte nicht hergestellt werden. Überprüfen Sie die Datenbankverbindungseinstellungen und -benutzerberechtigungen.
CTX140047 - How to Backup XenDesktop Current DBConnection Strings Using Registry