我经常用Cacti,会遇到各种想不到的问题 ,以防止数据丢失,我们随时要进行Cacti的数据备份与迁移!
一、工作流
安装mysql;php;apache;rrdtool后;
将cacti目录tarball后,复制到双线机房新监控服务器上解压;
cactid目录tarball后,复制到双线机房新监控服务器上解压;
mysql数据库dump或者tarball后,复制到双线机房新监控服务器上解压;
#mysqldump -p cacti >cacti.sql
- 1.
- 2.
重新赋予cactiuser对于数据库cacti所有权限;
grant all . cacti.* to cactiuser@localhost identified by 'cactipassword';
- 1.
- 2.
二、故障发生
打开cacti可以正常登录和控制,检查graph management,打开所有的图无显示;于是打开debug模式:
*Turn . Graph Debug Mode.
RRDTool Says:
ERROR: This RRD was created . other architecture
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
#p#
三、解决方案
google、baidu了一下,发生这个问题的原因是因为所有rrd库需要全部重新dump和restore一次;
好了上脚本:
从老的cacti服务器上dump所有的rrd文件为xml file,共计9K多张:
#!/bin/sh
rrddump="/usr/bin/rrdtool dump"
xmldir=/tmp/rraxml
for file in `find /var/www/html/cacti/rra/ -mtime -2 |awk -F\/ '{print $NF}'`
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
#遍历rra目录,查找近2天修改过的rrd文件;
do
${rrddump} ${file} > ${xmldir}/${file}.xml
done
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
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`
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
#遍历xml目录,并去掉xml后缀,直接还原到rra目录下
do
${rrdrestore} ${xmldir}${file}.xml /cacti/rra/${file}
done
chown cactiuser:cactiuser /cacti/rra -R
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
完成后,再次打开cacti监控显示正常;迁移成功;
用这个方法其实是用来备份rra的,这次正好顺便备份一下。
通过文章的介绍,我们学会了Cacti的数据备份与迁移,以后再遇到这样的问题就会解决了!
【编辑推荐】