Ubuntu下MySQL备份与异地备份

2014-11-24 17:36:20 · 作者: · 浏览: 0

echo "backupmysql V1.0"


###date stamp###
datestamp=$(date +%Y-%m-%d)


###path ###
startdir=/home/user/mysqlbackup


###bakfile prefix###
fileprefix=sql


echo "sqldump is starting.."


###bakup command####
mysqldump -uuser -ppassword -l databasename > $startdir/$fileprefix$datestamp.sql


echo "########################################################################"


echo "sqldump is done"


###tar file ###
cd $startdir


echo "the current directory is :"
pwd


tar zcvf $startdir/$fileprefix$datestamp.tgz $fileprefix$datestamp.sql


###del the sql file###
rm -rf $startdir/$fileprefix$datestamp.sql


echo "#######################################################################"


sftp root@www.domain.com << EOF


cd /home/user/mysqlbackup


lcd /home/mysqlbackup/


-get fileprefix$(date +%Y-%m-%d).tgz


quit


EOF注fileprefix$(date +%Y-%m-%d).tgz 与服务器端备份的相对应,


路径为、home/user/mysqlbackup


get命令前加一个"-"以防止其执行错误时sftp执行过程被终止.


注:假设数据库服务器名字为database,备份数据的服务器的名字backup,我们需要在backup服务器端运行脚本来取得database服务器端的备份文件。


两台服务器采用sftp传输文件


但是现实shell中sftp登录需要交互式的密码,


为了在远端服务器采用非交互的sftp,我们可以选择用密钥的方法进行验证登录权限。从而代替密码验证方式。


首先需要我们在backup生成密钥,并将其公钥上传到database服务器。


因为shell脚本中使用sftp时必须用到密钥对(公钥和私钥),


可以使用如下命令


$ssh-keygen -d


然后分发公钥


为了使用密钥,必须将公钥分发到欲登录的远程backup服务器上,


1.copy公钥到欲登录的远程服务器的远程用户的家目录下,例如:


cp id_dsa.pub到database:/home/user/.ssh/


若目录/home/user/.ssh/不存在,需要我们手工建立。


公钥文件更名为authorized_keys


修改公钥文件的访问权限


chmod 644 authorized_keys