一:背景介绍

二:建立单向无密码登录

三:脚本内容

四:将脚本放到Linux定时任务中




1.1在通过xtrabackup对MySQL数据库进行备份的时候,不仅需要本地备份,更需要远程备份,如果硬盘损坏的话,不至于数据全部损坏,而导致无法恢复数据。但是如果使用xtrabackup在对MySQL数据库备份的时候通过流的方式备份并压缩,这样就无法进行正常的增量备份,所以在xtrabackup在备份完毕之后,将备份文件打包压缩,再然后将此压缩包传输到其它服务器中,这样既不影响数据库服务器的正常备份,还能把备份数据传输到另一台服务器上,增加了数据的可靠性。




2.1在远程服务器上生成公钥和私钥 

[[email protected] ~]# ssh-****** -t rsa

将备份数据传输到远程服务器



2.2把公钥传到目标服务器(传输数据的目标服务器)

[[email protected] .ssh]# scp id_rsa.pub [email protected]:/root/.ssh/authorized_keys

将备份数据传输到远程服务器



2.3通过ssh的方式登录目标服务器,看是否还需要密码

ssh [email protected]


2.4如果不用密码无法登录到目标服务器有以下几种情况

2.4.1目录.ssh的权限 chmod 700 /path/.ssh

2.4.2authroized_kyes的权限  chmod [600|644] /path/authorized_keys

2.4.3如果修改了以上两个地方还不能达到想要的结果,那么原因很可能是SELINUX导致的

2.4.3.1临时关闭,重启后失效

    setenforce 0

2.4.3.2永久关闭

    vi /etc/selinux/config  

    SELINUX=disabled  



3.1脚本内容

#!/bin/bash 


#本地备份目录
backupDir=/backup

#远程目标位置
remoteDir=/root/remote/

#进入到本地备份目录
cd $backupDir

#文件名和后缀,文件名为当前时间
fileName=`date +%F-%H-%M-%S`.tar.gz

#将/backup目录下的所有内容压缩为fileName
tar zcvf $fileName ./*

#将压缩文件传输到远程服务器
scp $backupDir/$fileName [email protected]:$remoteDir

#删除本地压缩文件
rm -rf $backupDir/$fileName




4.1创建mysqlcron文件

#每天凌晨3:30执行

30 3 * * */root/scripts/compressed_file.sh

 

crontab mysqlcron 加入定时任务

crontab -l查看