码迷,mamicode.com
首页 > 数据库 > 详细

Cacti 数据库同步方法

时间:2017-02-07 16:19:58      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:roo   word   sha   保存   ace   rgba   finger   overflow   密钥登录   

Cacti 数据库同步方法

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_keys
chmod 600 .ssh/authorized_keys

authorized_keys的权限要是600

1.4 A机登录B机
ssh 192.168.1.2
The 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)? yes
Warning: 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.sh
chmod +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.gz
OPTIONS="-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 "    ">> $LOGFILE
echo "--------------------" >> $LOGFILE

#切换至备份目录
cd $BACKUP_DIR
mysqldump $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" $MAIL
fi
echo "Backup Process Done"
# 备份文件为cacti.sql并远程备份到节点服务器



###############电信CA同步###############
scp -P 2141 $BACKUP_DIR$CANAME root@192.168.1.2:/tmp/ >> $LOGFILE  2>&1
if [[ $? == 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天以上的备份文件
#Cleaning
find $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/backup
service crond restart

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

Cacti 数据库同步方法

标签:roo   word   sha   保存   ace   rgba   finger   overflow   密钥登录   

原文地址:http://www.cnblogs.com/babyfenei/p/6374483.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!