【linux系统上mysql定时自动备份、删除数据】

1、数据备份
首先创建文件夹

mkdir -p /data/backup/mysql
cd /data/backup

创建配置文件(数据库信息)

vi my_mysql.cnf

其中 mysqldump 下的参数是给导出的命令使用的,mysql 下的参数是导入、删除数据的时候使用的

[mysqldump]
#设置允许导出的文件大小上限
max_allowed_packet	= 400M
host=127.0.0.1
user=root
password='root'
[mysql]
host=127.0.0.1
user=root
password='root'

创建数据备份文件

vi mysql_backup.sh

编写数据备份脚本

#!/bin/bash
db_name='dm_test'
table_name='user'
backup_dir='/data/backup/mysql/'
current_time=$(date +'%Y-%m-%d_%H%M%S')
filepath=$backup_dir$current_time'_user.sql.gz'

echo '开始导出数据库...'
mysqldump --defaults-extra-file=/data/backup/mysql_backup.cnf  $db_name $table_name | gzip > $filepath
echo '导出成功,文件名为: '$filepath
echo '开始删除数据.....'
mysql --defaults-extra-file=/data/backup/mysql_backup.cnf -e "use dm_test;delete from user  where  create_time < DATE_SUB( CURDATE(), INTERVAL 1 DAY );optimize table user;"
echo '删除成功'

设置脚本可执行权限

chmod +x ./mysql_backup.sh

执行脚本

sh ./mysql_backup.sh
# 查看一下结果
ll ./mysql

解压命令

gzip -dc ./mysql/xxxx.sql.gz > ./mysql/xxxx.sql

2、数据恢复

创建脚本

vi mysql_restore.sh

编写脚本

#!/bin/bash

if [ -z $1 ] || [ ! -f $1 ]
then
    echo "请输入sql压缩文件(*.sql.gz)"
    exit 1
fi

db_name='dm_test'
base_dir='/data/backup/mysql/'
gz_sql_file=`basename $1`

file_ext=${gz_sql_file##*.}
if [ $file_ext != 'gz' ]
then
    echo '文件格式不正确,请输入 .sql.gz 文件'
    exit 1
fi

sql_file=${gz_sql_file%.*}
echo '解压文件中...'
gzip -dc $base_dir$gz_sql_file > $base_dir$sql_file
echo '解压完成.'
echo '开始导入数据库...'

mysql --defaults-extra-file=/data/backup/my_mysql.cnf $db_name < $base_dir$sql_file

if [ -f $base_dir$sql_file ]
then
    echo '删除临时文件.'
    rm -f $base_dir$sql_file
fi
echo '导入完成.'

执行导入脚本

sh ./mysql_restore.sh ./mysql/xxxx.sql.gz

3、自动清理备份文件

创建脚本

vi remove_backup.sh

编辑脚本

# 删除30天前的备份
 find /data/backup/mysql -type f -mtime +30 | xargs rm -f

4、创建定时任务

crontab -e
*/1 * * * * /data/backup/mysql_backup.sh #为了测试使用 每分钟执行一次

查看任务

crontab -l 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值