【MySQL】 数据库定期备份

目录

一、数据库备份方案

二、相关脚本

2.1 数据库备份脚本

2.2 Cron 循环脚本及使用

2.2.1 循环脚本

2.2.2 启动和相关命令

三、增量备份及其他


一、数据库备份方案

数据库定期备份通常是使用备份脚本 + Cron 定期自动循环实现的,一般为每天一次的全量备份

 

二、相关脚本

2.1 数据库备份脚本

#!/bin/bash
# 全备方式,一般在从机上执行,适用于小中型mysql数据库:
source /etc/profile # 加载系统环境变量
source ~/.bash_profile # 加载用户环境变量
# 定义全局变量
#登录数据库用户名
user="root"
#访问数据库密码
password="root"
#访问地址
host="localhost"
#访问数据库端口
port="3306"
#备份数据库名称,多个数据库用空格进行间隔
db=("test" "tom")
local="--single-transaction"
#数据库位置
mysql_path="/opt/mysql"
#备份地址
backup_path="/opt/mysqldump"
date=$(date +%Y%m%d_%H:%M:%S)
day=30
#日志路径
backup_log="/opt/mysqldump/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}'

 

2.2 Cron 循环脚本及使用

2.2.1 循环脚本

语句的意思为每天凌晨一点开始触发,自动运行脚本

0 1 * * * /opt/mysql/mysql_dump.sh > /dev/null 2>&1

其他相关操作:

https://blog.csdn.net/djrm11/article/details/96634703

 

2.2.2 启动和相关命令

# 新建脚本文件,复制脚本进入

# 编辑crontab服务文件
crontab  -e 

# 复制脚本内容到文件中,每周日凌晨一点自动执行
0 1 * * * /opt/mysql/mysql_dump.sh > /dev/null 2>&1

# 加入定时任务

crontab mysql_cron_back.cron

# 查看当前运行的定时任务

crontab -l

  

# 删除运行的定时任务

crontab -r

 

三、增量备份及其他

转载自大佬博客:https://blog.csdn.net/qq_40732354/article/details/107186874

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值