Linux系统下mysql数据库备份脚本

在中小型企业中我们经常性的需要定时要备份我们的数据库文件和系统中的一些重要文件,保证在操作系统应硬盘等问题造成不可恢复性灾难时,系统能够尽量的还原用户数据。

在当今互联网环境中系统总是主主备份、主从备份等等方式保证系统的稳定性。在这里我们就说说最原始的数据备份方式吧!

通过linux的shell脚本我们生成数据库的备份文件,让后将备份文件通过SCP远程复制命令将本地备份文件复制到远程主机中,保证数据的异地备份。

在文件复制到远程主机时需要远程的登录用户名和密码,当然也可以通过设置两台主机之间的免密登录,这样最大的保证了系统密码的安全性,在这里我就直接使用密码明文的方式来实现备份功能。

大概思路为:

1、生成备份文件、删除历史文件

2、将备份文件复制到远程主机

3、删除远程主机历史文件

#!/bin/bash

########################################################
#备份保存路径
backup_dir=/root/mysqlbackup
#mysql用户名
username=root
#mysql密码
password=TankB214
#mysql将要备份的数据库
database_name=edoctor
########################################################

#保存备份个数,备份31天数据
number=31
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`

#如果文件夹不存在则创建
if [ ! -d $backup_dir ]; 
then     
    mkdir -p $backup_dir; 
fi

mysqldump -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql

#写创建备份日志
echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt

#找出需要删除的备份
find $backup_dir -mtime +$number -type f -name "*.sql" |xargs rm -rf

sleep 5s
#############################################################
#远程服务器地址
rmtip=172.16.11.202
rmtport=22
rmtuser=root
rmtpwd=XXXXXXXXXXXX
rmtpath=/home/20181025/
#############################################################
#复制文件到远程服务器
/usr/bin/expect <<EOF
#设置超时时间
#默认是10秒,如果网络不好等可以设置为-1
set timeout 10
#复制文件
spawn scp -P $rmtport $backup_dir/$database_name-$dd.sql $rmtuser@$rmtip:$rmtpath
expect "*assword:"
send "$rmtpwd\r"
send "exit\r"
expect eof
EOF

if [ $? = 0 ]; then
    echo "scp $backup_dir/$database_name-$dd.sql success" >> $backup_dir/log.txt
else
    echo "scp $backup_dir/$database_name-$dd.sql failed" >> $backup_dir/log.txt
fi

#远程服务器保存的天数
baknum=10
/usr/bin/expect <<EOF
#默认是10秒,如果网络不好等可以设置为-1
set timeout 10
spawn ssh -p$rmtport $rmtuser@$rmtip
expect "*assword:"
send "$rmtpwd\r"

expect "Last login*"
send "find $rmtpath -mtime +$baknum -type f -name '*.sql' |xargs rm -rf \r"

expect "#"
send "exit\r"

expect eof
EOF

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值