1、安装expect
yum -y install expect
2、创建备份脚本 vi /data/backup.sh
#!/bin/bash
#adonis 聆听雨
#备份文件名时间
bkdate=$(date +%Y%m%d%H%M%S)
#备份的文件名;例如: databak20210918101654
bakFileName=databak$bkdate
#要备份的数据库root密码
mysql_password='lsgz3edc#EDC'
#要备份的数据库实例端口
mysql_port=3306
#本机备份存放目录
backupdir=/data/backup
#删除本机15天以前的备份
day=15
#备份至目标主机IP地址
dst_host=59.213.129.163
#备份至目标主机ssh密码
dst_sshPassword='lsgz3edc#EDC'
#备份至目标主机ssh端口
dst_sshPort=52225
if [ ! -d $backupdir ]; then
mkdir -p $backupdir
fi
find $backupdir -type f -mtime +$day -exec rm -rf {} \; > /dev/null 2>&1
/data/mysql/bin/mysqldump --defaults-file=/etc/my.cnf -uroot -p$mysql_password -P$mysql_port --all-databases --lock-all-tables --routines --triggers --events --flush-logs --set-gtid-purged=OFF | gzip > ${backupdir}/$bakFileName.sql.gz
cd $backupdir
/usr/bin/expect <<-EOF
spawn scp -P $dst_sshPort -r ${backupdir}/$bakFileName.sql.gz root@$dst_host:/data/mysql_backup
set timeout 300
expect {
"(yes/no)?" {
send "yes\n"
expect "*assword:" { send "$dst_sshPassword\r"}
}
"*assword:" {
send "$dst_sshPassword\n"
}
}
expect eof
EOF
设置可执行权限
chmod +x /data/backup.sh
3、添加定时任务,每天晚上凌晨1点执行
0 1 * * * /data/backup.sh
下方为本地全量备份脚本,chmox +x /opt/databakfull.sh设置脚本执行权限,然后添加到定时任务里面即可。
[root@mysql-hist opt]# cat databakfull.sh
#!/bin/bash
rq1=$(date +%Y%m%d)
#判断备份目录是否存在,不存在则自动创建
if [ ! -d /data/backup ];then
mkdir -p /data/backup
fi
#mysql备份命令
mysqldump -uroot -pAdmin123@qwe --all-databases --lock-all-tables --routines --triggers --events --flush-logs --set-gtid-purged=OFF| gzip > /data/backup/db$rq1.sql.gz
#删除超过3天的备份文件
find /data/backup/data* -name "*.*" -mtime +3 -type f -exec rm {} \;
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)