相关的安装及配置文档,可参见之前的两篇博文:
http://skyou.blog.51cto.com/2915693/541686
http://skyou.blog.51cto.com/2915693/544914
备份cacti数据
1、对于cacti文件数据的备份,有几个重要的目录文件:
/var/www/html/cacti/rra (该目录为rrdtool图形文件,此处的备份不能用简单的cp,而要使用rrdtool工具来进行备份及恢复)
rrdtool dump filename.rrd >filename.xml
注:如果是直接cp备份的,恢复后在cacti的主页上显示不出来图形,因此对于rrd文件的备份与恢复必须例用rrdtool工具来做。
/var/www/html/cacti (该目录为cacti的主程序文件,此处的备份,可以使用cp、rsync或tar进行备份)
2、对于cacti的数据库的备份,此处主要涉及mysql的备份方法,这里主要采用mysqldump命令行方式备份,如采用命令
mysqldump -ucactiuser -pcacti cacti --opt > cacti.sql
注:此处的--opt参数是很多参数的一个群组。
在mysqldump的man page页里的解释:
use of --opt is the same as specifying --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset.
Note that all of the options that --opt stands for also are on by default because --opt is on by default.
从上面的解释中,它是一组参数的群组,当指定了--opt后,就相当于默认指定了这些参数:
--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset
3、根据以上的几项要点,写出备份的SHELL脚本
大致的意思是将cacti数据库、cacti的主程序文件、rrd图形文件备份到一个指定的目录
脚本文本格式如下:
#!/bin/bash RRDDUMP="/usr/bin/rrdtool dump" RRASOURCEDIR="/var/www/html/cacti/rra" CACTIDIR="/var/www/html/cacti" RRADESTDIR="/opt/rraxml" DATABASEDIR="/opt" BCACTIDIR="/opt/cacti" MYSQLDUMP="/usr/bin/mysqldump" DATE=`date +%Y%m%d` echo "Backup cacti's database...." $MYSQLDUMP -ucactiuser -pcacti cacti --opt > ${DATABASEDIR}/cacti.$DATE.sql if [ ! -e ${RRADESTDIR} ];then mkdir ${RRADESTDIR} else rm -rf ${RRADESTDIR}/* fi echo "Backup cacti's files..." if [ -e $BCACTIDIR ];then rm -rf $BCACTIDIR fi cp -rf ${CACTIDIR} $DATABASEDIR rm -f $BCACTIDIR/rra/*.rrd rm -f $BCACTIDIR/log/*.log cd ${RRASOURCEDIR}
echo "rrddump is processing ..." for file in `ls ${RRASOURCEDIR}/*.rrd|awk -F\/ '{print $NF}'` do $RRDDUMP $file > ${RRADESTDIR}/${file}.xml done echo "ok"
恢复cacti数据
对于cacti的数据恢复主要包括cacti数据库、cacti的主程序文件、rrd图形文件
数据库的恢复主要为,先删除已经存在的cacti数据库,然后再创建,再将备份的数据导入。
cacti的主程序文件的恢复主要为,将备份文件复制到/var/www/html目录。
rrd图形文件的恢复主要为,使用rrdtool restore filename.xml filename.rrd
因此根据上面的备份,同样,写出如下SHELL脚本来进行处理
脚本文本格式如下:
#!/bin/bash RRDRESTORE="/usr/bin/rrdtool restore" RRADESTDIR="/var/www/html/cacti/rra" CACTILOG="/var/www/html/cacti/log" CACTI="/var/www/html" CACTIDIR="/var/www/html/cacti" RRASOURCEDIR="/opt/rraxml" DATABASEDIR="/opt" BCACTIDIR="/opt/cacti" MYSQL="/usr/bin/mysql" DATE=`date +%Y%m%d` echo "Creating cacti database and grant priviliges..." $MYSQL <<EOF drop database cacti; create database cacti; GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cacti'; flush privileges; EOF echo "Restore cacti's database...." ${MYSQL} -ucactiuser -pcacti cacti < $DATABASEDIR/cacti.$DATE.sql echo "Restore cacti's files...." rm -rf $CACTIDIR cp -rf $BCACTIDIR $CACTI echo "rrdrestore is processing..."
cd $RRASOURCEDIR for file in `ls $RRASOURCEDIR |awk -F\/ '{print $NF}'|sed 's/.xml//g'` do ${RRDRESTORE} $RRASOURCEDIR/${file}.xml ${RRADESTDIR}/${file} done echo "ok" chown -R cactiuser:cactiuser ${RRADESTDIR} ${CACTILOG}
脚本内容可以根据自己需要进行更改目录及路径。
转载于:https://blog.51cto.com/skyou/545841