MySQL-Quota / Limits

pilgrims

Member
Besteht aktuell die Möglichkeit irgendwo so etwas ähnliches wie Quota für MySQL-Datenbanken zu setzen? Kann auch eine tägliche Prüfung der DB-Größe mit Mailbenachrichtigung sein.

Ich hatte kürzlich gleich 2x das Problem gehabt, dass in Kundendatenbanken Tabellen mit >20 GB (> 70 Datensätze) Datenvolumen aufgelaufen sind. Würde gerne rechtzeitig handeln, bevor ein Server quasi stillsteht.

Edit: es sollte heißen "> 70 Mio Datensätze"
 
Zuletzt bearbeitet:

florian030

Well-Known Member
Dafür musst Du wohl auf 3.1 warten. Du kannst aber bis dahin bspw. einen Cronjob laufen lassen, der die Größe der Datenbanken ermittelt und dir dann eine Mail schickt,
 

pilgrims

Member
Ist dieses Feature gemeint FS#2876 - Add DB-User limit ?
Die Roadmap zeigt den Stand 55% der Version 3.1 an. Das könnte also doch noch eine Weile dauern.

Danke für den Hinweis mit dem Cronjob. So etwas ähnliches hatte ich mir zwar schon gedacht...
 

florian030

Well-Known Member
Nein, das meinte ich nicht. Damit kann Connections / Requst begrenzen. Es gibt in 3.1 die Möglichkeit, die max. Größe einer Datenbank zu definieren und Quota-Warnings analog zu den Web / Mail-Quotas zu verschicken. Das geht über
SELECT SUM(data_length+index_length) FROM information_schema.TABLES WHERE table_schema= 'DATABASE';
 

JeGr

Member
Gibt es dann auch die Möglichkeit nur ein Warn-Level zu setzen aber kein hartes "geht nicht" Limit? Es gibt nichts unschöneres, als wenn ein großes Query abbricht oder eine ganze Transaction gegen die Wand fährt, nur weil sie ein paar Byte mehr bräuchte als das Limit sind. Und ich habe selten in Web Paketen DB Size Limits gesehen... (was nicht heißt, dass das Feature nicht sinnvoll ist :))
 

florian030

Well-Known Member
Ich wüsste nicht, was für ein QUERY die Größe beeinflussen sollte.... und es werden nur Warnungen als Mail verschickt. Man kann nicht eben mal so dem User dann die Rechte für die DB entziehen, weil er dann die Datenmenge auch nicht mehr reduzieren könnte.
 

JeGr

Member
Deshalb fragte ich ja nach. Es gäbe natürlich schon Möglichkeiten, ein hartes Limit durchzusetzen (bei reinem InnoDB bspw. eigenen Tablespace begrenzt auf X MB/GB) aber schön ist das natürlich nicht, wenn ein UPDATE oder INSERT dann gegen die Wand läuft weil die DB am Limit ist (hatte ich früher noch erlebt zu Zeiten, in denen es Leute gab, die händisch die Tablespaces gepflegt haben und nicht auf auto-inc stellen wollten). Warnmeldungen sind natürlich fein, damit man was sieht. Ich kenne Typo3 Entwickler bei denen immer wieder in Live bspw. die Logging Tabelle auf debug steht und dann gigabyteweise Daten belagert, bis das mal jemand abschaltet, ein Truncate über die Tabelle heizt und damit endlich wieder Platz macht (file_per_table sei Dank).
 

florian030

Well-Known Member
Ich halte es aus verschiedenen Gründen nicht für sinnvoll, reale Quotas für eine Datenbank bzw. für alle Datenbanken eines Kunden zu verwenden. Warn-Mail und gut ist. Du kannst - im Gegensatz zum Webspace - nicht die DB einfach mal sperren. Dann kann die nämlich nicht mehr geleert werden.
 

Till

Administrator
Eine sinnvolle Quota Implemetierung kann es nur geben wenn MySQL / Mariadb sie irgendwann mal intern implementiert, daher haben wir das auch nur als "warn System" eingebaut.
 

pilgrims

Member
Wenn eine Warnmail ausgelöst wird, ist es völlig ausreichend. Damit sollte jeder gut leben können.
Nicht alles, was (eines Tages) technisch möglich ist, muss auch zwingend umgesetzt werden.
 

Werbung

Top