首页 > 代码库 > Cacti 数据库同步方法

Cacti 数据库同步方法

Cacti 数据库同步方法

cacti
rrdtool
mysql

Cacti 不同主机间的数据库同步脚本

使用的软件有

Rsync scp mysql

1.免密钥登录

首先做主备服务器的免密钥登录,要求主服务器能免密钥登录其他节点服务器

1.1 在A机下生成公钥/私钥对。

ssh-keygen -t rsa -P ‘‘
-P表示密码,-P ‘’ 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车。
它在/home/chenlb下生成.ssh目录,.ssh下有id_rsa和id_rsa.pub。

1.2 把A机下的id_rsa.pub复制到B机下,在B机的.ssh/authorized_keys文件里,我用scp复制
scp .ssh/id_rsa.pub root@192.168.1.2:/root/id_rsa.pub root@192.168.1.2‘s password:id_rsa.pub                                    100%  223     0.2KB/s   00:00

由于还没有免密码登录的,所以要输入密码

1.3 B机把从A机复制的id_rsa.pub添加到.ssh/authorzied_keys文件里
ssh-keygen -t rsa -P ‘‘cat id_rsa.pub >> .ssh/authorized_keyschmod 600 .ssh/authorized_keys

authorized_keys的权限要是600

1.4 A机登录B机
ssh 192.168.1.2The authenticity of host ‘192.168.1.2 (192.168.1.2)‘ can‘t be established.RSA key fingerprint is 00:a6:a8:87:eb:c7:40:10:39:cc:a0:eb:50:d9:6a:5b.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added ‘192.168.1.2‘ (RSA) to the list of known hosts.Last login: Thu Feb 3 09:53:18 2017 from root

第一次登录是时要你输入yes,现在A机可以无密码登录B机了。
小结:登录的机子可有私钥,被登录的机子要有登录机子的公钥。这个公钥/私钥对一般在私钥宿主机产生。上面是用rsa算法的公钥/私钥对,当然也可以用dsa(对应的文件是id_dsa,id_dsa.pub)
想让A,B机无密码互登录,那B机以上面同样的方式配置即可

2.同步脚本

touch  /var/www/sqlbackup.shchmod +x  /var/www/sqlbackup.sh

将以下脚本创建到 /var/www/sqlbackup.sh 并赋予执行权限
修改其中的数据库用户名 密码 通知邮箱 节点服务器 登录口令 及数据库备份恢复密码

#!/bin/bash# cacti 数据库主备同步脚本# Make by Fenei# E-Mail : babyfenei@qq.com# Date : 07-Feb-2017#  URL:http://babyfenei.blog.51cto.com/443861/1852324#-----------------------------------------------------# 本脚本自动备份cacti数据,并通过SCP发送至远程服务器并远程执行数据库恢复操作# 要求主服务器可免密钥登录节点服务器# 本脚本会自动打包备份的数据库并保存1个月USER="cactiuser"PASSWORD="cactiuser"DATABASE="cacti"MAIL="babyfenei@qq.com"#告警通知邮箱BACKUP_DIR=/var/www/sqlbackup/CANAME=cacti.sql#备份文件存储路径LOGFILE=/var/log/data_backup.log#日志文件路径DATE=`date +%Y%m%d-%H%M`ARCHIVE=$DATE.sql.tar.gzOPTIONS="-u$USER -p$PASSWORD $DATABASE --ignore-table=cacti.settings"# --ignore-table=cacti.settings 是备份时跳过settings表,防止各个CA settings 设置一样,可根据需求更改#判断备份文件存储目录是否存在,否则创建该目录if [ ! -d $BACKUP_DIR ]then    mkdir -p "$BACKUP_DIR"fi#开始备份之前,将备份信息头写入日记文件echo "    ">> $LOGFILEecho "--------------------" >> $LOGFILE#切换至备份目录cd $BACKUP_DIRmysqldump $OPTIONS > $BACKUP_DIR$CANAME#判断数据库备份是否成功if [[ $? == 0 ]]then    tar czvf $ARCHIVE $CANAME >> $LOGFILE 2>&1    echo "[$ARCHIVE] Backup Successful!" >> $LOGFILE else    echo "Database Backup Fail!" >> $LOGFILE#备份失败后向管理者发送邮件提醒echo "Backup Alter Mail" |mail -s "database:$DATABASE Daily Backup Fail" $MAILfiecho "Backup Process Done"# 备份文件为cacti.sql并远程备份到节点服务器###############电信CA同步###############scp -P 2141 $BACKUP_DIR$CANAME root@192.168.1.2:/tmp/ >> $LOGFILE  2>&1if [[ $? == 0 ]]        then                echo "scp Process down"                ssh -t -p 2141 root@192.168.1.2 "mysql -u$USER -p$PASSWORD $DATABASE </tmp/cacti.sql"                ssh -t -p 2141 root@192.168.1.2 "rm -f /tmp/cacti.sql"                echo "shell Process down!"        else				echo "Backup Alter Mail" |mail -s "电信CA数据库同步出错" $MAIL    fi###############电信CA同步###############rm -f $BACKUP_DIR$CANAME#删除31天以上的备份文件#Cleaningfind $BACKUP_DIR  -type f -mtime +31 -name "*.tar.gz" -exec rm -f {} \;

3.创建crond任务计划

echo  "58 23 * * * root /var/www/sqlbackup.sh > /dev/null 2>&1" >> /etc/cron.d/backupservice crond restart

4. 次日检查数据库同步结果

Cacti 数据库同步方法