MySQL全备与增备方案请参考
本篇主要将全量备份过程整理成shell脚本,并定时进行备份。
全备shell脚本
编写shell脚本innobackup_main.sh
如下
#!/bin/sh
# Author : happy
# Copyright (c) http://www.lemonban.com
# Script follows here:
host=localhost
username=root
password=123456
port=3306
fileCnf=/etc/my.cnf
#远程备份IP
remoteHost=192.168.1.101
remoteBackdir=/home/tp-backup
#参数 例 beginTime='2020-08-10'
beginTime=`date +"%Y-%m-%d"`
#全备路径 例 /bak/2020-08-10/main
baseUrl=$backdir/$beginTime/main
#日志路径 例 /bak/2020-08-10/log/main.log
logUrl=$backdir/$beginTime/log/main.log
#全备目录不存在则创建
if [ ! -d "$baseUrl" ];then
mkdir -p $baseUrl;
break;
fi
#日志目录不存在则创建
if [ ! -d "$backdir/$beginTime/log/" ];then
mkdir -p $backdir/$beginTime/log/
fi
#首先移除全备目录及全备压缩包
rm -fr $baseUrl;
rm -fr $baseUrl.tar.gz;
#全量备份
innobackupex --defaults-file=$fileCnf --user=$username --password=$password --host=$host --no-timestamp $baseUrl 1> $logUrl 2>&1;
#添加到压缩包
tar cvzf $baseUrl.tar.gz $baseUrl;
#远程备份
sleep 3;
ssh root@$remoteHost "mkdir -p $remoteBackdir/$beginTime";
scp $baseUrl.tar.gz @$remoteHost:$remoteBackdir/$beginTime;
授与执行权限
chmod +x innobackup_main.sh
每日凌晨执行全备脚本
执行如下命令编辑定时任务配置文件(centos 7下)
crontab -e
加入如下配置,表示每日凌晨1点
执行全备脚本
* 1 * * * /opt/innobackup/innobackup_main.sh
重载生效
systemctl reload crond.service
至此,系统将每天凌晨1点执行MySQL全备脚本并保存到本地和远程机器上,如本机备份目录下:
[root@iZwz98um4r4f2es3d23uz4Z ~]# cd /home/data/backup/
[root@iZwz98um4r4f2es3d23uz4Z backup]# ll
total 12
drwxr-xr-x 4 root root 4096 Aug 21 09:30 2020-08-21
drwxr-xr-x 4 root root 4096 Aug 22 01:59 2020-08-22
drwxr-xr-x 4 root root 4096 Aug 23 01:59 2020-08-23
[root@iZwz98um4r4f2es3d23uz4Z backup]# cd 2020-08-23/
[root@iZwz98um4r4f2es3d23uz4Z 2020-08-23]# ll
total 10424
drwxr-xr-x 2 root root 4096 Aug 23 01:00 log
drwxr-x--- 6 root root 4096 Aug 23 01:59 main
-rw-r--r-- 1 root root 10665901 Aug 23 01:59 main.tar.gz
[root@iZwz98um4r4f2es3d23uz4Z 2020-08-23]#
欢迎来到testingpai.com!
注册 关于