相关的安装及配置文档,可参见之前的两篇博文:

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图形文件备份到一个指定的目录

Image00127

 

脚本文本格式如下:

  #!/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脚本来进行处理

Image00128

脚本文本格式如下:

  #!/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}

脚本内容可以根据自己需要进行更改目录及路径。