Fragen zur MS SQL DB Replikation

Superior1337

Lt. Junior Grade
Registriert
Sep. 2006
Beiträge
299
Hallo,
habe ein Szenario wobei 2 MS SQL Datenbanken (DB1 + DB2) in einer MS SQL Server Express 2019 Instanz (SI1) auf einer im LAN hängenden Maschine (M1) laufen.
DB1 hat um die 100MB, DB2 so um die 1GB Größe.
Diese sollen beide repliziert und synchronisiert werden.
Habe ich bisher noch nie gemacht.
Also die DBs sollen auf einem zweiten, vielleicht sogar dritten SQL Server Express 2019 Instanz (SI2 + SI3) auf anderen entfernten Maschinen laufen.

Habe das ganze noch nicht praktisch testen können, will aber in der Theorie schon sicher gehen dass ich es richtig verstehe und vorgehen würde, um dann beim Vor-Ort Termin Zeit einzusparen.

Meiner Recherche nach ist folgendes vorgehen notwendig, gerne berichtigen:
A) (SI1) mit (DB1 + DB2) sind sozusagen der Publisher.
B) In (SI1) unter Replikation einen neuen Distributor erstellen und angeben, dass die Instanz selbst Distributor ist.
C) In (SI1) unter Replikation eine neue Publikation erstellen und dort (DB1 + DB2) auswählen sowie "Transactionale Publikation".
D) Im Wizard von Punkt C) zusätzlich auswählen "Snapshot erstellen" und den Snapshot Agent Dienst mit einem Windows AD User/Admin starten (dort steht man kann auch den SQL Server Agent Account nutzen, soll man aber wg. Security nicht tun).
E) Auf der erstellten Publikation erstelle ich eine neue Subscription und wähle im Wizard die entfernte SQL Express Server Instanz (SI2). Das mache ich nochmal mit einer zweiten Subscription für (SI3).
F) Die SQL Server Express Instanzen (SI2 + SI3) habe ich zuvor auf entfernten Maschinen (M2 + M3) normal installiert und online zugänglich gemacht. Einstellen muss ich da glaube nichts weiter für die Replikation. (?)

Fragen:
1) Ist mein Szenario mit den SQL Express Versionen überhaupt umsetzbar? Habe nur etwas von einer 10GB DB Größe als Grenze gelesen, aber so schnell kommen wir da wohl nicht hin.

2) Bezug nehmend zur Frage 1): Irgendwo stand mal was, durch Replikation wird die DB viel größer. Frage mich warum und ob ich das richtig verstanden habe. Weil normal sollten meine (DB1 + DB2) ja weiterhin nur mit den Daten gefüllt werden wie bisher und der Distributor sollte ja eigentlich nur die Transaktionen kopieren und verteilen. Also meine (DB1 + DB2) unberührt lassen?

3) In meinem Schritt E) bei der Subscription muss man auswählen, ob man die Transaktionen sich per Push geben lässt oder per Pull abholen lässt. Was wäre für mich sinnvoller? Push soll leichter zu administrieren sein und mir fehlt ja wie gesagt die Erfahrung. Aber andererseits stelle ich mir vor, dass Pull vielleicht besser wäre, weil Maschine (M2) z.B. nicht immer an/online sein wird und natürlich keine Transaktionen verloren gehen sollen, was das dann passieren könnte. Sie sollte sich dann wieder synchronisieren wenn sie wieder online kommt.

4) Hat die Replikation großen Einfluss auf die Performance der Maschine (M1)? Die Leute die an der Software arbeiten (max. 10 Leute), sollten natürlich an der Front nichts merken. Es sind vielleicht so 20-30MB neue Daten, die am Tag anfallen.

5) Die Replikation ist ja sicherlich leicht rückzubauen oder? Also dass die DBs (DB1 + DB2) nicht groß verändert werden (falls sie wie in Frage 2 erfragt größer werden), dass sie im normalen Betrieb nicht mehr fehlerfrei genutzt werden können.

6) Eine Zusatzfrage: Wäre es auch möglich die DB auf einer Maschine bei einem Cloudanbieter zu replizieren? Bestimmt oder? Die Frage die ich mir stelle: Wo könnte man das einfach und kostengünstig machen? Habe mal ein Video zu Azure gesehen, aber da kostete ein Win Server + SQL Server direkt 250€ im Monat, falls das stimmt. Das wäre nicht machbar. Gibts gute Alternativen?

Vielen Dank und LG
 
Express kannst du in der Replikation nur als Ziel nutzen, nicht als Quelle, wenn sich da nichts geändert hat.
Und wenn ich dich richtig verstehe, ist die Quelle SI1, also ein Express, richtig?

Edit:
Siehe hier, Express kann keine Quelle sein:
https://docs.microsoft.com/de-de/sq...-server-for-replication?view=sql-server-ver15
"Eine beliebige SQL Server-Edition mit Ausnahme von SQL Server Express und SQL Server Compact. Diese Editionen können nicht als Verleger für Replikationen verwendet werden."
 
Zuletzt bearbeitet:
arktom schrieb:
Und wenn ich dich richtig verstehe, ist die Quelle SI1, also ein Express, richtig?

Ja, hmm, da werde ich noch mal schauen. Notfalls dann wenigstens den Server upgraden zu Standard.

Oder gibt es (kostengünstige/kostenfreie) Dritttools die die Transaktionen auch replizieren könnten?
 
Da ist die Frage, was erreicht werden soll.
Gegebenenfalls ist eine Replikation mit einer Backupsoftware möglich.
Vielleicht ist es auch ausreichend, die gesamte VM auf einen anderen Host zu replizieren?

Das müsste man auf jeden Fall klären.

Denn vielleicht habt ihr ja schon Software, die es - für euch ausreichend - kann.

Solltet ihr nichts haben, denke ich, dass eine SQL Standard günstiger ist, wobei ihr die CALs nicht vergessen solltet.
 
Es läuft nicht in einer VM, sondern nativ auf einem Server.
Die komplette Replikation über Internet scheint auch zu groß, da vor Ort kaum Internet verfügbar ist. Glaube 13Mbit Down und 2Mbit Up kommen nur an.

Also gehen wir ab jetzt von einer SQL Standard Instanz auf SI1 aus.

Dann bleiben meine Fragen weiterhin die gleichen.
 
Wieso willst du denn überhaupt replizieren?
Die Datenbank ist klein, du hast offensichtlich ziemliche Budgetlimits.

Diese Frage musst du dir erstmal beantworten können, bevor du das Replikationskonzept wählst.

Zu 4. Je nach Replikationsmodus sind die Leistungseinbußen hoch, zb bei snapshot Replikation

Zu 6. Ja kannst du, Azure SQL kann ein Push subscriber sein.
 
Zuletzt bearbeitet:
Letztlich geht es darum die Datenbanken immer möglichst aktuell gesichert zu haben und aber auch nicht erst ein Backup einspielen zu müssen, sondern nur die SQL Serververbindung zu wechseln und weiterarbeiten zu können.
Budget ist nicht stark begrenzt, aber halt nicht wünschenswert. Also einmalig 1-2k auszugeben wäre sicher okay, aber nicht jahrelang monatlich 250€ zum Beispiel.
 
Das ist eher ein Problem für availability groups dann. Nicht für Replikation. Replikation ist kein HA System.

So oder so ist es nicht mit einmal 1-2k getan, du brauchst ja mindestens zwei Standard Lizenzen und die kosten dann etwa je 3500€ oder so (2 core Lizenzen pro System)

Nimm's mir nicht übel, aber ihr habt's euch bei der Lösungsfindung schon mächtig verlaufen.
 
Wieso, die 2019er Express kann Replikation Subscriben und ist kostenlos. Wäre also nur beim Publisher die Standard und da muss man eben in den sauren Apfel beißen.

Aber wäre mit Replikation denn nicht der Zweck erfüllt, dass die Daten permanent synchron sowohl beim Publisher als auch beim Subscriber liegen? Das ist ja das was wir wollen eigentlich.

Und Always-On Verfügbarkeitsgruppen schleiße ich mal aus, weil das übersteigts dann wirklich mit SQL Server Enterprise. Und es muss ja nicht sofort weiter laufen, aber innerhalb 20 Minuten fixbar sein. Dann einfach die Serververbindung umzustellen wäre am einfachsten. Meiner Meinung nach.
 
Zuletzt bearbeitet:
Superior1337 schrieb:
Und Always-On Verfügbarkeitsgruppen schleiße ich mal aus, weil das übersteigts dann wirklich mit SQL Server Enterprise
Die Basis Variante ist in Standard enthalten. https://docs.microsoft.com/de-de/sq...-on-availability-groups?view=sql-server-ver15


Ich empfehle ernsthaft dir die Probleme von Transaktionsreplikation durchzulesen. Der Modus ist simpel gesagt ein Monster, nicht umsonst wird Always-on empfohlen. Geht btw auch zügig kaputt bzgl man kann es zügig kaputt machen.

Ggf Mal https://www.brentozar.com/archive/2013/09/transactional-replication-change-tracking-data-capture/ durchlesen und ähnliches.

Bevor ihr aber sowas wie Always on oder Replikation betrachtet, würde ich empfehlen zu prüfen ob eine Virtualisierung mit entsprechenden failover und/oder Backup einfacher/besser zu lösen ist, wie @arktom vorgeschlagen hat.


Bzgl SQL Server Express als subscriber, limitiert halt deine Optionen weiter, du hast keinen SQL Agent
 
Okay vielen Dank, werde mit deinen Links mich belesen.

Ist ja noch nicht zu spät, ist ja alles noch Theorie.

Danke!
 
Zurück
Oben