You are here

Feed aggregator

The DRBD Module for FromDual Performance Monitor for MySQL is now available

FromDual.en - Fri, 2011-04-01 21:59
Taxonomy upgrade extras: drbdperformance monitorreleasempmmaas

FromDual has released today the next version v0.6 of its FromDual Performance Monitor for MySQL.

The most important improvement of the new release is the new monitoring module for DRBD devices which are often used in MySQL High Availability (HA) set-ups.

More information about the new functionality added you can find in the article MySQL Performance Monitor with DRBD monitoring capabilities, MySQL Performance Monitor and in the MySQL HA (high availability) cookbook.

The FromDual Performance Monitor for MySQL is now available on our download page.

Follow us on Twitter...

Wo sich die MySQL Gemeinde tummelt...

Oli Sennhauser - Sun, 2011-03-27 21:27

Weit, weit weg von hier, in einem anderen Universum namens IRC, gibt es eine Welt mit Namen irc.freenode.net und dort, im Land #mysql.de, tummelt sich die deutschsprachige MySQL Gemeinde.
Die Bewohner dieses Landes sind meist nette Leute, die sich mit MySQL beschäftigen und einige davon sind sogar Kenner ihres Fachs!

Bewohner anderer Universen, welche nach ausführlichem Studium des MySQL Handbuchs immer noch nicht weiter wissen, finden bei den Bewohnern diese Landes meist Rat.
Nicht alle Bürger dieses Landes sind die geborenen Diplomaten. Aber unter ihrer rauen Schale schlummert ein grosses Herz. Wenn man also keine oder eine nicht allzu zuvorkommende Antwort erhält, sollte man nicht verzagen. Die Leute meinen das nicht böse und können nichts für Ihre ungeschliffene Herzlichkeit.

Der Weg nach #mysql.de

Der einzige Weg, um in das rätselhafte Land #mysql.de zu gelangen, besteht darin, dass man sich ein Portal sucht und mit einem IRC-Client den Sprung dorthin unternimmt, was meist problemlos gelingt. Beliebte und oft verwendete IRC-Clients sind z.B. Xchat, Pidgin oder Iriss.

Web-IRC

Wer keinen eigenen Client installieren kann oder mag, kann auch auf den IRC Web-Client zurückgreifen, um dorthin zu gelangen.

Die Reise

Wenn man den IRC-Client startet, muss man ihm mitteilen wohin die Reise gehen soll:

Ein Benutzernamen respektive der Alias kann frei gewählt werden, solange er keinen Konflikt mit den Namen eines Einheimischen verursacht.
Nicht alle IRC-Clients unterstützen mehrere Protokolle. Ein Passwort ist nicht für alle Länder notwendig. In manche Länder kann man zwar ohne Passwort einreisen, nicht aber Fragen stellen...

Wenn man den Sprung in die gewählte Welt geschafft hat, kriegt man eine entsprechende Meldung:

Um eine Einreise in das entsprechende Land zu beantragen muss folgender Wunsch geäussert werden:

/join #mysql.de

Sobald man den Wunsch geäussert hat befindet man sich im gewünschten Land.

Bräuche und Sitten

Es ist eine gute Angewohnheit die Bewohner des entsprechenden Landes zuerst kurz zu begrüssen. Dann können aber bereits Fragen gestellt werden.
Darf ich was Fragen? oder ähnliche Fragen sind verpönt und führen unter Umständen zu unfreundlichen Antworten wie z.B. Nein!. Diese Antworten sind aber nicht ernst zu nehmen. Im weiteren braucht man sich auch nicht zu entschuldigen wenn man keinen perfekten Deutsch-Stil beherrscht.

Wenn ein ortsansässiger Zeit und Lust hat, wird er gerne Auskunft geben oder genauer nachfragen was der Fremdling gerade Fragen wollte...

Ist man mit einem Einheimischen im Gespräch kann man ihn auch gezielt ansprechen z.B. mit "shinguz: dies und das..."

Im Lande #mysql.de gilt es als Unsitte sich auf englisch zu unterhalten. Wenn grössere Auszüge aus Logfiles etc. ausgetauscht werden sollen, wird es nicht geschätzt, wenn diese direkt im IRC Fenster übermittelt werden. Um solche Meldungen zu übermitteln ist z.B. das Tool Pastebin hervorragend geeignet. Es wird dann nur noch der Link mitgeteilt und jeder den es interessiert kann sich den Inhalt der Nachricht anschauen.

Was im Lande #mysql.de ebenfalls geschätzt wird, ist, wenn man Problem in einfache nachvollziehbare Beispiele zerlegt, die von den Bewohnern schnell und einfach nachgestellt werden können.

Wichtig: Die Bewohner sind viel beschäftigte Leute, welche zuerst Ihrer täglichen Arbeit nachgehen müssen. Seid also geduldig und nicht zu aufdringlich. Der Kontakt mit Fremden ist freiwillig und es besteht keine Auskunftspflicht.

Dies sind, so denke ich, die wichtigsten Information und Regeln um ins Land #mysql.de zu finden und sich darin zu bewegen.

Willkommen!

Die Bewohner von #mysql.de würden sich freuen wenn Ihr sie zahlreich besuchen kommt und etwas Leben und Blutauffrischung in ihr Land bringt...

Kommt uns doch mal besuchen!

Lokale Sprache

Einige nützliche Redewendungen im IRC-Universum sind:

RedewendungBedeutung/nick shinguz_futternMan gibt sich einen anderen Namen/quit Kissen lauschen!Ausreise mit Grundangabe/me zerstört gerade eine DatenbankBeschreibt den Anwesenden, was man gerade macht.../whois shinguzErfragt mehr Informationen über einen Bewohner/query shinguzGespräch unter vier Augen mit einem Anwesenden/invite shinguzLädt einen Anwesenden in ein anderes Land ein./msg shinguz Ganz private MitteilungSendet eine private Meldung an den Bewohner

Weiter hilft sonst auch das Fremdwörterbuch für IRC.

Weiter Länder in dieser Welt

Weitere Länder mit ähnlich gearteter Bevölkerung findest Du auf dieser Welt hier:

Land Wichtigkeit Beschreibung #drizzle 62Drizzle - Database for Cloud#maatkit 16Maatkit#maria 58Welcome to #maria, home of MariaDB!#mysql 606MySQL help channel#mysql.de 21Der deutschsprachige MySQL Channel#mysql-dev 22MySQL server development#mysql-es 5Bienvenidos a canal de MySQL en español#mysql-fr 3Canal MySQL français#mysql-ndb 19Discussion of MySQL Cluster#mysql-proxy 13MySQL Proxy#ourdelta 10OurDelta - Enhanced Builds for MySQL, MariaDB#percona 15XtraDB, XtraBackup, Percona Server#workbench 11MySQL WorkbenchTaxonomy upgrade extras: irchilfecommunitygerman

Wo sich die MySQL Gemeinde tummelt...

Oli Sennhauser - Sun, 2011-03-27 21:27

Weit, weit weg von hier, in einem anderen Universum namens IRC, gibt es eine Welt mit Namen irc.freenode.net und dort, im Land #mysql.de, tummelt sich die deutschsprachige MySQL Gemeinde.
Die Bewohner dieses Landes sind meist nette Leute, die sich mit MySQL beschäftigen und einige davon sind sogar Kenner ihres Fachs!

Bewohner anderer Universen, welche nach ausführlichem Studium des MySQL Handbuchs immer noch nicht weiter wissen, finden bei den Bewohnern diese Landes meist Rat.
Nicht alle Bürger dieses Landes sind die geborenen Diplomaten. Aber unter ihrer rauen Schale schlummert ein grosses Herz. Wenn man also keine oder eine nicht allzu zuvorkommende Antwort erhält, sollte man nicht verzagen. Die Leute meinen das nicht böse und können nichts für Ihre ungeschliffene Herzlichkeit.

Der Weg nach #mysql.de

Der einzige Weg, um in das rätselhafte Land #mysql.de zu gelangen, besteht darin, dass man sich ein Portal sucht und mit einem IRC-Client den Sprung dorthin unternimmt, was meist problemlos gelingt. Beliebte und oft verwendete IRC-Clients sind z.B. Xchat, Pidgin oder Iriss.

Web-IRC

Wer keinen eigenen Client installieren kann oder mag, kann auch auf den IRC Web-Client zurückgreifen, um dorthin zu gelangen.

Die Reise

Wenn man den IRC-Client startet, muss man ihm mitteilen wohin die Reise gehen soll:

Ein Benutzernamen respektive der Alias kann frei gewählt werden, solange er keinen Konflikt mit den Namen eines Einheimischen verursacht.
Nicht alle IRC-Clients unterstützen mehrere Protokolle. Ein Passwort ist nicht für alle Länder notwendig. In manche Länder kann man zwar ohne Passwort einreisen, nicht aber Fragen stellen...

Wenn man den Sprung in die gewählte Welt geschafft hat, kriegt man eine entsprechende Meldung:

Um eine Einreise in das entsprechende Land zu beantragen muss folgender Wunsch geäussert werden:

/join #mysql.de

Sobald man den Wunsch geäussert hat befindet man sich im gewünschten Land.

Bräuche und Sitten

Es ist eine gute Angewohnheit die Bewohner des entsprechenden Landes zuerst kurz zu begrüssen. Dann können aber bereits Fragen gestellt werden.
Darf ich was Fragen? oder ähnliche Fragen sind verpönt und führen unter Umständen zu unfreundlichen Antworten wie z.B. Nein!. Diese Antworten sind aber nicht ernst zu nehmen. Im weiteren braucht man sich auch nicht zu entschuldigen wenn man keinen perfekten Deutsch-Stil beherrscht.

Wenn ein ortsansässiger Zeit und Lust hat, wird er gerne Auskunft geben oder genauer nachfragen was der Fremdling gerade Fragen wollte...

Ist man mit einem Einheimischen im Gespräch kann man ihn auch gezielt ansprechen z.B. mit "shinguz: dies und das..."

Im Lande #mysql.de gilt es als Unsitte sich auf englisch zu unterhalten. Wenn grössere Auszüge aus Logfiles etc. ausgetauscht werden sollen, wird es nicht geschätzt, wenn diese direkt im IRC Fenster übermittelt werden. Um solche Meldungen zu übermitteln ist z.B. das Tool Pastebin hervorragend geeignet. Es wird dann nur noch der Link mitgeteilt und jeder den es interessiert kann sich den Inhalt der Nachricht anschauen.

Was im Lande #mysql.de ebenfalls geschätzt wird, ist, wenn man Problem in einfache nachvollziehbare Beispiele zerlegt, die von den Bewohnern schnell und einfach nachgestellt werden können.

Wichtig: Die Bewohner sind viel beschäftigte Leute, welche zuerst Ihrer täglichen Arbeit nachgehen müssen. Seid also geduldig und nicht zu aufdringlich. Der Kontakt mit Fremden ist freiwillig und es besteht keine Auskunftspflicht.

Dies sind, so denke ich, die wichtigsten Information und Regeln um ins Land #mysql.de zu finden und sich darin zu bewegen.

Willkommen!

Die Bewohner von #mysql.de würden sich freuen wenn Ihr sie zahlreich besuchen kommt und etwas Leben und Blutauffrischung in ihr Land bringt...

Kommt uns doch mal besuchen!

Lokale Sprache

Einige nützliche Redewendungen im IRC-Universum sind:

RedewendungBedeutung/nick shinguz_futternMan gibt sich einen anderen Namen/quit Kissen lauschen!Ausreise mit Grundangabe/me zerstört gerade eine DatenbankBeschreibt den Anwesenden, was man gerade macht.../whois shinguzErfragt mehr Informationen über einen Bewohner/query shinguzGespräch unter vier Augen mit einem Anwesenden/invite shinguzLädt einen Anwesenden in ein anderes Land ein./msg shinguz Ganz private MitteilungSendet eine private Meldung an den Bewohner

Weiter hilft sonst auch das Fremdwörterbuch für IRC.

Weiter Länder in dieser Welt

Weitere Länder mit ähnlich gearteter Bevölkerung findest Du auf dieser Welt hier:

Land Wichtigkeit Beschreibung #drizzle 62Drizzle - Database for Cloud#maatkit 16Maatkit#maria 58Welcome to #maria, home of MariaDB!#mysql 606MySQL help channel#mysql.de 21Der deutschsprachige MySQL Channel#mysql-dev 22MySQL server development#mysql-es 5Bienvenidos a canal de MySQL en español#mysql-fr 3Canal MySQL français#mysql-ndb 19Discussion of MySQL Cluster#mysql-proxy 13MySQL Proxy#ourdelta 10OurDelta - Enhanced Builds for MySQL, MariaDB#percona 15XtraDB, XtraBackup, Percona Server#workbench 11MySQL WorkbenchTaxonomy upgrade extras: irchilfecommunitygerman

Wo sich die MySQL Gemeinde tummelt...

Oli Sennhauser - Sun, 2011-03-27 21:27
Taxonomy upgrade extras: irchilfecommunitygerman

Weit, weit weg von hier, in einem anderen Universum namens IRC, gibt es eine Welt mit Namen irc.freenode.net und dort, im Land #mysql.de, tummelt sich die deutschsprachige MySQL Gemeinde.
Die Bewohner dieses Landes sind meist nette Leute, die sich mit MySQL beschäftigen und einige davon sind sogar Kenner ihres Fachs!

Bewohner anderer Universen, welche nach ausführlichem Studium des MySQL Handbuchs immer noch nicht weiter wissen, finden bei den Bewohnern diese Landes meist Rat.
Nicht alle Bürger dieses Landes sind die geborenen Diplomaten. Aber unter ihrer rauen Schale schlummert ein grosses Herz. Wenn man also keine oder eine nicht allzu zuvorkommende Antwort erhält, sollte man nicht verzagen. Die Leute meinen das nicht böse und können nichts für Ihre ungeschliffene Herzlichkeit.

Der Weg nach #mysql.de

Der einzige Weg, um in das rätselhafte Land #mysql.de zu gelangen, besteht darin, dass man sich ein Portal sucht und mit einem IRC-Client den Sprung dorthin unternimmt, was meist problemlos gelingt. Beliebte und oft verwendete IRC-Clients sind z.B. Xchat, Pidgin oder Iriss.

Web-IRC

Wer keinen eigenen Client installieren kann oder mag, kann auch auf den IRC Web-Client zurückgreifen, um dorthin zu gelangen.

Die Reise

Wenn man den IRC-Client startet, muss man ihm mitteilen wohin die Reise gehen soll:

Ein Benutzernamen respektive der Alias kann frei gewählt werden, solange er keinen Konflikt mit den Namen eines Einheimischen verursacht.
Nicht alle IRC-Clients unterstützen mehrere Protokolle. Ein Passwort ist nicht für alle Länder notwendig. In manche Länder kann man zwar ohne Passwort einreisen, nicht aber Fragen stellen...

Wenn man den Sprung in die gewählte Welt geschafft hat, kriegt man eine entsprechende Meldung:

Um eine Einreise in das entsprechende Land zu beantragen muss folgender Wunsch geäussert werden:

/join #mysql.de

Sobald man den Wunsch geäussert hat befindet man sich im gewünschten Land.

Bräuche und Sitten

Es ist eine gute Angewohnheit die Bewohner des entsprechenden Landes zuerst kurz zu begrüssen. Dann können aber bereits Fragen gestellt werden.
Darf ich was Fragen? oder ähnliche Fragen sind verpönt und führen unter Umständen zu unfreundlichen Antworten wie z.B. Nein!. Diese Antworten sind aber nicht ernst zu nehmen. Im weiteren braucht man sich auch nicht zu entschuldigen wenn man keinen perfekten Deutsch-Stil beherrscht.

Wenn ein ortsansässiger Zeit und Lust hat, wird er gerne Auskunft geben oder genauer nachfragen was der Fremdling gerade Fragen wollte...

Ist man mit einem Einheimischen im Gespräch kann man ihn auch gezielt ansprechen z.B. mit "shinguz: dies und das..."

Im Lande #mysql.de gilt es als Unsitte sich auf englisch zu unterhalten. Wenn grössere Auszüge aus Logfiles etc. ausgetauscht werden sollen, wird es nicht geschätzt, wenn diese direkt im IRC Fenster übermittelt werden. Um solche Meldungen zu übermitteln ist z.B. das Tool Pastebin hervorragend geeignet. Es wird dann nur noch der Link mitgeteilt und jeder den es interessiert kann sich den Inhalt der Nachricht anschauen.

Was im Lande #mysql.de ebenfalls geschätzt wird, ist, wenn man Problem in einfache nachvollziehbare Beispiele zerlegt, die von den Bewohnern schnell und einfach nachgestellt werden können.

Wichtig: Die Bewohner sind viel beschäftigte Leute, welche zuerst Ihrer täglichen Arbeit nachgehen müssen. Seid also geduldig und nicht zu aufdringlich. Der Kontakt mit Fremden ist freiwillig und es besteht keine Auskunftspflicht.

Dies sind, so denke ich, die wichtigsten Information und Regeln um ins Land #mysql.de zu finden und sich darin zu bewegen.

Willkommen!

Die Bewohner von #mysql.de würden sich freuen wenn Ihr sie zahlreich besuchen kommt und etwas Leben und Blutauffrischung in ihr Land bringt...

Kommt uns doch mal besuchen!

Lokale Sprache

Einige nützliche Redewendungen im IRC-Universum sind:

RedewendungBedeutung/nick shinguz_futternMan gibt sich einen anderen Namen/quit Kissen lauschen!Ausreise mit Grundangabe/me zerstört gerade eine DatenbankBeschreibt den Anwesenden, was man gerade macht.../whois shinguzErfragt mehr Informationen über einen Bewohner/query shinguzGespräch unter vier Augen mit einem Anwesenden/invite shinguzLädt einen Anwesenden in ein anderes Land ein./msg shinguz Ganz private MitteilungSendet eine private Meldung an den Bewohner

Weiter hilft sonst auch das Fremdwörterbuch für IRC.

Weiter Länder in dieser Welt

Weitere Länder mit ähnlich gearteter Bevölkerung findest Du auf dieser Welt hier:

Land Wichtigkeit Beschreibung #drizzle 62Drizzle - Database for Cloud#maatkit 16Maatkit#maria 58Welcome to #maria, home of MariaDB!#mysql 606MySQL help channel#mysql.de 21Der deutschsprachige MySQL Channel#mysql-dev 22MySQL server development#mysql-es 5Bienvenidos a canal de MySQL en español#mysql-fr 3Canal MySQL français#mysql-ndb 19Discussion of MySQL Cluster#mysql-proxy 13MySQL Proxy#ourdelta 10OurDelta - Enhanced Builds for MySQL, MariaDB#percona 15XtraDB, XtraBackup, Percona Server#workbench 11MySQL Workbench

Vorsicht bei der Nutzung von SAN

Oli Sennhauser - Fri, 2011-03-04 18:36

Vorsicht bei der Nutzung von SAN (Storage Area Networks) oder ähnlichen Shard Storage Lösungen (und allen anderen Virtualisierungs-, Konsolidierungs- oder Cloud-Lösungen).

Diese Woche ist es wieder passiert: Ein Kunde rief bei uns an, weil er Ärger mit seinem on-line Shop hatte (siehe Datum!). Alle in seiner Firma beschwerten sich, dass die Datenbank langsam antwortet.

Als wir auf seine Maschine schauten (mit iostat), haben wir I/O Last und einige pending reads in InnoDB gesehen (SHOW ENGINE INNODB STATUS und SHOW GLOBAL STATUS LIKE 'InnoDB%') und eine sehr schlechte InnoDB Buffer Pool Hit Ratio (ungefähr 80%, ja, ich weiss Hit Ratios sind schlechte Indikatoren, aber manchmal sind sie recht nützlich).

Der Kunde beteuerte, dass er seit einigen Tagen nichts am System geändert habe. Und am vorherigen Tag sei alles prima gelaufen, aber an diesem Nachmittag wurde das System plötzlich langsam. Er teilte uns im weiteren mit, dass sie zur Zeit daran seien, Monatsreports zu generieren. Aber nur auf den Slaves.

Wir fanden eine Abfrage, welche seit 25 Minuten am laufen war, also nahm ich an, dass diese Abfrage der Übeltäter ist. Nachdem wir die Abfrage gekillt hatten, entspannte sich das System ein wenig, war aber immer noch unter I/O last und der Kunde merkte an, dass wir kurz vor Ende der Hauptlast-Zeit sind. Das würde erklären, warum das System nicht mehr so ausgelastet sei.

Bis zu diesem Zeitpunkt hatte ich keine Ahnung, was der Grund für unser Problem ist. Etwas frustrierend, wenn man dem Kunden nicht erklären kann, warum er gerade ein Problem hat.

Glücklicherweise kam gerade einer der Systemadministratoren ins Büro und beschwerte sich, dass wir gerade sein SAN füllen. Schuld sei der Slave unseres langsamen Masters. Auf dem Slave fanden wir eine Abfrage (Monatsend-Report), welche seit 2 bis 3 Stunden am laufen war, welche eine temporäre Tabelle von ungefähr 350 Gbyte erzeugte! Diese Tabelle füllte das SAN auf ungefähr 99%.

Der Systemadministrator bemerkte im Weiteren, dass das Füllen eines SAN's auf mehr als 90%, das ganze SAN ausbremsen würde (warum auch immer).

Diese Aussage liess bei uns die Alarmglocken klingeln: Hatten wir nicht ein I/O Problem, welches urplötzlich vor 2 bis 3 Stunden einsetzte? Wir fanden heraus, dass unser Master und der Slave unglücklicherweise auf dem selben SAN platziert waren.

Als wird die Abfrage gekillt hatten, wurde die Tabelle automatisch gelöscht und nach einigen Minuten wurde der Diskplatz wieder frei gegeben. Mir wurde gesagt, dass es einige Stunden dauert, bis das SAN sich wieder beruhigt haben wird (warum auch immer). Am nächsten Tag bestätigte der Kunde, dass alles wieder wie gewohnt läuft. Somit können wir ziemlich sicher sein, dass das Füllen des SAN's mit dem Slave das Problem auf unserem produktiven Master verursacht hat.

Schlussfolgerung: SAN's können verschiedene unerwartete Nebeneffekte und Auswirkungen auf die Performance haben. Wenn Sie nicht ungewollt unvorhersehbare Performanceauswirkungen erleben wollen, versuchen sie auf dedizierten Storagelösungen zu bleiben.

Siehe auch unser Commit Demo Test:

Taxonomy upgrade extras: performancesanvirtualizationconsolidationcloudvirtualisierungkonsolidierunggerman

Vorsicht bei der Nutzung von SAN

Oli Sennhauser - Fri, 2011-03-04 18:36

Vorsicht bei der Nutzung von SAN (Storage Area Networks) oder ähnlichen Shard Storage Lösungen (und allen anderen Virtualisierungs-, Konsolidierungs- oder Cloud-Lösungen).

Diese Woche ist es wieder passiert: Ein Kunde rief bei uns an, weil er Ärger mit seinem on-line Shop hatte (siehe Datum!). Alle in seiner Firma beschwerten sich, dass die Datenbank langsam antwortet.

Als wir auf seine Maschine schauten (mit iostat), haben wir I/O Last und einige pending reads in InnoDB gesehen (SHOW ENGINE INNODB STATUS und SHOW GLOBAL STATUS LIKE 'InnoDB%') und eine sehr schlechte InnoDB Buffer Pool Hit Ratio (ungefähr 80%, ja, ich weiss Hit Ratios sind schlechte Indikatoren, aber manchmal sind sie recht nützlich).

Der Kunde beteuerte, dass er seit einigen Tagen nichts am System geändert habe. Und am vorherigen Tag sei alles prima gelaufen, aber an diesem Nachmittag wurde das System plötzlich langsam. Er teilte uns im weiteren mit, dass sie zur Zeit daran seien, Monatsreports zu generieren. Aber nur auf den Slaves.

Wir fanden eine Abfrage, welche seit 25 Minuten am laufen war, also nahm ich an, dass diese Abfrage der Übeltäter ist. Nachdem wir die Abfrage gekillt hatten, entspannte sich das System ein wenig, war aber immer noch unter I/O last und der Kunde merkte an, dass wir kurz vor Ende der Hauptlast-Zeit sind. Das würde erklären, warum das System nicht mehr so ausgelastet sei.

Bis zu diesem Zeitpunkt hatte ich keine Ahnung, was der Grund für unser Problem ist. Etwas frustrierend, wenn man dem Kunden nicht erklären kann, warum er gerade ein Problem hat.

Glücklicherweise kam gerade einer der Systemadministratoren ins Büro und beschwerte sich, dass wir gerade sein SAN füllen. Schuld sei der Slave unseres langsamen Masters. Auf dem Slave fanden wir eine Abfrage (Monatsend-Report), welche seit 2 bis 3 Stunden am laufen war, welche eine temporäre Tabelle von ungefähr 350 Gbyte erzeugte! Diese Tabelle füllte das SAN auf ungefähr 99%.

Der Systemadministrator bemerkte im Weiteren, dass das Füllen eines SAN's auf mehr als 90%, das ganze SAN ausbremsen würde (warum auch immer).

Diese Aussage liess bei uns die Alarmglocken klingeln: Hatten wir nicht ein I/O Problem, welches urplötzlich vor 2 bis 3 Stunden einsetzte? Wir fanden heraus, dass unser Master und der Slave unglücklicherweise auf dem selben SAN platziert waren.

Als wird die Abfrage gekillt hatten, wurde die Tabelle automatisch gelöscht und nach einigen Minuten wurde der Diskplatz wieder frei gegeben. Mir wurde gesagt, dass es einige Stunden dauert, bis das SAN sich wieder beruhigt haben wird (warum auch immer). Am nächsten Tag bestätigte der Kunde, dass alles wieder wie gewohnt läuft. Somit können wir ziemlich sicher sein, dass das Füllen des SAN's mit dem Slave das Problem auf unserem produktiven Master verursacht hat.

Schlussfolgerung: SAN's können verschiedene unerwartete Nebeneffekte und Auswirkungen auf die Performance haben. Wenn Sie nicht ungewollt unvorhersehbare Performanceauswirkungen erleben wollen, versuchen sie auf dedizierten Storagelösungen zu bleiben.

Siehe auch unser Commit Demo Test:

Taxonomy upgrade extras: performancesanvirtualizationconsolidationcloudvirtualisierungkonsolidierunggerman

Vorsicht bei der Nutzung von SAN

Oli Sennhauser - Fri, 2011-03-04 18:36
Taxonomy upgrade extras: performancesanvirtualizationconsolidationcloudvirtualisierungkonsolidierunggerman

Vorsicht bei der Nutzung von SAN (Storage Area Networks) oder ähnlichen Shard Storage Lösungen (und allen anderen Virtualisierungs-, Konsolidierungs- oder Cloud-Lösungen).

Diese Woche ist es wieder passiert: Ein Kunde rief bei uns an, weil er Ärger mit seinem on-line Shop hatte (siehe Datum!). Alle in seiner Firma beschwerten sich, dass die Datenbank langsam antwortet.

Als wir auf seine Maschine schauten (mit iostat), haben wir I/O Last und einige pending reads in InnoDB gesehen (SHOW ENGINE INNODB STATUS und SHOW GLOBAL STATUS LIKE 'InnoDB%') und eine sehr schlechte InnoDB Buffer Pool Hit Ratio (ungefähr 80%, ja, ich weiss Hit Ratios sind schlechte Indikatoren, aber manchmal sind sie recht nützlich).

Der Kunde beteuerte, dass er seit einigen Tagen nichts am System geändert habe. Und am vorherigen Tag sei alles prima gelaufen, aber an diesem Nachmittag wurde das System plötzlich langsam. Er teilte uns im weiteren mit, dass sie zur Zeit daran seien, Monatsreports zu generieren. Aber nur auf den Slaves.

Wir fanden eine Abfrage, welche seit 25 Minuten am laufen war, also nahm ich an, dass diese Abfrage der Übeltäter ist. Nachdem wir die Abfrage gekillt hatten, entspannte sich das System ein wenig, war aber immer noch unter I/O last und der Kunde merkte an, dass wir kurz vor Ende der Hauptlast-Zeit sind. Das würde erklären, warum das System nicht mehr so ausgelastet sei.

Bis zu diesem Zeitpunkt hatte ich keine Ahnung, was der Grund für unser Problem ist. Etwas frustrierend, wenn man dem Kunden nicht erklären kann, warum er gerade ein Problem hat.

Glücklicherweise kam gerade einer der Systemadministratoren ins Büro und beschwerte sich, dass wir gerade sein SAN füllen. Schuld sei der Slave unseres langsamen Masters. Auf dem Slave fanden wir eine Abfrage (Monatsend-Report), welche seit 2 bis 3 Stunden am laufen war, welche eine temporäre Tabelle von ungefähr 350 Gbyte erzeugte! Diese Tabelle füllte das SAN auf ungefähr 99%.

Der Systemadministrator bemerkte im Weiteren, dass das Füllen eines SAN's auf mehr als 90%, das ganze SAN ausbremsen würde (warum auch immer).

Diese Aussage liess bei uns die Alarmglocken klingeln: Hatten wir nicht ein I/O Problem, welches urplötzlich vor 2 bis 3 Stunden einsetzte? Wir fanden heraus, dass unser Master und der Slave unglücklicherweise auf dem selben SAN platziert waren.

Als wird die Abfrage gekillt hatten, wurde die Tabelle automatisch gelöscht und nach einigen Minuten wurde der Diskplatz wieder frei gegeben. Mir wurde gesagt, dass es einige Stunden dauert, bis das SAN sich wieder beruhigt haben wird (warum auch immer). Am nächsten Tag bestätigte der Kunde, dass alles wieder wie gewohnt läuft. Somit können wir ziemlich sicher sein, dass das Füllen des SAN's mit dem Slave das Problem auf unserem produktiven Master verursacht hat.

Schlussfolgerung: SAN's können verschiedene unerwartete Nebeneffekte und Auswirkungen auf die Performance haben. Wenn Sie nicht ungewollt unvorhersehbare Performanceauswirkungen erleben wollen, versuchen sie auf dedizierten Storagelösungen zu bleiben.

Siehe auch unser Commit Demo Test:

PrimeBase Technologies and FromDual form a Service-Cooperation for MySQL products

FromDual.en - Mon, 2011-02-28 14:58
Taxonomy upgrade extras: englishmysqlsupportprimebaseremote-dbacooperationproductservicemysql-support

From the Cooperation of these two companies arises the biggest independent service provider for MySQL and MariaDB in Europe.

Hamburg, Uster -- February 28, 2011 - The Hamburg based PrimeBase Technologies and the near Zürich located FromDual are forming a Cooperation for MySQL products and services, starting March 1st, 2011.

This Cooperation enables both companies to offer a complete set of services for all MySQL and MariaDB customers.

The customers of both parties now have he possibility to demand a 24x7 support service from their provider.

Companies, which use MySQL, often do not have the capability to operate the product themselves, because they do not have sufficiently trained MySQL staff.

The Remote-DBA offer meets exactly this need: Customers then have the possibility to let their databases be operated by a MySQL specialist.

In addition, the set of services offers MySQL Health Checks on a regular basis or an Emergency intervention in case of an incident.

The whole package is built modularly and there is no obligation to pay license fees or to purchase service that one does not need.

About PrimeBase Technologies

PrimeBase Technologies is the maker of the well known, scalable and transactional MySQL Storage Engine PBXT as well as the Streaming Engine PBMS and offers Support Services for MySQL and MariaDB. PrimeBase Technologies, furthermore is MySQL Platinum Partner.

Its CTO Paul McCullagh is currently the only Oracle ACE Director for MySQL in Europe.

Further information can be found at: www.PrimeBase.com.

About FromDual

FromDual is a global acting, neutral and vendor independent consulting company for MySQL and MariaDB with numerous customers from the Telecom, Media, Service, Internet and Industry sector. FromDual offers services and training for MySQL and its derivatives MariaDB, Percona Server and Drizzle. FromDual is an Oracle Silver Partner and Open Database Alliance (ODBA) Silver Partner.

Further information can be found at: www.fromdual.com

Contacts

PrimeBase Technologies GmbH: volker.oboda@primebase.com, Phone +49 40 389 044 15

FromDual GmbH: oli.sennhauser@fromdual.com, Phone +41 79 830 09 33

PrimeBase und FromDual schließen Kooperationsvertrag für MySQL Dienstleistungen

FromDual.de - Mon, 2011-02-28 14:50
Taxonomy upgrade extras: consultingberatungbetriebsupportprimebasekooperationdienstleistungenremote-dbagermanmysql-supportmysql-consultingmysql-beratung

Hamburg, Uster - 28. Februar 2011 - PrimeBase Technologies GmbH aus Hamburg und die in der nähe von Zürich ansässige FromDual GmbH gehen ab dem 1. März 2011 eine Partnerschaft für MySQL Produkte und Dienstleistungen ein.

Diese Partnerschaft ermöglicht es, den beiden Unternehmen eine vollständige Palette von Dienstleistungen für Ihre MySQL und MariaDB Kunden auch in deutscher Sprache anzubieten. Insbesondere besteht für die zahlreichen Kunden der beiden Unternehmen jetzt auch die Möglichkeit, einen 7x24 Stunden Support in Anspruch zu nehmen.

Unternehmen, die MySQL einsetzen, stehen immer öfter vor dem Problem, Ihre Anwendungen, die MySQL oder MariaDB verwenden, selber zu betreiben, zu warten oder weiter zu entwickeln. "Am Markt stehen nicht ausreichend ausgebildete MySQL Fachkräfte zur Verfügung", erklärt Oli Sennhauser, Geschäftsführer FromDual.

Genau hier setzt das Remote-DBA Angebot an: Die Kunden haben die Möglichkeit, ihre Datenbanken von einem MySQL Spezialisten betreiben zu lassen und zahlen nur den tatsächlichen Aufwand.

Das Dienstleistungsangebot beider Unternehmen umfasst auch einen regelmäßigen MySQL Gesundheitscheck oder eine Notfall-Intervention im Falle eines Zwischenfalles.

Das Angebotspaket ist Modular aufgebaut, und es besteht für Kunden keine Verpflichtung Lizenzgebühren zu entrichten oder zwingend Dienstleistungen zu kaufen, die man eigentlich gar nicht benötigt.

Über PrimeBase Technologies GmbH

PrimeBase Technologies GmbH ist Hersteller der bekannten, skalierbaren und transaktionsorientierten MySQL Storage Engine PBXT, sowie der Streaming Engine PBMS und bietet Support-Dienstleistungen für MySQL, Drizzle und MariaDB an. PrimeBase Technologies ist zudem MySQL Platinum Partner. Paul McCullagh, CTO, ist zur Zeit der einzige Oracle ACE Director für MySQL in Europa und wurde in 2008 MySQL Code Contributor of the year

Weitere Informationen finden Sie unter: www.PrimeBase.com.

Über FromDual

FromDual ist ein weltweit tätiges, neutrales und herstellerunabhängiges Beratungsunternehmen für MySQL und MariaDB mit zahlreichen Kunden aus der Telekom-, Medien-, Dienstleistungs- und Internet-Branche sowie der Industrie. FromDual bietet Beratung und Schulung für MySQL, sowie dessen Derivate MariaDB, Percona Server und Drizzle an. FromDual ist Oracle Silber Partner sowie Open Database Alliance (ODBA) Silber Partner.

Weitere Informationen finden Sie unter: www.fromdual.com

Kontakt

PrimeBase Technologies GmbH: volker.oboda@primebase.com, Telefon +49 40 389 044 15
Max-Brauer-Allee 50, D-22765 Hamburg

FromDual GmbH: oli.sennhauser@fromdual.com, Telefon +41 79 830 09 33
Rebenweg 6, CH-8610 Uster

DOAG Reagionaltreffen in München - 23. März 2011

FromDual.de - Mon, 2011-02-21 15:58
Taxonomy upgrade extras: mysqldoagregionaltreffenmünchenreplikationgerman

Wir sind am DOAG Regionaltreffen in München am Mittwoch den 23. März mit unserem Vortrag MySQL Replikation - Scale-Out, Master-Master, Backup (der Vortrag wird in deutscher Sprache gehalten).

FromDual releases new version of its MySQL Performance Monitor

FromDual.en - Sun, 2011-02-20 16:39
Taxonomy upgrade extras: mysqlperformanceenterprise monitormonitorperformance monitoringmpmmaas

FromDual releases its new version v0.5 of its MySQL Performance Monitor working with Zabbix.

What has changed so far in this release:

  • Recommended Location has changed to /usr/local
  • FromDual agent log files are rotated now.
  • There are now 2 different packages: One for the Agent and one for the Templates.
  • Some of the graphs were improved.
  • Missing status and system variable information were added and some were fixed.
  • Verbosity of logging information was adjusted.
  • A module for monitoring additional informations for Linux servers was added.
  • Agent caches now the data if it has no access to server. This gives the possibility to run the agent without an installed Zabbix Server and load the data later on off-site.
  • Start/stop scripts for running Zabbix agent and server under the mysql user were added.
  • Status information for the Aria Storage Engine were added.

The MySQL Performance Monitor is free of costs and the modules are offered under GPL.

You can get it from our download page.

If you find some problems or have suggestions to improve this solution please let us know about.

MySQL Cluster - Cluster Ring-Replikation mit 2 Replikations-Kanälen

Oli Sennhauser - Wed, 2011-01-12 20:25

Vor ein paar Tagen hatte ich wieder einmal mit einer MySQL Cluster Replikation zu tun. Ich habe das schon eine Weile nicht mehr angelangt und war somit vorbereitet, wieder einmal ein paar Überraschungen zu erleben.

Diejenige, für welche MySQL Cluster - Cluster Ring-Replikationen das tägliche Brot ist, können diesen Artikel getrost überspringen. Alle anderen können möglicherweise von unseren Erfahrungen profitieren.

Wir hatten das folgende MySQL Cluster Konstrukt im Einsatz:

Mehr Informationen über solche Gebilde können in der MySQL Cluster Dokumentation gefunden werden.

Situationen welche zu einem Channel Fail-over führen:

Was sind die Problem, mit dem MySQL Cluster, welche zu einem Channel Fail-over führen:

  • Der MySQL Master verliert die Verbindung zum MySQL Cluster (lost_event, gap).
  • Der MySQL Master kann mit der Last auf dem MySQL Cluster nicht Schritt halten und verliert daher Events (gap). Ich bin wirklich etwas verwundert über das Argument in der Dokumentation [ 1 ], dass in einem solchen Fall ein Channel Fail-over durchgeführt werden kann oder soll. Weil, wenn der Master 1 mit der Last nicht mehr Schritt halten kann, warum soll es dann Master 2 noch können...?).

Was eine Lücke (gap / lost_event) ist, kann der folgenden Skizze entnommen werden:

Wie ein solches System aufgesetzt wird, wollen wir hier nicht betrachten. Die Anleitung dazu können der MySQL Cluster Dokumentation entnommen werden.

Unsere Erkenntnisse

Unsere Erkenntnisse waren folgender Art:

Doppelte Primary Key Einträge

Wir erhielten einige doppelte Index Einträge für unsere AUTO_INCREMENT Primary Keys:

ERROR 1062 (23000): Duplicate entry '260' for key 'PRIMARY'

Der Grund dafür ist, dass wir ndb_autoincrement_prefetch_sz auf 256 gesetzt hatten, um eine bessere INSERT Performance zu erhalten.

Als Konsequenz erhält man, früher oder später, wenn man Daten in alle mysqld's auf beiden Clustern einfügt, einen Primary Key Konflikt.

Wir haben dieses Problem gelöst, indem wir die auto_increment_increment und auto_increment_offset Werte für die SQL Knoten auf beiden MySQL Clustern entsprechend gesetzt haben.

Empfohlene Channel Fail-over Methode funktioniert nur unter Last

Ein weiteres Problem, welches wir bereits vor langer Zeit bei einem anderen Kunden entdeckt haben, ist, dass das empfohlenen Channel Failover-Vorgehen [ 2 ]:

slave1> STOP SLAVE; slave1> SELECT MAX(epoch) AS latest FROM mysql.ndb_apply_status; master2> SELECT SUBSTRING_INDEX(File, '/', -1) AS master_log_file , Position AS master_log_pos FROM mysql.ndb_binlog_index WHERE epoch > <latest> ORDER BY epoch ASC LIMIT 1; slave2> CHANGE MASTER TO master_log_file='<master_log_file>', master_log_pos=<master_log_pos>;

nur funktioniert, wenn wir Last auf dem MySQL Cluster haben. Wenn wir gar keine Last haben, gibt diese Abfrage ein leeres Resultat zurück und es muss der Befehl SHOW MASTER STATUS dazu verwendet werden.

Dokumentationsfehler über log_slave_updates

Diese Situation haben wir fortwährend für Kanal ch2 und ch3 vom Cluster B auf den Cluster A wenn wir KEINE Last auf Cluster B haben und streng der Dokumentation gefolgt wird, wo für ein solches Gebilde gesagt wird: log_slave_updates DARF NICHT eingeschaltet (MUST NOT be enabled) [3] werden.

Ich habe dieses Problem mit ein paar Leuten diskutiert und bin zur Ansicht gekommen, dass die MySQL Cluster Dokumentation hier punktuell falsch ist. Der Master für eine 2 Cluster Replikation KANN log_slave_updates eingeschaltet haben und IMHO MUSS der Master einer 3 Cluster Replikation log_slave_updates eingeschaltet haben.

Aber trotzdem, wenn wir keine Last auf beiden Servern haben, müssen wir das Verfahren ändern um die korrekte Binary Log Position zu bestimmen, wenn wir den Kanal wechseln wollen. Das macht es etwas schwieriger wenn wir den Channel Fail-over automatisieren oder skripten wollen.

Leere Epochen

Früher, wenn ich mich recht erinnere, hat MySQL Cluster immer leere Epochen ins Binary Log geschrieben. Das hatte gewährleistet, dass immer eine gewisse Last auf den Kanälen geherrscht hat. Dann habe ich bei den MySQL Cluster Entwicklern reklamiert und diese haben dieses Problem behoben. Aber für die eben besprochene Situation wäre dieses Verhalten geradezu nützlich und würde Sinn machen. Also habe ich nach der ndb-log-empty-epochs Variablen Ausschau gehalten und gehofft, dass sie dieses Verhalten wieder ermöglicht. Aber irgendwie hat der MySQL Cluster für dieses Set-Up trotz der Verwendung dieser Variable keine leeren Epochen ans Binary Log gemeldet. Zumindest nicht in der kurzen Zeit, wo ich mich mit diesem Problem beschäftigt hatte.

Log_slave_updates wird auch durch den Binlog Injector Thread berücksichtigt

Eine weitere Erkenntnis mit log_slave_updates war, dass dieser Parameter entsprechend der Dokumentation, nur zum Zug kommt, wenn ein Slave auch als Master agiert [4]. Was heisst, dass er nur die Daten in sein Binary Log schreibt, wenn er die Daten direkt von seinem Master erhält. Es macht den Anschein, dass dies eine falsche Annahme ist. Ein Master scheint auch die Statements welche durch den Binlog Injector Thread [5] über den Cluster kommen, in sein Binary Log zu schreiben. Dies ist möglicherweise ein weiterer Dokumentationsfehler oder zumindest eine Dokumentationslücke.

Skip_slave_start sollte verwendet werden

Eine weiter Stolperfalle ist, dass ich vergessen habe, die Variable skip-slave-start zu setzen. Diese Variable sollte IMHO in einem solchen Set-up immer auf dem Slave gesetzt sein. Wenn ein Slave startet, kann er nicht wissen, ob er der aktive Channel sein wird oder nicht.

Zusammenfassung
  • Überwache Deine Replikations-Kanäle.
  • Nutze auto_increment_increment und auto_increment_offset wenn auf beide MySQL Cluster gleichzeitig geschrieben wird oder vermeideAUTO_INCREMENT.
  • Verwende ein kluges Channel Fail-over Skript.
  • Verwende log_slave_updates auf allen Mastern.
  • Verwende skip_slave_start auf allen Slaves.

Das waren die Erkenntnisse unseres letzten Einsatzes mit MySQL Cluster Replikation und Fail-over Replikations-Kanälen. Wenn Sie weitere oder andere Erfahrungen gesammelt haben, wären wir froh, von Ihnen darüber zu hören.

Ein Skript zum automatisierten Fail-over der Kanäle kann unter Download gefunden werden.

Taxonomy upgrade extras: replicationMySQL Clusterfail-overchannelRing-Replikationgerman

MySQL Cluster - Cluster Ring-Replikation mit 2 Replikations-Kanälen

Oli Sennhauser - Wed, 2011-01-12 20:25

Vor ein paar Tagen hatte ich wieder einmal mit einer MySQL Cluster Replikation zu tun. Ich habe das schon eine Weile nicht mehr angelangt und war somit vorbereitet, wieder einmal ein paar Überraschungen zu erleben.

Diejenige, für welche MySQL Cluster - Cluster Ring-Replikationen das tägliche Brot ist, können diesen Artikel getrost überspringen. Alle anderen können möglicherweise von unseren Erfahrungen profitieren.

Wir hatten das folgende MySQL Cluster Konstrukt im Einsatz:

Mehr Informationen über solche Gebilde können in der MySQL Cluster Dokumentation gefunden werden.

Situationen welche zu einem Channel Fail-over führen:

Was sind die Problem, mit dem MySQL Cluster, welche zu einem Channel Fail-over führen:

  • Der MySQL Master verliert die Verbindung zum MySQL Cluster (lost_event, gap).
  • Der MySQL Master kann mit der Last auf dem MySQL Cluster nicht Schritt halten und verliert daher Events (gap). Ich bin wirklich etwas verwundert über das Argument in der Dokumentation [ 1 ], dass in einem solchen Fall ein Channel Fail-over durchgeführt werden kann oder soll. Weil, wenn der Master 1 mit der Last nicht mehr Schritt halten kann, warum soll es dann Master 2 noch können...?).

Was eine Lücke (gap / lost_event) ist, kann der folgenden Skizze entnommen werden:

Wie ein solches System aufgesetzt wird, wollen wir hier nicht betrachten. Die Anleitung dazu können der MySQL Cluster Dokumentation entnommen werden.

Unsere Erkenntnisse

Unsere Erkenntnisse waren folgender Art:

Doppelte Primary Key Einträge

Wir erhielten einige doppelte Index Einträge für unsere AUTO_INCREMENT Primary Keys:

ERROR 1062 (23000): Duplicate entry '260' for key 'PRIMARY'

Der Grund dafür ist, dass wir ndb_autoincrement_prefetch_sz auf 256 gesetzt hatten, um eine bessere INSERT Performance zu erhalten.

Als Konsequenz erhält man, früher oder später, wenn man Daten in alle mysqld's auf beiden Clustern einfügt, einen Primary Key Konflikt.

Wir haben dieses Problem gelöst, indem wir die auto_increment_increment und auto_increment_offset Werte für die SQL Knoten auf beiden MySQL Clustern entsprechend gesetzt haben.

Empfohlene Channel Fail-over Methode funktioniert nur unter Last

Ein weiteres Problem, welches wir bereits vor langer Zeit bei einem anderen Kunden entdeckt haben, ist, dass das empfohlenen Channel Failover-Vorgehen [ 2 ]:

slave1> STOP SLAVE; slave1> SELECT MAX(epoch) AS latest FROM mysql.ndb_apply_status; master2> SELECT SUBSTRING_INDEX(File, '/', -1) AS master_log_file , Position AS master_log_pos FROM mysql.ndb_binlog_index WHERE epoch > <latest> ORDER BY epoch ASC LIMIT 1; slave2> CHANGE MASTER TO master_log_file='<master_log_file>', master_log_pos=<master_log_pos>;

nur funktioniert, wenn wir Last auf dem MySQL Cluster haben. Wenn wir gar keine Last haben, gibt diese Abfrage ein leeres Resultat zurück und es muss der Befehl SHOW MASTER STATUS dazu verwendet werden.

Dokumentationsfehler über log_slave_updates

Diese Situation haben wir fortwährend für Kanal ch2 und ch3 vom Cluster B auf den Cluster A wenn wir KEINE Last auf Cluster B haben und streng der Dokumentation gefolgt wird, wo für ein solches Gebilde gesagt wird: log_slave_updates DARF NICHT eingeschaltet (MUST NOT be enabled) [3] werden.

Ich habe dieses Problem mit ein paar Leuten diskutiert und bin zur Ansicht gekommen, dass die MySQL Cluster Dokumentation hier punktuell falsch ist. Der Master für eine 2 Cluster Replikation KANN log_slave_updates eingeschaltet haben und IMHO MUSS der Master einer 3 Cluster Replikation log_slave_updates eingeschaltet haben.

Aber trotzdem, wenn wir keine Last auf beiden Servern haben, müssen wir das Verfahren ändern um die korrekte Binary Log Position zu bestimmen, wenn wir den Kanal wechseln wollen. Das macht es etwas schwieriger wenn wir den Channel Fail-over automatisieren oder skripten wollen.

Leere Epochen

Früher, wenn ich mich recht erinnere, hat MySQL Cluster immer leere Epochen ins Binary Log geschrieben. Das hatte gewährleistet, dass immer eine gewisse Last auf den Kanälen geherrscht hat. Dann habe ich bei den MySQL Cluster Entwicklern reklamiert und diese haben dieses Problem behoben. Aber für die eben besprochene Situation wäre dieses Verhalten geradezu nützlich und würde Sinn machen. Also habe ich nach der ndb-log-empty-epochs Variablen Ausschau gehalten und gehofft, dass sie dieses Verhalten wieder ermöglicht. Aber irgendwie hat der MySQL Cluster für dieses Set-Up trotz der Verwendung dieser Variable keine leeren Epochen ans Binary Log gemeldet. Zumindest nicht in der kurzen Zeit, wo ich mich mit diesem Problem beschäftigt hatte.

Log_slave_updates wird auch durch den Binlog Injector Thread berücksichtigt

Eine weitere Erkenntnis mit log_slave_updates war, dass dieser Parameter entsprechend der Dokumentation, nur zum Zug kommt, wenn ein Slave auch als Master agiert [4]. Was heisst, dass er nur die Daten in sein Binary Log schreibt, wenn er die Daten direkt von seinem Master erhält. Es macht den Anschein, dass dies eine falsche Annahme ist. Ein Master scheint auch die Statements welche durch den Binlog Injector Thread [5] über den Cluster kommen, in sein Binary Log zu schreiben. Dies ist möglicherweise ein weiterer Dokumentationsfehler oder zumindest eine Dokumentationslücke.

Skip_slave_start sollte verwendet werden

Eine weiter Stolperfalle ist, dass ich vergessen habe, die Variable skip-slave-start zu setzen. Diese Variable sollte IMHO in einem solchen Set-up immer auf dem Slave gesetzt sein. Wenn ein Slave startet, kann er nicht wissen, ob er der aktive Channel sein wird oder nicht.

Zusammenfassung
  • Überwache Deine Replikations-Kanäle.
  • Nutze auto_increment_increment und auto_increment_offset wenn auf beide MySQL Cluster gleichzeitig geschrieben wird oder vermeideAUTO_INCREMENT.
  • Verwende ein kluges Channel Fail-over Skript.
  • Verwende log_slave_updates auf allen Mastern.
  • Verwende skip_slave_start auf allen Slaves.

Das waren die Erkenntnisse unseres letzten Einsatzes mit MySQL Cluster Replikation und Fail-over Replikations-Kanälen. Wenn Sie weitere oder andere Erfahrungen gesammelt haben, wären wir froh, von Ihnen darüber zu hören.

Ein Skript zum automatisierten Fail-over der Kanäle kann unter Download gefunden werden.

Taxonomy upgrade extras: replicationMySQL Clusterfail-overchannelRing-Replikationgerman

MySQL Cluster - Cluster Ring-Replikation mit 2 Replikations-Kanälen

Oli Sennhauser - Wed, 2011-01-12 20:25
Taxonomy upgrade extras: replicationMySQL Clusterfail-overchannelRing-Replikationgerman

Vor ein paar Tagen hatte ich wieder einmal mit einer MySQL Cluster Replikation zu tun. Ich habe das schon eine Weile nicht mehr angelangt und war somit vorbereitet, wieder einmal ein paar Überraschungen zu erleben.

Diejenige, für welche MySQL Cluster - Cluster Ring-Replikationen das tägliche Brot ist, können diesen Artikel getrost überspringen. Alle anderen können möglicherweise von unseren Erfahrungen profitieren.

Wir hatten das folgende MySQL Cluster Konstrukt im Einsatz:

Mehr Informationen über solche Gebilde können in der MySQL Cluster Dokumentation gefunden werden.

Situationen welche zu einem Channel Fail-over führen:

Was sind die Problem, mit dem MySQL Cluster, welche zu einem Channel Fail-over führen:

  • Der MySQL Master verliert die Verbindung zum MySQL Cluster (lost_event, gap).
  • Der MySQL Master kann mit der Last auf dem MySQL Cluster nicht Schritt halten und verliert daher Events (gap). Ich bin wirklich etwas verwundert über das Argument in der Dokumentation [ 1 ], dass in einem solchen Fall ein Channel Fail-over durchgeführt werden kann oder soll. Weil, wenn der Master 1 mit der Last nicht mehr Schritt halten kann, warum soll es dann Master 2 noch können...?).

Was eine Lücke (gap / lost_event) ist, kann der folgenden Skizze entnommen werden:

Wie ein solches System aufgesetzt wird, wollen wir hier nicht betrachten. Die Anleitung dazu können der MySQL Cluster Dokumentation entnommen werden.

Unsere Erkenntnisse

Unsere Erkenntnisse waren folgender Art:

Doppelte Primary Key Einträge

Wir erhielten einige doppelte Index Einträge für unsere AUTO_INCREMENT Primary Keys:

ERROR 1062 (23000): Duplicate entry '260' for key 'PRIMARY'

Der Grund dafür ist, dass wir ndb_autoincrement_prefetch_sz auf 256 gesetzt hatten, um eine bessere INSERT Performance zu erhalten.

Als Konsequenz erhält man, früher oder später, wenn man Daten in alle mysqld's auf beiden Clustern einfügt, einen Primary Key Konflikt.

Wir haben dieses Problem gelöst, indem wir die auto_increment_increment und auto_increment_offset Werte für die SQL Knoten auf beiden MySQL Clustern entsprechend gesetzt haben.

Empfohlene Channel Fail-over Methode funktioniert nur unter Last

Ein weiteres Problem, welches wir bereits vor langer Zeit bei einem anderen Kunden entdeckt haben, ist, dass das empfohlenen Channel Failover-Vorgehen [ 2 ]:

slave1> STOP SLAVE; slave1> SELECT MAX(epoch) AS latest FROM mysql.ndb_apply_status; master2> SELECT SUBSTRING_INDEX(File, '/', -1) AS master_log_file , Position AS master_log_pos FROM mysql.ndb_binlog_index WHERE epoch > <latest> ORDER BY epoch ASC LIMIT 1; slave2> CHANGE MASTER TO master_log_file='<master_log_file>', master_log_pos=<master_log_pos>;

nur funktioniert, wenn wir Last auf dem MySQL Cluster haben. Wenn wir gar keine Last haben, gibt diese Abfrage ein leeres Resultat zurück und es muss der Befehl SHOW MASTER STATUS dazu verwendet werden.

Dokumentationsfehler über log_slave_updates

Diese Situation haben wir fortwährend für Kanal ch2 und ch3 vom Cluster B auf den Cluster A wenn wir KEINE Last auf Cluster B haben und streng der Dokumentation gefolgt wird, wo für ein solches Gebilde gesagt wird: log_slave_updates DARF NICHT eingeschaltet (MUST NOT be enabled) [3] werden.

Ich habe dieses Problem mit ein paar Leuten diskutiert und bin zur Ansicht gekommen, dass die MySQL Cluster Dokumentation hier punktuell falsch ist. Der Master für eine 2 Cluster Replikation KANN log_slave_updates eingeschaltet haben und IMHO MUSS der Master einer 3 Cluster Replikation log_slave_updates eingeschaltet haben.

Aber trotzdem, wenn wir keine Last auf beiden Servern haben, müssen wir das Verfahren ändern um die korrekte Binary Log Position zu bestimmen, wenn wir den Kanal wechseln wollen. Das macht es etwas schwieriger wenn wir den Channel Fail-over automatisieren oder skripten wollen.

Leere Epochen

Früher, wenn ich mich recht erinnere, hat MySQL Cluster immer leere Epochen ins Binary Log geschrieben. Das hatte gewährleistet, dass immer eine gewisse Last auf den Kanälen geherrscht hat. Dann habe ich bei den MySQL Cluster Entwicklern reklamiert und diese haben dieses Problem behoben. Aber für die eben besprochene Situation wäre dieses Verhalten geradezu nützlich und würde Sinn machen. Also habe ich nach der ndb-log-empty-epochs Variablen Ausschau gehalten und gehofft, dass sie dieses Verhalten wieder ermöglicht. Aber irgendwie hat der MySQL Cluster für dieses Set-Up trotz der Verwendung dieser Variable keine leeren Epochen ans Binary Log gemeldet. Zumindest nicht in der kurzen Zeit, wo ich mich mit diesem Problem beschäftigt hatte.

Log_slave_updates wird auch durch den Binlog Injector Thread berücksichtigt

Eine weitere Erkenntnis mit log_slave_updates war, dass dieser Parameter entsprechend der Dokumentation, nur zum Zug kommt, wenn ein Slave auch als Master agiert [4]. Was heisst, dass er nur die Daten in sein Binary Log schreibt, wenn er die Daten direkt von seinem Master erhält. Es macht den Anschein, dass dies eine falsche Annahme ist. Ein Master scheint auch die Statements welche durch den Binlog Injector Thread [5] über den Cluster kommen, in sein Binary Log zu schreiben. Dies ist möglicherweise ein weiterer Dokumentationsfehler oder zumindest eine Dokumentationslücke.

Skip_slave_start sollte verwendet werden

Eine weiter Stolperfalle ist, dass ich vergessen habe, die Variable skip-slave-start zu setzen. Diese Variable sollte IMHO in einem solchen Set-up immer auf dem Slave gesetzt sein. Wenn ein Slave startet, kann er nicht wissen, ob er der aktive Channel sein wird oder nicht.

Zusammenfassung
  • Überwache Deine Replikations-Kanäle.
  • Nutze auto_increment_increment und auto_increment_offset wenn auf beide MySQL Cluster gleichzeitig geschrieben wird oder vermeideAUTO_INCREMENT.
  • Verwende ein kluges Channel Fail-over Skript.
  • Verwende log_slave_updates auf allen Mastern.
  • Verwende skip_slave_start auf allen Slaves.

Das waren die Erkenntnisse unseres letzten Einsatzes mit MySQL Cluster Replikation und Fail-over Replikations-Kanälen. Wenn Sie weitere oder andere Erfahrungen gesammelt haben, wären wir froh, von Ihnen darüber zu hören.

Ein Skript zum automatisierten Fail-over der Kanäle kann unter Download gefunden werden.

MyEnv für Multi-Datenbank Set-ups

Oli Sennhauser - Wed, 2010-12-01 12:21

Vor ein paar Wochen haben wir einem unserer Kunden unser MyEnv gezeigt. Er war sehr interessiert daran und hat uns geraten MyEnv einer breiten Öffentlichkeit bekannter zu machen. In Tat und Wahrheit ist das MyEnv bereits seit mehreren Jahren verfügbar und kann frei heruntergeladen werden...

Aber bis anhin konnten wir uns noch kein Herz fassen es gross einer breiten Öffentlichkeit anzukündigen weil es noch überhaupt nicht Endbenutzer tauglich war. Nachdem ich ein Wochenende damit verbracht habe, das MyEnv benutzerfreundlicher zu machen, einige Zeilen Code zu konsolidieren, altes Zeugs zu löschen, etc., denke ich, dass es jetzt akzeptable für die Öffentlichkeit, aber noch nicht perfekt ist (release early release often?).

Was ist MyEnv?

MyEnv ist ein Set von Skripten um bequem mehrere MySQL oder MariaDB Datenbankinstanzen auf ein und dem selben Server zu betreiben. Es können sogar mehrere Datenbanken mit verschiedenen Binaryversionen betrieben werden.

Meines Erachtens ist MyEnv bequemer als mysqld_multi und bietet mehr Funktionalität.

Wann soll MyEnv eingesetzt werden?

MyEnv macht Sinn, sobald mehrere MySQL Datenbanken auf einem Server installiert werden sollen. Das ist üblicherweise der Fall wenn:

  • viele verschiedene kleine Datenbanken von mehreren Servern auf einen Server konsolidiert werden sollen oder,
  • wenn die Daten mehrerer Kunden aus Sicherheitsgründen oder auf Kundenwunsch in verschiedenen Datenbanken gehalten werden müssen. Zum Beispiel wenn eine Applikation als Software-as-a-Service (SaaS) Lösung angeboten wird.

MyEnv hat den Vorteil gegenüber Virtualiserungslösungen (wie VMWare oder VirtualBox), dass der Overhead der virtuellen Maschine und des zusätzlichen Betriebssystems weg fällt. Somit können mehrere MySQL/MariaDB Datenbanken auf weniger Maschinen betrieben werden.

Probiert es also aus. Wenn Euch das MyEnv von Nutzen ist, sind wir froh. Bitte lasst uns auch wissen, wenn Ihr auf Probleme mit dem MyEnv stosst, wenn Ihr Bugs findet oder wenn Ihr einen Verbesserungsvorschlag habt.

Wenn allgemeine Fragen zur Konsolidierung von MySQL Datenbankservern oder MySQL in Software-as-a-Service (SaaS) Umgebungen bestehen, würde Euch unser MySQL Beratungsteam, gerne zur Seite stehen...

Weitere Informationen finden Sie in der MyEnv Dokumentation.

Taxonomy upgrade extras: mysqlenvironmentmulti instancedatabasevirtualizationconsolidationSaaSMyEnv

MyEnv für Multi-Datenbank Set-ups

Oli Sennhauser - Wed, 2010-12-01 12:21

Vor ein paar Wochen haben wir einem unserer Kunden unser MyEnv gezeigt. Er war sehr interessiert daran und hat uns geraten MyEnv einer breiten Öffentlichkeit bekannter zu machen. In Tat und Wahrheit ist das MyEnv bereits seit mehreren Jahren verfügbar und kann frei heruntergeladen werden...

Aber bis anhin konnten wir uns noch kein Herz fassen es gross einer breiten Öffentlichkeit anzukündigen weil es noch überhaupt nicht Endbenutzer tauglich war. Nachdem ich ein Wochenende damit verbracht habe, das MyEnv benutzerfreundlicher zu machen, einige Zeilen Code zu konsolidieren, altes Zeugs zu löschen, etc., denke ich, dass es jetzt akzeptable für die Öffentlichkeit, aber noch nicht perfekt ist (release early release often?).

Was ist MyEnv?

MyEnv ist ein Set von Skripten um bequem mehrere MySQL oder MariaDB Datenbankinstanzen auf ein und dem selben Server zu betreiben. Es können sogar mehrere Datenbanken mit verschiedenen Binaryversionen betrieben werden.

Meines Erachtens ist MyEnv bequemer als mysqld_multi und bietet mehr Funktionalität.

Wann soll MyEnv eingesetzt werden?

MyEnv macht Sinn, sobald mehrere MySQL Datenbanken auf einem Server installiert werden sollen. Das ist üblicherweise der Fall wenn:

  • viele verschiedene kleine Datenbanken von mehreren Servern auf einen Server konsolidiert werden sollen oder,
  • wenn die Daten mehrerer Kunden aus Sicherheitsgründen oder auf Kundenwunsch in verschiedenen Datenbanken gehalten werden müssen. Zum Beispiel wenn eine Applikation als Software-as-a-Service (SaaS) Lösung angeboten wird.

MyEnv hat den Vorteil gegenüber Virtualiserungslösungen (wie VMWare oder VirtualBox), dass der Overhead der virtuellen Maschine und des zusätzlichen Betriebssystems weg fällt. Somit können mehrere MySQL/MariaDB Datenbanken auf weniger Maschinen betrieben werden.

Probiert es also aus. Wenn Euch das MyEnv von Nutzen ist, sind wir froh. Bitte lasst uns auch wissen, wenn Ihr auf Probleme mit dem MyEnv stosst, wenn Ihr Bugs findet oder wenn Ihr einen Verbesserungsvorschlag habt.

Wenn allgemeine Fragen zur Konsolidierung von MySQL Datenbankservern oder MySQL in Software-as-a-Service (SaaS) Umgebungen bestehen, würde Euch unser MySQL Beratungsteam, gerne zur Seite stehen...

Weitere Informationen finden Sie in der MyEnv Dokumentation.

Taxonomy upgrade extras: mysqlenvironmentmulti instancedatabasevirtualizationconsolidationSaaSMyEnv

MyEnv für Multi-Datenbank Set-ups

Oli Sennhauser - Wed, 2010-12-01 12:21
Taxonomy upgrade extras: mysqlmyenvenvironmentmulti instancedatabasevirtualizationconsolidationSaaSgerman

Vor ein paar Wochen haben wir einem unserer Kunden unser MyEnv gezeigt. Er war sehr interessiert daran und hat uns geraten MyEnv einer breiten Öffentlichkeit bekannter zu machen. In Tat und Wahrheit ist das MyEnv bereits seit mehreren Jahren verfügbar und kann frei heruntergeladen werden...

Aber bis anhin konnten wir uns noch kein Herz fassen es gross einer breiten Öffentlichkeit anzukündigen weil es noch überhaupt nicht Endbenutzer tauglich war. Nachdem ich ein Wochenende damit verbracht habe, das MyEnv benutzerfreundlicher zu machen, einige Zeilen Code zu konsolidieren, altes Zeugs zu löschen, etc., denke ich, dass es jetzt akzeptable für die Öffentlichkeit, aber noch nicht perfekt ist (release early release often?).

Was ist MyEnv?

MyEnv ist ein Set von Skripten um bequem mehrere MySQL oder MariaDB Datenbankinstanzen auf ein und dem selben Server zu betreiben. Es können sogar mehrere Datenbanken mit verschiedenen Binaryversionen betrieben werden.

Meines Erachtens ist MyEnv bequemer als mysqld_multi und bietet mehr Funktionalität.

Wann soll MyEnv eingesetzt werden?

MyEnv macht Sinn, sobald mehrere MySQL Datenbanken auf einem Server installiert werden sollen. Das ist üblicherweise der Fall wenn:

  • viele verschiedene kleine Datenbanken von mehreren Servern auf einen Server konsolidiert werden sollen oder,
  • wenn die Daten mehrerer Kunden aus Sicherheitsgründen oder auf Kundenwunsch in verschiedenen Datenbanken gehalten werden müssen. Zum Beispiel wenn eine Applikation als Software-as-a-Service (SaaS) Lösung angeboten wird.

MyEnv hat den Vorteil gegenüber Virtualiserungslösungen (wie VMWare oder VirtualBox), dass der Overhead der virtuellen Maschine und des zusätzlichen Betriebssystems weg fällt. Somit können mehrere MySQL/MariaDB Datenbanken auf weniger Maschinen betrieben werden.

Probiert es also aus. Wenn Euch das MyEnv von Nutzen ist, sind wir froh. Bitte lasst uns auch wissen, wenn Ihr auf Probleme mit dem MyEnv stosst, wenn Ihr Bugs findet oder wenn Ihr einen Verbesserungsvorschlag habt.

Wenn allgemeine Fragen zur Konsolidierung von MySQL Datenbankservern oder MySQL in Software-as-a-Service (SaaS) Umgebungen bestehen, würde Euch unser MySQL Beratungsteam, gerne zur Seite stehen...

Weitere Informationen finden Sie in der MyEnv Dokumentation.

WAMP oder LAMP?

Oli Sennhauser - Fri, 2010-10-22 17:51

Einer unserer Kunden hat mich kürzlich gefragt, was wir ihm empfehlen: WAMP oder LAMP? Also Windows oder Linux zusammen mit Apache, MySQL und PHP.

Im weiteren hat er angemerkt, sein Lieferant habe gesagt, dass MySQL Cluster NICHT auf Windows läuft...

Das ist eine nicht triviale Frage. Was wir in so einem Fall raten, ist folgende Punkte zu beachten:

  • Ca. 80% der MySQL-Installationen laufen auf Linux! Es ist also auf Linux mit den wenigsten Problemen zu rechnen. Weitere Plattformen, welche man von Zeit zu Zeit bei Kunden antrifft sind: Windows, BSD-Derivate und Solaris (in etwa in dieser Reihenfolge).
  • MySQL als Firma und die MySQL-Mitarbeiter haben am meisten Know-How auf Linux, Mac, Solaris und Windows (in etwa in dieser Reihenfolge).
  • Also rein statistisch gesehen hat man mit Linux wahrscheinlich am wenigsten Ärger oder Probleme zu erwarten.
  • Wie der Name LAMP schon sagt werden diese 4 Komponenten häufig zusammen eingesetzt und sollten daher am besten ineinander eingeschliffen sein.
  • Das Linux für den professionellen Einsatz besser geeignet ist als Windows, würde ich persönlich bejahen (ich bin Linux-biased). Aber da scheiden sich bekanntlich die Geister! Windows-Admins werden jetzt wahrscheinlich einen roten Kopf kriegen... :)
  • Grundsätzlich denke ich aber, dass die Unterschiede zwischen Windows und Linux was Stabilität, Sicherheit und Performance anbelangen, heute marginal sind.
  • Was die Sicherheit anbelangt ist sicher PHP das grösste Risiko (respektive das, was die Entwickler damit anstellen).
  • Wenn Kunden ganz freaky Sachen machen wollen, denke ich, das Linux wegen seiner Flexibilität besser geeignet ist als Windows (siehe Facebook und Konsorten...).
  • Meines Erachtens das Wichtigste Kriterium ist das Know-How sowohl im Betrieb als auch, eingeschränkt, in der Entwicklung. Ich denke, dass dieses den grössten Einfluss hat. Also: Wenn der Betrieb keine Ahnung von Linux hat: Finger davon lassen!
  • Die Aussage des Lieferanten ist teilweise richtig. Früher lief MySQL Cluster ausschliesslich auf Linux (und anderen Unixoiden). Seit MySQL Cluster 7.1 wird aber mehr Gewicht auf Windows gelegt und Oracle hat MySQL Cluster 7.1 sogar als GA deklariert (GA = General Available = Production Ready). MySQL Support hat darüber aber die Nase gerümpft und den Kopf geschüttelt...
  • Oracle positioniert ja das Produkt MySQL neu gegen Windows SQL-Server auf Windows und wird voraussichtlich sehr viel Entwicklungstätigkeit da rein stecken!
  • Achtung: MySQL Cluster ist KEINE General-Purpose Datenbank. Man kann also NICHT einfach denken, ich baue meine Applikation und hänge dann einen MySQL Cluster drunter. Bei MySQL Cluster wird eine Applikation spezifisch auf dieses Produkt zugeschnitten! Anders verhält es sich mit einem geclusterten MySQL (MySQL HA, geht sowohl unter Windows als auch unter unixoiden Systemen).
Taxonomy upgrade extras: wamplampgerman

WAMP oder LAMP?

Oli Sennhauser - Fri, 2010-10-22 17:51

Einer unserer Kunden hat mich kürzlich gefragt, was wir ihm empfehlen: WAMP oder LAMP? Also Windows oder Linux zusammen mit Apache, MySQL und PHP.

Im weiteren hat er angemerkt, sein Lieferant habe gesagt, dass MySQL Cluster NICHT auf Windows läuft...

Das ist eine nicht triviale Frage. Was wir in so einem Fall raten, ist folgende Punkte zu beachten:

  • Ca. 80% der MySQL-Installationen laufen auf Linux! Es ist also auf Linux mit den wenigsten Problemen zu rechnen. Weitere Plattformen, welche man von Zeit zu Zeit bei Kunden antrifft sind: Windows, BSD-Derivate und Solaris (in etwa in dieser Reihenfolge).
  • MySQL als Firma und die MySQL-Mitarbeiter haben am meisten Know-How auf Linux, Mac, Solaris und Windows (in etwa in dieser Reihenfolge).
  • Also rein statistisch gesehen hat man mit Linux wahrscheinlich am wenigsten Ärger oder Probleme zu erwarten.
  • Wie der Name LAMP schon sagt werden diese 4 Komponenten häufig zusammen eingesetzt und sollten daher am besten ineinander eingeschliffen sein.
  • Das Linux für den professionellen Einsatz besser geeignet ist als Windows, würde ich persönlich bejahen (ich bin Linux-biased). Aber da scheiden sich bekanntlich die Geister! Windows-Admins werden jetzt wahrscheinlich einen roten Kopf kriegen... :)
  • Grundsätzlich denke ich aber, dass die Unterschiede zwischen Windows und Linux was Stabilität, Sicherheit und Performance anbelangen, heute marginal sind.
  • Was die Sicherheit anbelangt ist sicher PHP das grösste Risiko (respektive das, was die Entwickler damit anstellen).
  • Wenn Kunden ganz freaky Sachen machen wollen, denke ich, das Linux wegen seiner Flexibilität besser geeignet ist als Windows (siehe Facebook und Konsorten...).
  • Meines Erachtens das Wichtigste Kriterium ist das Know-How sowohl im Betrieb als auch, eingeschränkt, in der Entwicklung. Ich denke, dass dieses den grössten Einfluss hat. Also: Wenn der Betrieb keine Ahnung von Linux hat: Finger davon lassen!
  • Die Aussage des Lieferanten ist teilweise richtig. Früher lief MySQL Cluster ausschliesslich auf Linux (und anderen Unixoiden). Seit MySQL Cluster 7.1 wird aber mehr Gewicht auf Windows gelegt und Oracle hat MySQL Cluster 7.1 sogar als GA deklariert (GA = General Available = Production Ready). MySQL Support hat darüber aber die Nase gerümpft und den Kopf geschüttelt...
  • Oracle positioniert ja das Produkt MySQL neu gegen Windows SQL-Server auf Windows und wird voraussichtlich sehr viel Entwicklungstätigkeit da rein stecken!
  • Achtung: MySQL Cluster ist KEINE General-Purpose Datenbank. Man kann also NICHT einfach denken, ich baue meine Applikation und hänge dann einen MySQL Cluster drunter. Bei MySQL Cluster wird eine Applikation spezifisch auf dieses Produkt zugeschnitten! Anders verhält es sich mit einem geclusterten MySQL (MySQL HA, geht sowohl unter Windows als auch unter unixoiden Systemen).
Taxonomy upgrade extras: wamplampgerman

WAMP oder LAMP?

Oli Sennhauser - Fri, 2010-10-22 17:51
Taxonomy upgrade extras: wamplampgerman

Einer unserer Kunden hat mich kürzlich gefragt, was wir ihm empfehlen: WAMP oder LAMP? Also Windows oder Linux zusammen mit Apache, MySQL und PHP.

Im weiteren hat er angemerkt, sein Lieferant habe gesagt, dass MySQL Cluster NICHT auf Windows läuft...

Das ist eine nicht triviale Frage. Was wir in so einem Fall raten, ist folgende Punkte zu beachten:

  • Ca. 80% der MySQL-Installationen laufen auf Linux! Es ist also auf Linux mit den wenigsten Problemen zu rechnen. Weitere Plattformen, welche man von Zeit zu Zeit bei Kunden antrifft sind: Windows, BSD-Derivate und Solaris (in etwa in dieser Reihenfolge).
  • MySQL als Firma und die MySQL-Mitarbeiter haben am meisten Know-How auf Linux, Mac, Solaris und Windows (in etwa in dieser Reihenfolge).
  • Also rein statistisch gesehen hat man mit Linux wahrscheinlich am wenigsten Ärger oder Probleme zu erwarten.
  • Wie der Name LAMP schon sagt werden diese 4 Komponenten häufig zusammen eingesetzt und sollten daher am besten ineinander eingeschliffen sein.
  • Das Linux für den professionellen Einsatz besser geeignet ist als Windows, würde ich persönlich bejahen (ich bin Linux-biased). Aber da scheiden sich bekanntlich die Geister! Windows-Admins werden jetzt wahrscheinlich einen roten Kopf kriegen... :)
  • Grundsätzlich denke ich aber, dass die Unterschiede zwischen Windows und Linux was Stabilität, Sicherheit und Performance anbelangen, heute marginal sind.
  • Was die Sicherheit anbelangt ist sicher PHP das grösste Risiko (respektive das, was die Entwickler damit anstellen).
  • Wenn Kunden ganz freaky Sachen machen wollen, denke ich, das Linux wegen seiner Flexibilität besser geeignet ist als Windows (siehe Facebook und Konsorten...).
  • Meines Erachtens das Wichtigste Kriterium ist das Know-How sowohl im Betrieb als auch, eingeschränkt, in der Entwicklung. Ich denke, dass dieses den grössten Einfluss hat. Also: Wenn der Betrieb keine Ahnung von Linux hat: Finger davon lassen!
  • Die Aussage des Lieferanten ist teilweise richtig. Früher lief MySQL Cluster ausschliesslich auf Linux (und anderen Unixoiden). Seit MySQL Cluster 7.1 wird aber mehr Gewicht auf Windows gelegt und Oracle hat MySQL Cluster 7.1 sogar als GA deklariert (GA = General Available = Production Ready). MySQL Support hat darüber aber die Nase gerümpft und den Kopf geschüttelt...
  • Oracle positioniert ja das Produkt MySQL neu gegen Windows SQL-Server auf Windows und wird voraussichtlich sehr viel Entwicklungstätigkeit da rein stecken!
  • Achtung: MySQL Cluster ist KEINE General-Purpose Datenbank. Man kann also NICHT einfach denken, ich baue meine Applikation und hänge dann einen MySQL Cluster drunter. Bei MySQL Cluster wird eine Applikation spezifisch auf dieses Produkt zugeschnitten! Anders verhält es sich mit einem geclusterten MySQL (MySQL HA, geht sowohl unter Windows als auch unter unixoiden Systemen).

Pages

Subscribe to FromDual aggregator