【Liunx】MariaDB/MySQL定时全量备份脚本及数据恢复
一、创建存放备份文件的地址
mkdir -p /home/mysql-back
二、创建日志文件用于记录
touch /home/mysql-backlog.log
三、创建备份所需的脚本文件
touch /home/save-all-data.sh
四、编写sh脚本
vim /home/save-all-data.sh #全量备份 source /etc/profile # 加载系统环境变量 source ~/.bash_profile # 加载用户环境变量 # 定义全局变量 #登录数据库用户名 user="root" #访问数据库密码 password="root" #访问地址 host="localhost" #访问数据库端口 port="3306" #备份数据库名称,多个数据库用空格进行间隔 db=("newLEO" "test") local="--single-transaction" #数据库位置 mysql_path="/www/server/mysql" #备份地址 backup_path="/home/mysql-back" date=$(date +%Y%m%d_%H:%M:%S) day=30 #日志路径 backup_log="/home/mysql-backlog.log" # 判断是否存在目录,不存在则创建目录 if [ ! -e $backup_path ];then mkdir -p $backup_path fi # 删除30天以前备份 find $backup_path -type f -mtime +$day -exec rm -rf {} ; > /dev/null 2>&1 echo "开始备份数据库: ${db[*]}" # 备份数据库后压缩 backup_sql(){ dbname=$1 #保存的文件名称 backup_name="${dbname}_${date}.sql" mysqldump -h $host -P $port -u $user -p$password $lock --default-character-set=utf8 --flush-logs -R $dbname > $backup_path/$backup_name if [[ $? == 0 ]];then cd $backup_path # tar --force-local参数压缩带有冒号的压缩包 tar czvf $backup_name.tar.gz $backup_name --force-local size=$(du $backup_name.tar.gz -sh | awk {print $1}) rm -rf $backup_name echo "$date 备份 $dbname($size) 成功" else cd $backup_path rm -rf $backup_name echo "$date 备份 $dbname 失败" fi } # 多个库循环备份 length=${#db[@]} for ((i=0;i<$length;i++));do backup_sql ${db[i]} >> $backup_log 2>&1 done echo "备份结束,结果查看 $backup_log" du $backup_path/*$date* -sh | awk {print "文件:" $2 ",大小:" $1}
五、添加可执行权限
chmod +x /home/save-all-data.sh
六、手动进行备份进行测试
./save-all-data.sh
七、查看mysql-back目录下是否拥有该文件
cd /home/mysql-back
八、进行备份数据恢复
1.解压
tar --force-local -zxvf LOGLEO.000015_20200708_09:17:27.tar.gz
2.执行sql脚本
mysql -uroot -p你的mysql密码 要还原的数据库名 </home/mysql-back/LOGLEO.000015_20200708_09:17:27.sql
九、创建定时执行脚本的任务
crontab -e
#每日22:30执行该脚本进行数据备份
30 22 * * 0 /home/save-all-data.sh > /dev/null 2>&1
上一篇:
JS实现多线程数据分片下载