Lync 2013 Datenbanken

Mit dem umstieg von Lync 2010 auf Lync 2013 hat Microsoft auch die ein oder andere Datenbank verändert. Diese Seite soll die Datenbanken, ihre Instanz und deren Bedeutung etwas beleuchten.

Wozu so viele SQL-Datenbanken ?

Exchange hat gar keine SQL Datenbank und hostet nur die ein oder andere Postfachdatenbank. Warum muss Lync so viel mit SQL arbeiten und nutzt nicht auch einfach eine kleine Datenbank für die Lync Daten (Buddyliste, Konferenzdaten) und fragt ansonsten das Active Directory? Aus meiner Sicht gibt es da schon ein paar Gründe:

  • AD ist langsam
    Wen Exchange eine Mail zustellen will, muss es im AD nach dem Empfänger anhand der Proxyadresse suchen und dann über den "HomeMDB" des Postfachs den Zielserver ermitteln und dann über das Routing den weg dorthin bestimmen. Das kann etwas dauern aber ist bei Mails nicht weiter kritisch. Lync hingegen übermittel "Realtime-Messages" (SIP) und da muss es schnell und zuverlässig sein. Daher ist jeder Lync Server quasi mit einer lokalen Datenbank ausgestattet, in der erforderliche Daten liegen
  • Unabhängigkeit für stabile Funktion
    Weiterhin wäre es z.B. für die Telefonie denkbar ungünstig, wenn Wartungsarbeiten am Active Directory die Funktion eingeschränkt wäre. Auch hier helfen lokale Daten

Es ist schon faszinierend wie "robust" die Lync Umgebung betrieben werden kann. Wenn Sie nun wissen, dass auch der Lync Client bestimmte Daten in einem lokalen "Konfigurationcache" hält, dann ist verständlich, warum Lync auch noch funktioniert, wenn die Infrastruktur notleidend ist. Und genau das erwarten wir von einem "Echtzeitsystem".

Die SQL-Instanzen und Server

Lync speichert die Daten aber nicht alle in genau einer SQL-Datenbank, sondern verteilt die Datenbanken zudem auf mehrere Instanzen. Die meisten davon sind "kostenfrei" SQL-Express-Datenbanken. Nur wer einen Enterprise Pool mit mehreren Frontend Servern installiert, muss eine Backend Datenbank für den Pool Server bereit stellen. Seit Lync 2013 ist dies für Hochverfügbarkeit bevorzugt ein SQL Serverpaar, welches die Datenbanken per "Mirroring" spiegelt/repliziert. Ein dritter SQL-Express dient als Wittness-Server.

Instanz Server Beschreibung

RTC

Standard
Backend

Alle Datenbanken eines Pools liegen auf dem SQL-Backend Server oder auf dem Standard Server In der Regel werden auch die QoE, CDR, Archiv, PersistentChat-Datenbanken dort mit abgelegt. Beim Enterprise-Pool kann der Namen der Instanz selbst gewählt werden. Die Monitoring-Datenbanken müssen auf einem "großen" SQL-Server liegen.

RTCLOCAL

Frontend
Standard

Jeder Lync Server hat lokal eine SQL-Express Instanz mit dem Namen RTCLOCAL

LYNCLOCAL

Frontend
Standard

Jeder Lync Server hat lokal eine SQL-Express Instanz mit dem Namen LYNCLOCAL, in der das Lync Store System (Lync LySS) seine Daten speichert

Die lokalen Instanzen "RTCLOCAL" und "LYNCLOCAL" sind SQL-Express Datenbanken. Auf dem Standard Server ist die Instanz "RTC" ebenfalls eine SQL-Express-Version.

Datenbanken und Instanzen

Lync verteilt während der Installation einige Datenbanken auf die verschiedenen Instanzen

Achtung: Das Datenmodell einiger Datenbanken ist "FULL", d.h. wenn Sie keine Sicherung des SQL-Servers machen, laufen ihnen die Transaktionsprotokolle oder die Festplatte voll.

Wenn Sie selbst mit SQL Management Studio von einem anderen Server aus nachschauen wollen, dann müssen Sie erst die entsprechenden Ports in der Firewall öffnen, da die SQL-Instanzen sonst nicht über das LAN erreichbar sind.

DB-Name

BE/Instanz
SE/RTC

FE/RTCLOCAL
SE/RTCLOCAL
EDGE/RTCLOCAL

FE/LYNCLOCAL
SE/LYNCLOCAL

Beschreibung

xds

FULL
Simple

Simple
Simple
Simple

Die XDS-Datenbank enthält die zentrale Konfiguration der Lync Umgebung, d.h. Topologie, Policies, Dialpläne, Voice-Routen etc. Sie wird als Read-Only-Kopie auf alle Lync Server repliziert.

lis

FULL
Simple

Enthält die „Location Information Datenbank mit der Zuordnung von IP-Adressen zu Standorten

rtc

na
na

Simple
Simple
?

Enthält die „statischen“ Daten von Benutzern, z.B. Kontakte, Buddy-Listen, Gruppen, Privacy-Einstellungen, geplante Konferenzen.

rtcdyn

na
na

Simple
Simple
na

Speichert die dynamischen Informationen. primär also der Präsenzstatus

rtcxds

FULL
Simple



Backend Datenbank für die Benutzerdaten. Diese Datenbank wird ohne Backup vermutlich die erste sein, die "Out of Disk" läuft.

rtcshared

FULL
Simple



Hält u.a. die Konferenzverzeichnisse

rtcab

FULL
Simple



Enthält das Lync Adressbuch zur Generierung als Download

CpsDyn

FULL
Simple



Dynamische Daten für Call Park

Rgsconfig

FULL
Simple



Konfiguration der Lync Response Groups

Rgsdyn

FULL
Simple



Dynamische Daten für den Betrieb der ResponseGroups

LySS




Simple
Simple

Lync Storage System Replication (Lync LySS)

LCSLog



Enthält die archivierten Kurzmitteilungen, sofern genutzt

LcsCDR

FULL
Simple



Monitoringdaten mit Verbindungsdaten

QoEMetrics

FULL
Simple



Monitoringdaten zur Verbindungsqualität

MGC



Persistent Chat

Mgccomp



Persistent Chat Compliance

Beim schnellen Überblick ist gut zu sehen, dass die LySS-Datenbank die einzige auf der LYNCLOCAL-Instanz ist und auch die RTCLOCAL-Instanz neben dem XDS-Replikat nur die RTC und RTCDYN vorhält. Diese sind aber die wichtigen Datenbanken, die zum Benutzer die Buddylisten und den aktuellen Status vorhalten und entsprechend die ein oder andere Transaktion verursachen.

Die "Backenddatenbank" auf dem SQL-Backend Server bzw. als Instanz RTC mit auf dem Standard Server enthält neben dem XDS-Master auch all die anderen Datenbanken, die für den Pools von allen Servern genutzt werden.

Berechtigungen auf Datenbanken

Die Datenbanken werden durch den Topology-Builder oder "Install-CSDatabase" angelegt. Der ausführende Benutzer muss dazu auf dem SQL-Server Admin sein. Gerade in größeren Umgebungen mit gemeinsam genutzten SQL-Servern ist dies nicht einfach möglich. Dann wird man den SQL-Admin temporär zum Lync Admin machen.

Nach der Anlage der Datenbanken können Sie sich gerne einmal die Berechtigungen anschauen. Sie sind sehr restriktiv eingestellt, d.h. keiner der Lync Server oder Administratoren ist danach DBOwner einer Datenbank oder des Servers. Die Berechtigungen wird an den RTC-Gruppen festgemacht.

  • RTCComponentUniversalServices
  • RTCUniversalReadOnlyAdministratoren
  • RTCUniversalServerAdministratoren
  • RTCHSUniversalServices

Diese Gruppen werden in SQL auch als "Logins" angelegt. Wenn Sie also zwecks Auswertungen z.B. direkt in den Datenbanken "lesen" wollen, dann reicht es das ausführende Konto in eine dieser Gruppen aufzunehmen.

sysadmin Berechtigungen

Da die meisten SQL-Instanzen ja nur von Skype for Business / Lync genutzt werden, ist es natürlich auch interessant, wer "sysadmin" auf den Instanzen ist. Eine kleine Ausnahme ist vielleicht die Backend Datenbank bei einem Enterprise Pool, welche durchaus auf einer SQL-Instanz laufen kann, die auch andere Datenbanken beherbergt. Die Liste hier gibt wieder, welche Einstellungen auf einen frischen und exklusiven Installation vorhanden sind:

Instant Sysadmin

Frontend\LYNCLOCAL
(einzige Datenbank ist LYSS)

  • Gruppe: Buildin/Administratoren
  • User: NT SERVICE\MSSQL$LYNCLOCAL
  • User: NT SERVICE\SQLWRITER
  • User: NT SERVICE\WinMGMT

Frontend\RTCLOCAL
(Datenbanken: RTC/RTCDYN/XDS)

  • Gruppe: Buildin/Administratoren
  • User:NT SERVICE\MSSQL$RTCLOCAL
  • User: NT SERVICE\SQLWRITER
  • User: NT SERVICE\WinMGMT

Backend

  • User: sa
  • Gruppe: Domain\Administratoren
  • User: NT SERVICE\SQLWRITER
  • User: NT SERVICE\WinMGMT
  • User: NT SERVICE\MSSQLSERVER
  • User: NT SERVICE\SQLAGENT

Gegebenenfalls wird ihr Administrator noch weitere Benutzer als Sysadmin addieren, z.B. SCOM-Monitoring, Backup-Dienstkonten etc.

Weitere Links