MySQL DB Größe -> userReading

Begonnen von Sanders1985, 08 Februar 2017, 13:53:54

Vorheriges Thema - Nächstes Thema

Sanders1985

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

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Sanders1985

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