Current time: 12-26-2024, 03:07 AM Hello There, Guest! (LoginRegister)


Post Reply 
Disk Quota mit MySQL DBs auf seperaten Server
Author Message
Gos77 Offline
Junior Member
*

Posts: 94
Joined: Mar 2008
Reputation: 0
Post: #1
Disk Quota mit MySQL DBs auf seperaten Server
Moins zusammen,

ich bekomme seit dem Update von RC7 auf 1.0.0 Stabe Release (BuildDate 20090225) folgende eMail:

Hey There,

I'm the automatic email sent by on your [webserver-name] (x.x.x.x) server.

A critical error just was encountered while executing function mysqldb_quota_by_mysql_engine() in /var/www/ispcp/engine/quota/ispcp-dsk-quota

Error encountered was:
===============================================================
Database '[DB-name]' exists only in table 'sql_database'!!!
===============================================================

Ich habe die Vermutung, dass es mit dem seperaten MySQL-Server auf einem extra Host zu tun hat. Da dort natürlich das ispcp-dsk-quota Script nicht die Größe der MySQL Datenbanken ermitteln kann, da sie nicht auf dem gleichen Server wie die ispCP Webs lokalisiert sind.

Hat jemand möglicherweise eine ähnliche Konstellation mit getrennten Web- und DB-Host mit ispCP 1.0.0 Stable Release in Betrieb genommen und hat ähnliche Erfahrungen gemacht oder möglicherweise schon einen Workaround parat? Unter RC7 habe ich diese Meldung noch nicht bekommen.

Meine Ideen auf die Schnelle für Workaround sind bisher:
1. Quick'n'Dirty = MySQL DBs aus dem Disk Quota Script entfernen (ist nicht wirklich ne sinnvolle Lösung)
2. Dem Script irgendwie beibringen die Größe der DB auf dem extra DB-Server anders zu ermitteln (NFS-Mount zum Webserver schliesse ich dabei gleich aus)

Hat jemand ausm Dev-Team noch weitere Ideen, die vielleicht in späteren Versionen sinnvoll in ispCP zu integrieren wären?

Infos zur Systemconfig siehe 2. Teil meiner Signatur Wink

VG aus dem sonnigen Teltow
(This post was last modified: 03-24-2009 07:49 PM by Gos77.)
03-20-2009 06:11 PM
Find all posts by this user Quote this message in a reply
BeNe Offline
Moderator
*****
Moderators

Posts: 5,899
Joined: Jan 2007
Reputation: 68
Post: #2
RE: Disk Quota mit MySQL DBs auf seperaten Server
Die Datenbank scheint mal in ispCP erstellt zu sein und dann ausserhalb von ispCP gelöscht worden zu sein z.B. in PMA. Gibt es die Datenbank/Tabelle denn noch auf dem MySQL-Server ? Wenn nicht, dann kann ispCP auch nicht die größe davon berechnen.

Greez BeNe
03-20-2009 08:02 PM
Visit this user's website Find all posts by this user Quote this message in a reply
Gos77 Offline
Junior Member
*

Posts: 94
Joined: Mar 2008
Reputation: 0
Post: #3
RE: Disk Quota mit MySQL DBs auf seperaten Server
(03-20-2009 08:02 PM)BeNe Wrote:  Die Datenbank scheint mal in ispCP erstellt zu sein und dann ausserhalb von ispCP gelöscht worden zu sein z.B. in PMA. Gibt es die Datenbank/Tabelle denn noch auf dem MySQL-Server ? Wenn nicht, dann kann ispCP auch nicht die größe davon berechnen.

Greez BeNe

Hallo BeNe,

ja die Datenbanken existieren noch auf dem DB-Server, aber das ispcp_dsk_quota Script prüft anhand des Dateisystems, ob die DB existiert oder nicht. Diese Prüfung kann so bei mir natürlich nicht klappen, da wie gesagt die DBs auf einem seperaten DB-Server liegen.

Ich arbeite gerade schon an einem passendem Patch und stell den dann zur Verfügung, sobald das bei mir funzt. Dann können die im Entwickler-Kerker untergebrachten ispCP-Entwickler überlegen, ob man das integriert Wink

greetz Gos77
03-20-2009 08:56 PM
Find all posts by this user Quote this message in a reply
Gos77 Offline
Junior Member
*

Posts: 94
Joined: Mar 2008
Reputation: 0
Post: #4
RE: Disk Quota mit MySQL DBs auf seperaten Server
So hier meine Variante für ispcp_dsk_quota, wenn man einen seperaten DB-Server nutzt. Statt zu prüfen, ob das Verzeichnis der Datenbank existiert, wird auf dem DB-Server kontrolliert, ob die Datenbank existiert.

Ausschnitt aus meiner angepassten ispcp_dsk_quota

Start in sub mysqldb_quota_by_mysql_engine in Zeile 198

Code:
foreach (@$sqldb_ids) {

    my $sqldb_name   = @$_[1];
    my $sqldb_id     = @$_[0];

    my $sql = "select count(schemata_name) from information_schemata.schemata where schemata_name like '`$sqldb_name`';";

    ($rs, $ref) = doSQL($sql);

    return $rs if ($rs != 0);

    my $db_count = @$rdata[0];

    if($db_count > 0){

        my $sql = "show table status from `$sqldb_name`;";

        ($rs, $ref) = doSQL($sql);

        foreach(@$ref){

            my $data_length   = @$_[6];
            my $index_length  = @$_[8];

            $size += $data_length + $index_length;

        }
        } else {

        send_error_mail('mysqldb_quota_by_mysql_engine()', "Database '$sqldb_name' exists only in table 'sql_database'!!!");

    }
}

Vielleicht ist das ja sinnvoller als per if(-d "$main::cfg{DATABASE_DIR}/$sqldb_name") zu prüfen, ob die Datenbank im System existiert.

VG, Gos77
03-20-2009 10:00 PM
Find all posts by this user Quote this message in a reply
Zothos Offline
Release Manager
*****
Dev Team

Posts: 1,262
Joined: Feb 2007
Reputation: 10
Post: #5
RE: Disk Quota mit MySQL DBs auf seperaten Server
scheint mir eine gute Änderung zu sein.

Könntest du eine ticker erstellen und einen patch gegen den aktuellen trunk erstellen? Big Grin
03-24-2009 07:20 PM
Find all posts by this user Quote this message in a reply
Gos77 Offline
Junior Member
*

Posts: 94
Joined: Mar 2008
Reputation: 0
Post: #6
RE: Disk Quota mit MySQL DBs auf seperaten Server
(03-24-2009 07:20 PM)Zothos Wrote:  scheint mir eine gute Änderung zu sein.

Könntest du eine ticker erstellen und einen patch gegen den aktuellen trunk erstellen? Big Grin

Hallo Zothos,

ja kann ich machen. Muss ich mir nur mal den aktuellen Trunk in ner VMware bereitstellen. Kann sein, dass es somit noch bis nächste Woche dauert, da ich im moment nicht @home bin und aufm Laptop aktuell die Kapazitäten ausgeschöpft sind.

Hab da aber gleich noch eine Frag bevor ich nen Patch baue:
Erfüllt folgender Code irgendeinen bestimmten Zweck in dem ispcp_dsk_quota Script. Ist mir zumindest bisher nicht wirklich klar geworden? Das SQL-Statement davor liefert ja nur eine Spalte zurück. Habs aber sonst auch eher nicht so mit Perl.

Code:
$rdata = @$rdata[0];
my $quota_ent = @$rdata[0];

Ich hatte da für meinen Fall nur

Code:
my $db_count = @$rdata[0];

verwendet und das klappte auch einwandfrei.

Nicht, dass in meinem Patch nachher was fehlt, was eigentlich reingehört.
03-24-2009 07:46 PM
Find all posts by this user Quote this message in a reply
Post Reply 


Forum Jump:


User(s) browsing this thread: 1 Guest(s)