Linux使用shell脚本定时备份数据库并压缩

CentOS 7

创建备份文件夹路径
mkdir /usr/local/mysqlbackup
mkdir /usr/local/mysqlbackup/backup_data
编写sh脚本
#!/bin/bash
#数据库用户名
db_user=root
#数据库密码
db_password=password@123
#数据库名称
db_name=databasename
#备份存放路径
backup_dir=/usr/local/mysqlbackup/backup_data
#备份命名所使用的日期格式
date=$(date +%Y%m%d_%H%M%S)
#导出备份
/usr/bin/mysqldump -u$db_user -p$db_password $db_name>$backup_dir/$db_name_$date.sql
#对备份进行压缩:
/usr/bin/mysqldump -u$db_user -p$db_password $db_name | gzip >$backup_dir/$db_name_$date.sql.gz
#删除原始文件,只留压缩后文件
rm -f $backup_dir/$db_name_$date.sql
#清理7天前的备份
find $backup_dir/ -mtime +7 -name "*gz*" -exec rm -rf {} \;
  • 如是远程连接这种方式会报密码安全错误
  • 修改如下虽然还是会发出警告但是不影响导出
#!/bin/bash
#数据库用户名
db_user=用户名
#数据库密码
db_password=密码
#数据库名称
db_name=数据库名称
#数据库地址
db_host=连接地址
#数据库端口
db_port=端口
#备份存放路径
backup_dir=/usr/local/mysqlbackup/backup_data
#备份命名所使用的日期格式
date=$(date +%Y%m%d_%H%M%S)
#导出备份
/usr/bin/mysqldump  --defaults-extra-file=/etc/my.cnf  -u$db_user -p$db_password -h$db_host -P$db_port $db_name>$backup_dir/$db_name_$date.sql
#对备份进行压缩:
/usr/bin/mysqldump --defaults-extra-file=/etc/my.cnf -u$db_user -p$db_password  -h$db_host -P$db_port  $db_name | gzip >$backup_dir/$db_name_$date.sql.gz
#删除原始文件,只留压缩后文件
rm -f $backup_dir/$db_name_$date.sql
#清理7天前的备份
find $backup_dir/ -mtime +7 -name "*gz*" -exec rm -rf {} \;
其实就是在导出和压缩时候加入
--defaults-extra-file=/etc/my.cnf -h$db_host -P$db_port
测试运行
 cd /usr/local/mysqlbackup
 ./mysqlbackup.sh
报错权限问题
-bash: ./mysqlbackup.sh: 权限不够
运行命令
chmod +x ./mysqlbackup.sh
[root@izwz90h61n2yng0xztqyl4z mysqlbackup]# cd /usr/local/mysqlbackup/backup_data/
[root@izwz90h61n2yng0xztqyl4z backup_data]# ll
总用量 1544
-rw-r--r-- 1 root root 787070 510 16:14 20210510_161417.sql.gz
-rw-r--r-- 1 root root 787070 510 16:20 20210510_162001.sql.gz

成功
  • 使用定时备份
  • 修改crontab的定时任务配置文件
vim /etc/crontab
输入 i 进行编辑 最底部新增定时执行命令
20 16 * * * root /usr/local/mysqlbackup/mysqlbackup.sh(表示每天16:20执行当前命令)
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
  20 16 * * * root /usr/local/mysqlbackup/mysqlbackup.sh
~                                                                                                                                   
~   
点击esc输入 :wq 退出保存定时任务就生效了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值