Page 1 of 1
MySQl Replication bzw. 2 SQL Server
Posted: 2004-02-15 11:12
by djbennyf
Ich arbeite zur Zeit an einer Datenbank (mySQL) und einem Projekt mit PHP. Nun möchte ich die Daten auf einer zweiten Datenbank sichern, bzw evtl später mal, zurechnen ist, dass es einen großen Besucheransturm gibt, die Daten von verschiedenen SQL Servern abrufen.
Dazu muss ich allerdings mit einigen SQL Anweisungen sicherstellen dass keine Aktionen ausgeführt werden, die nicht von einem anderen auch bzw entgegen ausgeführt werden. z.b. der eine macht ein delete der andere ein Update. Bzw ich mache einen SQL Server zum Lese den anderen zum schreibe, was aber auch gegen meine Vorstellung spricht, da ich unabhänig von beiden sein will.
Nun meine Frage ist bei mySQL die Replikation Funktion gut genug. Also wie schnell arbeitet Sie. Hier meine Daten:
mySQK Abfragen pro Stunde: ca. 250 000 Abfragen pro Stunde (Schnitt); 50 pro Sekunde. Also ca. 500 000 - 750 000 Abfragen pro Stunde peak: ca. 100 pro Sekunde.
Das sind ca. 10-20 KB pro Sekunde an Peak Zeiten sogar 30-50...
Der Hauptserver hat eine 100 Mbit Leitung.
Der Server hat 3,2 GHz und 2 gb Ram;
Würde gerne eure meinung hören, in wie weit die Replikation auf den Ablauf einfluss hat. Sprich dauern scripts dadurch erheblich länger?
Oder wäre eine selbst programmierte php lösung besser. sprich, dass ich alle daten selbst per mysql_query auf beiden servern eintrag und beim abfragen scheu welcher am günstigsten ist? Aber dass denke ich geht viel merh aiuf die Performance
Re: MySQl Replication bzw. 2 SQL Server
Posted: 2004-02-15 11:22
by aquajo
Wenn du nch beim schreiben bist, dann würde ich einfach die Server für lesende Zugriffe und schreibende Zugriffe trennen.
Alles inserts, updates usw. gehen an an den Master, und alle querys können von n-Replizierten Servern abgefragt werden.
Das Konzept funktioniert natürlich nur dann gut, wenn mehr lesende als schreibzugriffe vorhanden sind, wsonst hilft nur mehr Hardware.
Re: MySQl Replication bzw. 2 SQL Server
Posted: 2004-02-15 11:43
by djbennyf
Ich bin bei ca. 75% lese und 25% schreibe/update.
Es geht drum, was ist wenn server A (Master mit schreibe) ausfällt? Dann kann man die db nur als lese datenbank benutzen.
Und genau in diesem fall, was denke ich nicht öfter als 0,05% im jahr sind aber immerhin nicht unwahrscheinlich, möchte ich dass der betrieb der seiten weitergeht. Sprich soll ich in diesem fall auf "Insel betrieb" umschalten?
Dass problem ist auto:increment. Das umschalten via script ist einfach, aber dann kolledieren die auto_increment werte...
Re: MySQl Replication bzw. 2 SQL Server
Posted: 2004-02-15 11:46
by djbennyf
Gibt es eine möglichkeit die auto_increment vorzubestimmen sprich ich weiß innerhalb von einem tag werden in tabelle x 10000 neue einträge geschreiben.
Master Server A stürzt bei 1243250345 ab.
dass dann server a im inselbetrieb 1250000000 - 1260000000
server b 1260000000 -1270000000 etc.
und dann wenn master server wieder da ist dieser nur die werte hinzufügt und danach bei der nächst höheren zahl weitermacht?
Re: MySQl Replication bzw. 2 SQL Server
Posted: 2004-02-15 12:00
by aquajo
DjBennyF wrote:Ich bin bei ca. 75% lese und 25% schreibe/update.
Es geht drum, was ist wenn server A (Master mit schreibe) ausfällt? Dann kann man die db nur als lese datenbank benutzen.
Wenn der eine Server ausfällt, kann man recht fix aus dem Slave den Master machen, sollte auch Problemlos automatisierbar sein (heartbeat oder so), dass der Ausfall dann deutlich unter 5Min wäre.
Re: MySQl Replication bzw. 2 SQL Server
Posted: 2004-02-15 12:23
by djbennyf
Und bei 3 oder 4 SQL Servern?
Re: MySQl Replication bzw. 2 SQL Server
Posted: 2004-02-15 12:28
by aquajo
DjBennyF wrote:Und bei 3 oder 4 SQL Servern?
Dann wird halt das Skript etwas komplizierter.
Wenn der master ausfällt kann ja ein Slave die IP des masters übernehmen und sich zum Master erklären ...
Man muss dann natürlich die verschiedenen Szenarien (zumindest in Gedanken) durchspielen, obs immer so klapt wie gewünscht, aber im Prinzip ändert sich nicht sooo viel ob es nun 1 oder 100 Slaves sind.
Re: MySQl Replication bzw. 2 SQL Server
Posted: 2004-02-15 18:58
by majortermi
In irgendeinem Tutorial wurde eine "Ring-Lösung" vorgeschlagen, d.h. Server A repliziert auf Server B, der repliziert auf Server C und dieser wieder auf Server A.
Im Normal-Betrieb erfolgt schreibender Zugriff nur auf Server A, wenn dieser ausfällt auf Server B, und wenn dieser auch ausfällt auf Server B. So ist einerseits sichergestellt, dass sich Server nicht überschneiden und gleichzeitig alle über den aktuellen Datenbestand verfügen.
Wenn dies für deine Zwecke nicht reicht, wird dir wohl nichts anderes übrigbleiben als auf eine andere Datenbank umzusteigen, die Clustering mit schreibenden Zugriff auf unterschiedliche Nodes erlaubt.
Re: MySQl Replication bzw. 2 SQL Server
Posted: 2004-02-15 19:16
by djbennyf
Das Tutorial hätte ich gerne mal gesehn, kannst du evtl die url auftreiben?
Re: MySQl Replication bzw. 2 SQL Server
Posted: 2004-02-18 00:04
by tec79
Mal so am Rande ... wenn Dir hochverfügbarkeit am Herzen liegt, schonmal an ein anderes Datenbanksystem gedacht?
Wenn es so wichtig ist, das man 0,5% Downtime nicht hinnehmen kann sollte auch das Geld für eine Datenbank der Kategorie Oracle da sein...
Re: MySQl Replication bzw. 2 SQL Server
Posted: 2004-02-18 21:57
by majortermi
Im Open-Source-Umfeld ist sicherlich auch eine MaxDB mit Hot-Standby nicht schlecht. Wenn einem die Features von MySQL reichen, ist aber auch durchaus die ein ernstzunehmender Datenbank-Server.
Re: MySQl Replication bzw. 2 SQL Server
Posted: 2004-02-18 22:16
by oxygen
Hm, also ich denke MySQL mit Replication und Transactions reicht. Nur wenn mehr als 2 Datenbank-Server benötigt werden, was ich nebenbei bemerkt für höchst unwahrscheinlich halte, ist MySQL nicht mehr erste Wahl.
Re: MySQl Replication bzw. 2 SQL Server
Posted: 2004-02-18 22:32
by majortermi
øxygen wrote:Nur wenn mehr als 2 Datenbank-Server benötigt werden, was ich nebenbei bemerkt für höchst unwahrscheinlich halte, ist MySQL nicht mehr erste Wahl.
Ich hatte da eher an Features wie Stored Procedures, Triggers und Subqueries gedacht.
BTW: Weiß jemand von euch, ob MaxDB Views / Snapshots unterstützt? PostgreSQL kann das ja schon lange, unterstützt aber leider immer noch keine Replikation.
Re: MySQl Replication bzw. 2 SQL Server
Posted: 2004-02-18 22:43
by oxygen
MajorTermi wrote:øxygen wrote:Nur wenn mehr als 2 Datenbank-Server benötigt werden, was ich nebenbei bemerkt für höchst unwahrscheinlich halte, ist MySQL nicht mehr erste Wahl.
Ich hatte da eher an Features wie Stored Procedures, Triggers und Subqueries gedacht.
Subqueries okay, das ist manchmal eine hilfreiche Sache. Aber für Stored Procedures und Triggers fällt mir auf Anhieb keine Verwendung in einen "PHP-Projekt" ein. Aber vielleicht stell ich mir auch was falsches vor...