MySQL/MariaDB - Shared Hosting - Datenbankgröße begrenzen (Quota)

  • Guten Abend in die Runde,


    nach einer längeren Pause melde ich mich mal wieder mit einem Thema, welches mich aktuell beschäftigt.


    Auf meinem root-server habe ich mehrere Webseiten laufen. Jede Webseite hat seinen eigenen Systemuser für die Dateiberechtigungen sowie einen eigenen php-fpm Prozess.

    Mittels User-Quota habe ich den Speicher pro Webseite begrenzt.

    Nun bin ich am überlegen, wie ich diese Begrenzung auch auf die jeweiligen Datenbanken übertragen kann.


    Nach viel lesen durch sämtliche Foren bin ich eigentlich nur auf 2 "vielversprechende" Lösungen gestoßen.


    1. ein MySQL-Quota Script (Link) das durch einen cronjob prüft ob die definierte Größe erreicht wurde und dann die jeweiligen Privilegien entzieht.

    2. Ich erweitere mein User-Quota einfach mit auf die jeweilige Datenbank aus. Sprich den Datenbank Files dem jeweiligem User zuordnen.


    Vielleicht hat jemand hier ja noch eine bessere/"saubere" Möglichkeit...

  • Mal den Grundsatz in Frage stellen: Warum möchtest du den belegten Datenbankspeicher hart limitieren?

    Dein Ansatz ist sogar Schreibrechte zu entfernen, wenn die Quote erreicht ist? Wenn also einer meiner Webseitenbesucher eine Bestellung aufgibt, kann es sein, dass die Bestellpositionen nicht mehr gespeichert werden können? Nett.


    Das einrechnen in eine Soft-Quote ist hier denke ich gängige Praxis...

  • Hallo,

    ich sage ja nicht das die beiden Lösungen aktuell aktiv sind sondern nur, dass es welche sind die ich gefunden habe.


    Die Datenbanken laufen also noch völlig "frei".

    Bei den User-Quotas arbeite ich schon mit soft- und Hard-Limits.


    Ich möchte halt einfach nur dir maximale größe jeder einzelnen Datenbank begrenzen. Einfach nur aus Schutz vor Missbrauch.

  • PS: ein einfaches Beispiel...


    Ich habe einige kleine Webseiten die "Fertig" sind und wo es auch keine Funktionen gibt, die dafür sorgen, dass die Datenbank großartig größer wird.

    Die Datenbankgrößen liegen bei so ca. 25-30 MB.

    Wenn ich dort also selbst bei 500 MB ein Hard-Quota setzen würde, wäre das für die Nutzung völlig irrelevant. Es wird ja nichts "generiert".


    Es soll wirklich nur vor Missbrauch Schützen. Einige meiner Webseitenbetreiber haben einen eigenen Zugang zum Backend (WordPress) und man weiß ja nie zu 100 % wer das ist :/:S

  • Alternative Idee: Eigene MariaDB-Instanz je Kunde? (mit eigenem Useraccount unter Linux und z.B. Journal-Quota)


    Dank Systemd ist das mittlerweile deutlich einfacher realisierbar. Die meisten Control Panel für Kunden kommen damit aber nur schwer bis gar nicht klar. Aber prinzipiell wäre das eventuell mein Weg, wie ich es machen würde, wenn ich es hart begrenzen wollen würde. Die von Hecke29 erwähnten Probleme mit Hardlimits existieren bei so einem Setup natürlich trotzdem. Aber das könnte man durch rechtzeitige Warnungen mittels Softlimit halbwegs kompensieren. Wobei sich dann die Frage stellt, warum man das Hardlimit so kompliziert macht und nicht gleich "nur" den Zugang sperrt… ?


    Eine eigene Instanz pro Kunde hätte auch den Vorteil, dass man auf beliebige Kundenwünsche bei der Datenbankserverkonfiguration eingehen könnte. Es erhöht halt den Verwaltungs und Administrationsaufwand.

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Ein interessanter Gedanke - danke!


    Mit Control Panels arbeite ich sowieso nicht. Ich mache alles altmodisch, per "Hand".


    Bei Froxlor bin ich aber gerade trotzdem bei... dort kann man ja auch die Datenbankgröße begrenzen.

    Mal gucken wie es dort geregelt wird.