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

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

一、首先编辑脚本

touch /root/back.sh
chmod +x /root/back.sh
vi /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_DIR
mysqldump $OPTIONS > $BACKUP_DIR$CANAME  

###############联通CA同步#################
scp -P 17121 $BACKUP_DIR$CANAME [email protected]联通IP:/tmp/ >> $LOGFILE  2>&1
if [[ $? == 0 ]]
	then
		echo "scp is down"
		ssh -t -p 17121 [email protected]联通IP "mysql -uroot -p联通数据库密码 cacti </tmp/cacti.sql"
		# -p 17121 为ssh端口 没有的话可以删掉
		ssh -t -p 17121 [email protected]联通IP "rm -f /tmp/cacti.sql"
		echo "shell is down!"
	else
		mail -s "联通CA数据库同步出错!" $MAIL 
fi
###############联通CA同步###############
###############电信CA同步###############
scp -P 17121 $BACKUP_DIR$CANAME [email protected]:/tmp/ >> $LOGFILE  2>&1
if [[ $? == 0 ]]
	then
		echo "scp is down"
		ssh -t -p 17121 [email protected]电信IP "mysql -uroot -p电信数据库密码 cacti </tmp/cacti.sql"
		ssh -t -p 17121 [email protected]电信IP "rm -f /tmp/cacti.sql"
		echo "shell is down!"
	else
		mail -s "电信CA数据库同步出错!" $MAIL 
fi
###############电信CA同步###############
##############双线CA-备同步#############
scp  $BACKUP_DIR$CANAME [email protected]双线IP :/tmp/ >> $LOGFILE  2>&1
if [[ $? == 0 ]]
	then
		echo "scp is down"
		ssh -t  [email protected]双线IP  "mysql -uroot -p双线数据库密码 cacti </tmp/cacti.sql"
		ssh -t  [email protected]双线IP  "rm -f /tmp/cacti.sql"
		echo "shell is down!"
	else
		mail -s "双线CA-备数据库同步出错!" $MAIL
fi
###############双线CA-备同步############
rm -f $BACKUP_DIR$CANAME
#删除3天以上的备份文件  
#Cleaning  
find $BACKUP_DIR  -type f -mtime +30 -name "*.tar.gz" -exec rm -f {} \;

三、备份和远程恢复需要对所有节点服务器做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
时间: 2024-07-29 19:54:53

Cacti节点数据库自动同步脚本的相关文章

Cacti图形数据自动导出脚本(二)

因业务需求 上篇文章链接 Cacti图形数据自动导出脚本(一) 在上一篇文章中写的脚本只能在每月1日下载所有的月数据的图 但是有个别图形需要每月指定日期下载 特在此将脚本进行了小修改 添加了每月下载月数据时日期的判断 要求如下: 1.本脚本会每日.每月自动下载图形树中所有的图形中的日数据和月数据 2.添加到图形树中的图形名称前面必须添加*号.也可不加,但是得更改脚本中的sql语句 3.图形名称中不能含有空格等linux中非法的文件名字符 4.需要做每月指定日期导出月数据的,需要在指定的图形名称后

SVN与TFS自动同步脚本(很实用)

一直都在园子里看文章,因为各种原因懒得写文章.最近稍得空闲,把这几天的工作成果分享一下. 因为工作需要,开发人员使用Qt进行系统移动端的开发,Qt的版本控制却不提供连接TFS的设置,只有使用svn.没有办法,只有安装svn,现学现了解,最后发现可以通过svn的hooks实现提交后,svn服务端自动同步到tfs服务端.post-commit脚本如下: ET WORKDIR=D:\xxxx SET SVNDIR= C:\Program Files\VisualSVN Server\bin SET S

windows下oracle数据库自动备份脚本

1.根据日期自动生成 Oracle 备份文件 @echo off echo 正在备份Oracle数据库,请稍等...... exp userid='用户名/密码@SID' file=D:\bak\res_%date:~0,4%%date:~5,2%%date:~8,2%.dmp log=D:\bak\res_%date:~0,4%%date:~5,2%%date:~8,2%.log owner=res echo 任务完成! 2.根据日期时间分秒自动生成 Oracle 备份文件 @echo off

mysql数据库自动备份脚本分享

前几篇博客已经相继公开了去转盘网的所有技术细节,如下: 百度网盘爬虫 中文分词算法 邀请好友注册 js分页部分代码 这篇博客我将继续公开数据库自动备份的代码.可以这么说,没有数据库,一切就是个蛋,没有数据库备份,一切还是个蛋,你可以想象数据库备份多么重要.不会linux,不会写shell的朋友麻烦先去补补.不过你说我牛逼,不补也能看懂,那没问题,哈哈,废话不说了.老规矩,上代码: #!/bin/bash time=$(date +"%d-%m-%Y") pre=/home/ubuntu

MySQL5.7主从环境自动同步脚本

主库IP:192.168.8.129 hostname:master从库IP:192.168.8.130 hostname:slave1.说明:此脚本针对上一篇文章<CentOS7.X安装部署mysql5.7主从环境>搭建完成后的主从随时同步使用https://blog.51cto.com/8355320/24480562.MySQL主从同步会出现如网络延迟等多种原因,造成主从环境不同步,当需要重新同步主从环境时,需要等到业务不繁忙的晚上或周末来进行,而使用脚本备份,有了全库备份,有了binl

oracle数据库自动备份脚本

::通过exp命令导出远程机器(192.168.2.1)上指定服务(orcl)指定用户(pmis)及密码(pmis)的数据 ::运行该脚本的机器必须安装oracle @echo off @echo [备份pmis系统的数据] set hh=%time:~0,2% set hh=%hh: =0% set sid=127.0.0.1/orcl set backdir=D:\oracle_bak set backfile=%backdir%\%date:~0,4%%date:~5,2%%date:~8

sqlserver2008R2数据库自动备份脚本

1 CREATE proc [dbo].[usp_autoBackupDB] 2 @dbname sysname=null --要备份的数据库名,不指定即为全部备份 3 ,@path nvarchar(128)='d:\' --备份目录路径 4 ,@backup_type varchar(16)='database' --备份类型,可以为database,log 5 ,@backup_sysdb int=0 --是否备份系统数据库,0为不备份,1为备份 6 as 7 set nocount on

sqlserver2008数据库自动备份脚本

CREATE proc [dbo].[usp_autoBackupDB] @dbname sysname=null --要备份的数据库名,不指定即为全部备份 ,@path nvarchar(128)='d:\' --备份目录路径 ,@backup_type varchar(16)='database' --备份类型,可以为database,log ,@backup_sysdb int=0 --是否备份系统数据库,0为不备份,1为备份 as set nocount on; declare @dbc

简单sql server数据库自动还原脚本

创建脚本文件创建bat文件,在windows中添加定时任务,每天定时执行脚本就行huanyuan.sql:脚本文件db.log :日志文件 原文地址:http://blog.51cto.com/wumingfeixue/2096530