Replikationen bei Datenbank-Systemen

Sascha Ahlers

Legendäres Mitglied
Hallo,


im Moment beschäftige ich mich stark mit der Datenbank MySQL, eines der Themen dabei ist die Lastenverteilungen und Replikation dieser Datenbank-Engine.
Nun weist aber MySQL gerade bei der Replikation einige Beschränkungen auf, welche sich sehr auf das Schreiben von Datenbank-Querys beziehen, diese anscheindet nur vernünftig lösbar sind mit entsprechenden teuren Mitteln (wie z. B. mittels Shared Storage [bspw. mit einem FC SAN]).

Nun ist meine Frage, ob es in diesen Punkte bessere und kostengünstige Datenbank-Enginen gibt, welche sich besser und unter günstigeren Bedingungen skalieren lassen als MySQL. Am liebsten wäre mir dabei eine freiverfügbare Datenbank (kommerziell kostenlos verwendbar, am liebsten eine OpenSource-Lösung), welche sich an die SQL-Syntax anlehnt.
Diese darf notfalls auch etwas Kosten, nur halt nicht all zu viel, meine Finanzen sind bisher recht knapp bemessen. Die Nutzung sollte dabei auch kommerziell möglich sein.

Viel kann ich wohl auch über die Anwendung erreichen und längerfristig werde ich auch weitere Datenbankanbindungen realisieren, für wichtige Datenbank-Systeme wie Oracle (die ich mir aber nicht unbedingt jetzt schon kaufen muss).



MfG Sascha Ahlers
 
wenn ich mich nicht irre dann habe ich gerade erst in einer Zeitschrift (Linux Magazin) gelesen das die neue Version von PostgreSQL genau das sehr verbessert hat ... PostgreSQL ist meiner Meinung nach gerade für größere Systeme besser geeignet als MySQL. Also entweder mal auf deren Webseite schauen ob das stimmt oder die Zeitschrift kurz daraufhin durchblättern. Ich habe die leider nicht zuhause sonst könnte ichs dir genau sagen.
 
QUOTE (manuel @ Do 1.12.2005, 17:41)wenn ich mich nicht irre dann habe ich gerade erst in einer Zeitschrift (Linux Magazin) gelesen das die neue Version von PostgreSQL genau das sehr verbessert hat ... [...]

Danke für den Tipp, auf die Spur verfolge ich mittlerweile auch schon. Wenn jemand einen sehr guten Buch-Tipp zu PostgreSQL (schwerpunktmäßg Administration [Replikationen, Backup, Lastenverteilung] und Preformance; vorzugsweise auf Deutsch, Englisch geht sonst aber auch) hat, wäre ich sehr dankbar.

Ich informiere mich gerade über MySQL 5, sowie auch über PostgreSQL. Nur wenn jemand etwas genaueres wüsste, wäre es sehr hilfreich und würde mir eine Menge arbeit ersparen.
Es geht halt darum meine Anwendung entsprechend zu entwickeln, halt eine zweite Datenbankanbindung, welche sich auch für größere Systeme eignet. Wenn MySQL 5 seine Defizite natürlich ausgebessert hat, würde ich das vorläufig nehmen (weniger Entwicklungsarbeit für die erste Version).




QUOTE [...] PostgreSQL ist meiner Meinung nach gerade für größere Systeme besser geeignet als MySQL. [...]

Nun, mir ist bekannt, dass es zwischen MySQL und PostgreSQL einen gleichen Glaubenskrieg gibt, wie zwischen Windows und Linux, nur möchte ich mich nicht durch Vorurteile leiten lassen, sondern möchte eine Anwendung entwickel, welche zum Einen für größere Systeme tauglich ist und zum Anderen auch (kostengünstig) weitläufig einsetzbar ist.
Darum sind solche Meinung nicht unbedingt hilfreich, sondern IMHO eher hinderlich.



MfG Sascha Ahlers
 
QUOTE (Danny Pham @ Do 1.12.2005, 19:13)Ich verwende seit längerem ein MySQL-Replikationssystem (MySQL 4.1) mit einem Master und 7 Slaves. Funktioniert wunderbar und ist recht einfach zu installieren bzw. zu erweitern. [...]

Danke für den Tipp, nur das war mir bereits bekannt. Mir sind die Möglichkeiten von MySQL 4.1, im Punkt der Replikation, mittlerweile relative gut vertraut.

Ich wollte eigentlich eine bessere Replikation haben, da die Slaves nur für lesende Querys effizient einsetzbar sind, bei einer Doppel- oder Multi-Master-Replikation kann ich eigentlich nur eine momentane Leistungsspitze bewältigen, da jeder Master sowieso die entsprechenden Querys aus der Relay-Log ausführen muss. Ansonsten bleibt nur die kostenintensivere Lösung des Shared Storage.
So bleibt mir halt nur die Möglichkeit einzelne Tabellenguppen der Datenbank auf mehrere Master zu verteilen und die Lastenverteilung auf die Anwendung zu verlagern.

Mir geht es hier ja nicht alleine um die lesenden Querys, da bietet MySQL 4.1 ausreichende und gute Möglichkeiten, mir geht es hier um die schreibenden Querys.
Interessanter wäre es zu wissen, wie genau das bei MySQL 5.0 aussieht (noch Suche ich danach).



MfG Sascha Ahlers
 
Hast du dir schon mal den MySQL-Cluster angeguckt? Im Vergleich zur MySQL-Replikation dürfte diese Variante noch besser und leistungsfähiger sein. Leider sind die Anforderungen an Hardware (vor allem RAM) sehr hoch und da bei mir die Replikation noch zuverlässig ihren Dienst verrichtet, habe ich mich mit dem Clustersystem noch nicht näher beschäftigt.

Mich würde interessieren, für welche Anwendung du ein solches System brauchst. In den meisten Fällen werden ja viel mehr Selects als Updates / Inserts durchgeführt.
 
QUOTE (Danny Pham @ Do 1.12.2005, 21:55)Hast du dir schon mal den MySQL-Cluster angeguckt? Im Vergleich zur MySQL-Replikation dürfte diese Variante noch besser und leistungsfähiger sein. Leider sind die Anforderungen an Hardware (vor allem RAM) sehr hoch und [...]

Mich würde interessieren, für welche Anwendung du ein solches System brauchst. In den meisten Fällen werden ja viel mehr Selects als Updates / Inserts durchgeführt.

Kommt darauf an, was Du genau unter Cluster verstehst, das einzigste was bei der Bezeichnung Cluster immer identisch ist, dass mehrere Server einen Dienst zur Verfügung stellen. Wenn Du das Cluster mittels eines Load-Balancers meinst, das habe ich mir bereits angeschaut.

Was für eine Anwendung ich entwickel, werde ich bestimmt nicht jedem auf die Nase binden. Nichts gegen Dich, aber ich möchte damit vielleicht Geld verdienen.
Ich bin meistens nur sehr darauf bedacht in etwas größeren Dimensionen zu denken, auch wenn für's erste MySQL vermutlich erstmal lange ausreichen wird, wenn ich die bereits gewonnen Kenntnisse innerhalb der Anwendung umgesetzt habe. Es gibt aber auch Anwendungen, die gleich- oder schreib-intensive sind.
Nur würde ich gerne eine weitere Datenbank Anbindung haben um diesen weiteren Fall abdecken zu können. Bisher scheint mir aber MySQL im Gegensatz zu PostgreSQL, die etwas vernünftigere Wahl.


QUOTE [...] Even PostgreSQL replication solutions are developed externally. For example, Slony-I is a popular master/slave replication solution that is developed independently from the core project. [...]

Quelle: http://www.postgresql.org/docs/8.1/static/...extensions.html



Nun, ich schau mal weiter, vielleicht gibt es ja eine gute Lösung von einen anderen Anbieter.



MfG Sascha Ahlers
 
Hallo.


QUOTE (Danny Pham @ Do 1.12.2005, 22:36)Ich meine diesen MySQL Cluster:

http://www.mysql.com/products/database/cluster/

Nun weiß ich auch, was Du meinst, darüber habe ich bereits gelesen, in der iX war wohl auch bereits ein Artikel dazu drin. Das ist wohl eine recht gute Lösung, nur das ist nicht wirklich das, was ich suche. Ich habe das ganze unter NDB kennengelernt und für mich so auch gespeichert.
NBD ist eine tolle Storage Engine und würde auch sehr gut dazu dienen sein, MySQL zu skalieren, wenn es um richtig große Lasten geht. [1] Nur würde man dazu auch eine entspreche Hardware für benötigen, die auch entsprechend skalierbar ist. Nur dazu würde wieder ein FC SAN benötigt werden, um es entsprechend skalierbar zu bekommen. Gut ein sehr gutes NAS könnte könnte möglichweise auch gehen, dadruch wird jedoch wieder wesendlich mehr auf die CPU belastet, die Latenz ist schlechter und der Protokol-Overhead ist größer, als bei einen FC SAN Speichernetz.
Ein FC SAN ist auch was wirklich feines, wenn es darum geht einen seperaten Speicherplatz zu bekommen auf den mehrere Rechner zugreifen soll und extrem Ausfallsicher sein sollte (sowie auch noch gut Backups durchführen zu können), doch sind solche System nicht gerade billig.
Die FC SAN aus meiner Projektarbeit hat bereits gut zu Buche geschlagen.


Nun gut, dies ist vermutlich mit eine der besten Lösungen, die man bei sowas bekommen kann, ich dachte aber eigentlich an eine Art Zwischenschritt.
Mit PostgreSQL kann ich mich bisher auch noch nicht anfreuden, aber ich schaue nochmal in meine Sourcelist, bevor ich vermutlich bei MySQL bleibe, da weiß ich woran ich bin und damit kenne ich mich bisher am Besten mit aus.


Auf jedenfall Danke für die Hilfe, was mich noch interessieren würde, ob es ein gutes kostenloses Online-Backup-Tool für InnoDB unter Linux gibt. Mysqldump ist nicht unbedingt so das Wahre.



MfG Sascha Ahlers

[1] MySQL: 15.1. MySQL Cluster Overview
 
Zurück
Oben