FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: Sanders1985 am 08 Februar 2017, 13:53:54

Titel: MySQL DB Größe -> userReading
Beitrag von: Sanders1985 am 08 Februar 2017, 13:53:54
Hello,

nachdem ich kein passenden Codeschnippsel gefunden habe, anbei das was ich mir zusammen gebaut habe, hoffe es kann wem helfen:
DbSizeMB {
attr <name_DB_LOG> userReadings my $dbSize = qx(mysql -uUSERNAME -pPASSWORT DATENBANK -e "SELECT sum(round(((data_length + index_length) / 1024 / 1024), 2)) as '' FROM information_schema.TABLES WHERE table_schema = 'DATENBANK'");;
sprintf "%.2f", $dbSize;;
}


Einfach USERNAME, PASSWORT und DATENBANK mit euren Daten Anpassen und verwenden.

Kann man auch mit nem Timer Lösen und 1x am Tag abfragen und mit den Werten ein Dummy befüllen, usw...

Ahja einziges Manko, im Log kommt die MySQL Warnung "mysql: [Warning] Using a password on the command line interface can be insecure.", das macht nichts und kommt nur weil man das Passwort im shell verwendet.


mfg,
Seek
Titel: Antw:MySQL DB Größe -> userReading
Beitrag von: DeeSPe am 08 Februar 2017, 14:18:45
Zitat von: seek1338 am 08 Februar 2017, 13:53:54
Hello,

nachdem ich kein passenden Codeschnippsel gefunden habe, anbei das was ich mir zusammen gebaut habe, hoffe es kann wem helfen:
DbSizeMB {
attr <name_DB_LOG> userReadings my $dbSize = qx(mysql -uUSERNAME -pPASSWORT DATENBANK -e "SELECT sum(round(((data_length + index_length) / 1024 / 1024), 2)) as '' FROM information_schema.TABLES WHERE table_schema = 'DATENBANK'");;
sprintf "%.2f", $dbSize;;
}


Einfach USERNAME, PASSWORT und DATENBANK mit euren Daten Anpassen und verwenden.

Kann man auch mit nem Timer Lösen und 1x am Tag abfragen und mit den Werten ein Dummy befüllen, usw...

Ahja einziges Manko, im Log kommt die MySQL Warnung "mysql: [Warning] Using a password on the command line interface can be insecure.", das macht nichts und kommt nur weil man das Passwort im shell verwendet.


mfg,
Seek

Du könntest, denke ich, dafür auch die Funktion DbLog_ExecSQL benutzen!
Der brauchst Du nur den Hash des DbLog Device und den SQL Query übergeben, um den Rest (Authentifizierung) kümmert sich DbLog.

Gruß
Dan
Titel: Antw:MySQL DB Größe -> userReading
Beitrag von: Sanders1985 am 08 Februar 2017, 14:50:41
Danke - ja geht auch, aber in dem Fall heißt der Reading "userCommandResult"... ich wollts selber den reading erstellen, den kann man dann in jedem Device verwenden ohne großartige notifys, aber es funktioniert auch so:

set LogDB userCommand SELECT sum(round(((data_length + index_length) / 1024 / 1024), 2)) as '' FROM information_schema.TABLES WHERE table_schema = 'DATENBANK'

dann erhält man den Reading, wie in meinem Fall "userCommandResult 27.78"


mfg,
Seek