在架構研究室(http://www.hiadmin.com/)看到一篇關於Cacti數據遷移的文章,值得學習,轉載一下。
一、工作流
安裝mysql;php;apache;rrdtool後;
將cacti目錄tarball後,複製到雙線機房新監控服務器上解壓;
cactid目錄tarball後,複製到雙線機房新監控服務器上解壓;
mysql數據庫dump或者tarball後,複製到雙線機房新監控服務器上解壓;
#mysqldump -p cacti >cacti.sql
重新賦予cactiuser對於數據庫cacti所有權限;
grant all . cacti.* to cactiuser@localhost identified by 'cactipassword';
將cacti目錄tarball後,複製到雙線機房新監控服務器上解壓;
cactid目錄tarball後,複製到雙線機房新監控服務器上解壓;
mysql數據庫dump或者tarball後,複製到雙線機房新監控服務器上解壓;
#mysqldump -p cacti >cacti.sql
重新賦予cactiuser對於數據庫cacti所有權限;
grant all . cacti.* to cactiuser@localhost identified by 'cactipassword';
二、故障發生
打開cacti可以正常登錄和控制,檢查graph management,打開所有的圖無顯示;於是打開debug模式:
*Turn . Graph Debug Mode.
RRDTool Says:
ERROR: This RRD was created . other architecture
*Turn . Graph Debug Mode.
RRDTool Says:
ERROR: This RRD was created . other architecture
三、解決方案
google、baidu了一下,發生這個問題的原因是因爲所有rrd庫需要全部重新dump和restore一次;
好了上腳本:
從老的cacti服務器上dump所有的rrd文件爲xml file,共計9K多張:
#!/bin/sh
好了上腳本:
從老的cacti服務器上dump所有的rrd文件爲xml file,共計9K多張:
#!/bin/sh
rrddump="/usr/bin/rrdtool dump"
xmldir=/tmp/rraxml
xmldir=/tmp/rraxml
for file in `find /var/www/html/cacti/rra/ -mtime -2 |awk -F\/ '{print $NF}'`
#遍歷rra目錄,查找近2天修改過的rrd文件;
do
${rrddump} ${file} > ${xmldir}/${file}.xml
done
tar走rraxml目錄到新監控服務器上解壓:restore腳本如下:
#!/bin/sh
rrdrestore="/usr/bin/rrdtool restore"
xmldir=/tmp/rraxml/
for file in `find ${xmldir} |awk -F\/ '{print $NF}' |sed s/.xml//g`
#遍歷xml目錄,並去掉xml後綴,直接還原到rra目錄下
do
${rrdrestore} ${xmldir}${file}.xml /cacti/rra/${file}
done
chown cactiuser:cactiuser /cacti/rra -R
完成後,再次打開cacti監控顯示正常;遷移成功;
用這個方法其實是用來備份rra的,這次正好順便備份一下。
#遍歷rra目錄,查找近2天修改過的rrd文件;
do
${rrddump} ${file} > ${xmldir}/${file}.xml
done
tar走rraxml目錄到新監控服務器上解壓:restore腳本如下:
#!/bin/sh
rrdrestore="/usr/bin/rrdtool restore"
xmldir=/tmp/rraxml/
for file in `find ${xmldir} |awk -F\/ '{print $NF}' |sed s/.xml//g`
#遍歷xml目錄,並去掉xml後綴,直接還原到rra目錄下
do
${rrdrestore} ${xmldir}${file}.xml /cacti/rra/${file}
done
chown cactiuser:cactiuser /cacti/rra -R
完成後,再次打開cacti監控顯示正常;遷移成功;
用這個方法其實是用來備份rra的,這次正好順便備份一下。