Sida 1 av 1
Lägga till RRA i befintlig databas
Postat: 03 mar 2010, 09:15
av andreas
Hej!
Jag har idag en databas där jag har registrerar AVERAGE. Jag skulle vilja komplettera med MIN och MAX också.
Är det möjligt att göra, utan att förlora befintlig data i databasen?
Har surfat runt och letat efter information, men bara hittat andra som har liknande frågor, utan några direkta svar.
/Andreas
Re: Lägga till RRA i befintlig databas
Postat: 03 mar 2010, 09:24
av elf98
När jag har lagt till flera RRAer har jag dumpat databasen till XML, skapat en ny databas med rätt RRAer och sedan lagt in gammal data genom att köra ett skript som loopar igenom XMLfilen rad för rad.
Bökigt och inte helt lätt...
Re: Lägga till RRA i befintlig databas
Postat: 03 mar 2010, 10:11
av andreas
Har du något script som jag kan utgå från och eventuellt modifiera för att fungera för mina databaser?
Re: Lägga till RRA i befintlig databas
Postat: 03 mar 2010, 13:57
av elf98
Så här gjorde jag:
Kod: Markera allt
#!/usr/bin/php
<?php
$db=temp.rrd;
passthru("cp /special/termo/rrdb/$db /home");
passthru("rrdtool dump /special/termo/rrdb/$db >/tmp/temp.xml");
$infile = "/tmp/temp.xml";
$outfile= "/tmp/temp.xml.expanded";
$i=0;
$in = fopen($infile, "r");
$out = fopen($outfile, "w");
#headers
while ($i < 20){
fputs($out,fgets($in));
$i++;
}
#AVERAGE
$line = fgets($in);
while (!stristr($line, "</rrd>")) {
fputs($out,$line);
$line = fgets($in);
}
fclose($in);
$in = fopen($infile, "r");
$i = 0;
while ($i < 20){
fgets($in);
$i++;
}
$line = fgets($in);
while (!stristr($line, "</rrd>")) {
fputs($out,str_replace("AVERAGE","MIN",$line));
$line = fgets($in);
}
fclose($in);
$in = fopen($infile, "r");
$i = 0;
while ($i < 20){
fgets($in);
$i++;
}
$line = fgets($in);
while (!stristr($line, "</rrd>")) {
fputs($out,str_replace("AVERAGE","MAX",$line));
$line = fgets($in);
}
fclose($in);
fputs($out,"</rrd>");
fclose($out);
}
passthru("rrdtool restore /tmp/temp.xml.expanded /tmp/$db");
passthru("mv /tmp/$db /special/termo/rrdb");
}
?>
Kanske inte helt lätt att följa koden.
Men jag dumpar databasen till xml och skapar sedan en ny XML-fil med både MIN/MAX och AVERAGE utifrån AVERAGE-värdena. De historiska MIN/MAX är egentligen AVERAGE över 1h, men det går ju inte att få fram data som redan medelvärdesbildas.
Re: Lägga till RRA i befintlig databas
Postat: 03 mar 2010, 21:27
av andreas
Tackar! Fungerade alldeles utmärkt!