栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MariaDB/MySQL定时全量备份脚本及数据恢复

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MariaDB/MySQL定时全量备份脚本及数据恢复

一、创建存放备份文件的地址

[root@localhost home]# mkdir -p /home/mysql-back

二、创建日志文件用于记录

[root@localhost home]# touch /home/mysql-backlog.log

三、创建备份所需的脚本文件

[root@localhost home]# touch /home/save-all-data.sh

四、编写sh脚本

[root@localhost home]# 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}'

五、添加可执行权限

[root@localhost home]# chmod +x /home/save-all-data.sh 

六、手动进行备份进行测试

[root@localhost home]# ./save-all-data.sh

七、查看mysql-back目录下是否拥有该文件

[root@localhost home]# cd /home/mysql-back 

 

八、进行备份数据恢复

1.解压

[root@localhost mysql_back]#tar --force-local -zxvf LOGLEO.000015_20200708_09:17:27.tar.gz

2.执行sql脚本

[root@localhost mysql_back]# mysql -uroot -p你的mysql密码 要还原的数据库名

九、创建定时执行脚本的任务

[root@localhost mysql_back]# crontab -e

#每日22:30执行该脚本进行数据备份

30 22 * * 0 /home/save-all-data.sh > /dev/null 2>&1

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/995225.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号