千家信息网

Cacti节点数据库自动同步脚本

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,因公司CA平台较多,每次添加或修改数据都需要在好几个CA上进行操作,同时因公司每台CA上都部署有自动导出脚本,如果手动给每台CA服务器添加或修改数据的话会造成图形ID不一致,从而导致自动导出的图形不一
千家信息网最后更新 2024年09月22日Cacti节点数据库自动同步脚本

因公司CA平台较多,每次添加或修改数据都需要在好几个CA上进行操作,同时因公司每台CA上都部署有自动导出脚本,如果手动给每台CA服务器添加或修改数据的话会造成图形ID不一致,从而导致自动导出的图形不一致等问题。所以做次脚本。部署在主CA上。并添加crontab计划任务。每日凌晨自动同步所有节点数据库,使所有节点数据一致。

一、首先编辑脚本

touch /root/back.shchmod +x /root/back.shvi /root/back.sh

二、插入一下脚本内容,具体参数根据实际情况修改,节点可根据自己需求进行增删。

#!/bin/bash  #Cacti节点数据库自动同步脚本#By:Fenei QQ:407603129#2016年5月12日#转载请注明出处#http://babyfenei.blog.51cto.com/443861/1772494  st=$(date +%s)  USER="root"   PASSWORD="mysql数据库密码" DATABASE="cacti"   MAIL="告警邮件收件箱"#mail     BACKUP_DIR=/root/data_backup/CANAME=cacti.sql#备份文件存储路径   LOGFILE=/root/data_backup/data_backup.log#日志文件路径     DATE=`date +%Y%m%d-%H%M`#用日期格式作为文件名  DUMPFILE=$DATE.sql   ARCHIVE=$DATE.sql.tar.gz   OPTIONS="-u$USER -p$PASSWORD $DATABASE --ignore-table=cacti.settings" #排除settings表  #判断备份文件存储目录是否存在,否则创建该目录   if [ ! -d $BACKUP_DIR ]   then      mkdir -p "$BACKUP_DIR"  fi      #开始备份之前,将备份信息头写入日记文件   echo "    ">> $LOGFILE   echo "--------------------" >> $LOGFILE   echo "BACKUP DATE:" $(date +"%y-%m-%d %H:%M:%S") >> $LOGFILE   echo "-------------------" >> $LOGFILE      #切换至备份目录   cd $BACKUP_DIR   mysqldump $OPTIONS > $DUMPFILE#判断数据库备份是否成功   if [[ $? == 0 ]]  then       tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1       echo "[$ARCHIVE] Backup Successful!" >> $LOGFILE       rm -f $DUMPFILE         #删除原始备份文件,只需保留备份压缩包      # 把压缩包文件备份到其他机器上。   else       echo "Database Backup Fail!" >> $LOGFILE   #备份失败后向管理者发送邮件提醒   mail -s "database:$DATABASE Daily Backup Fail!" $MAIL   fi   echo "Backup Process Done"  # 备份文件为cacti.sql并远程备份到节点服务器 cd $BACKUP_DIRmysqldump $OPTIONS > $BACKUP_DIR$CANAME  ###############联通CA同步#################scp -P 17121 $BACKUP_DIR$CANAME root@联通IP:/tmp/ >> $LOGFILE  2>&1if [[ $? == 0 ]]        then                echo "scp is down"                ssh -t -p 17121 root@联通IP "mysql -uroot -p联通数据库密码 cacti > $LOGFILE  2>&1if [[ $? == 0 ]]        then                echo "scp is down"                ssh -t -p 17121 root@电信IP "mysql -uroot -p电信数据库密码 cacti > $LOGFILE  2>&1if [[ $? == 0 ]]        then                echo "scp is down"                ssh -t  root@双线IP  "mysql -uroot -p双线数据库密码 cacti 

三、备份和远程恢复需要对所有节点服务器做SSH免密码登录,具体可参考http://lhflinux.blog.51cto.com/1961662/526122

四、编辑ctontab

vi /etc/cron.d/backup#插入如下内容01 00  * * * root /root/back.sh > /dev/null 2>&1#退出编辑状态,重启crond服务service crond restart


0