目录

MySQL-数据库备份脚本

MySQL 数据库备份脚本

脚本:

#!/bin/bash
# mysql备份脚本
#备份目录
backup_dir='/data/backup/'
#备份库名列表,括号内多个数据库空格隔开
db_name_array="all"
#备份时间
current_time=$(date +%Y%m%d_%H%M%S)
#备份文件名(没用上)
filepath=$backup_dir$db_name'_'$current_time'.sql'
#备份多个数据库循环,利用管道命令连接gzip命令直接备份为gz压缩文件(这里是多个数据库循环备份)
for db_name in ${db_name_array[*]}
do
        #备份核心语句(单个数据库备份,可以直接这一个语句)
        mysqldump -u root -p yourpassword  --all-databases | gzip > $backup_dir$db_name'_'$current_time'.sql.gz'
done

# 删除 7 天前备份的文件(防止数据多了太占内存)

#看其最后访问时间是否在 7 天以前(-atime +7)
find $backup_dir -name "*.sql.gz" -atime +7 -exec rm -rf {} \;

(补充:细说一下最后一行的-atime)

Linux 里面文件状态的三个时间了,它们分别是 -atime, -ctime 和 -mtime

  • 最近访问时间 access time (-atime)

它代表着最近一次访问文件的时间,显示一个文件的内容或者运行一个 shell 脚本会更新文件的 atime。可用 ls -lu 命令查看。

  • 最近更改时间 modify time (-mtime)

它代表着最近一次文件内容被修改的时间。可用 ls -l 命令查看。

  • 最近状态改动时间 change time(-ctime)

它代表着最近一次文件状态改变的时间 ,是 status change time,是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改,即文件状态最后一次被改变的时间。可用 ls -lc 命令查看。

如需要定时备份可以使用 crontab

参数

crontab [-u username] [-l|-e|-r]

-u: 只有 root 才能进行这个任务,也即帮其他用户新建/删除 crontab 工作调度;

-e: 编辑 crontab 的工作内容;

-l: 查阅 crontab 的工作内容;

-r: 删除所有的 crontab 的工作内容,若仅要删除一项,请用-e 去编辑。

安装 crontab

  1. 检测系统是否安装 crond 服务
service crond status
  1. 安装
yum -y install vixie-cron
yum -y install crontabs

vixie-cron 软件包是 cron 的主程序;

crontabs 软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

  1. 启动服务
service crond start     //启动服务
service crond stop      //关闭服务
service crond restart   //重启服务
service crond reload    //重新载入配置
service crond status    //查看crontab服务状态
  1. 设置开机自动启动
chkconfig --level 345 crond on

定时任务设置

  1. 直接输入命令crontab -e 或者编辑文件/etc/crontab 就可以直接设置定时任务。
crontab -e
或者
vi /etc/crontab
  1. 输入 crontab -e

  2. 按下 a 键进入到编辑模式

*3. 输入 0 /1 * * * /xxx/xxx/mysql_backup.sh

  1. 同时按下 ctrl+c 退出编辑模式

  2. 按下 shift+: 输入 wq 退出 crontab

vi编辑文件步骤一样

  1. 定时任务格式如下:
  • *  *  *  *  command

分 时 日 月 周  命令

第1列表示分钟1~59 每分钟用*或者 */1表示

第2列表示小时1~23(0表示0点)

第3列表示日期1~31

第4列表示月份1~12

第5列标识号星期0~6(0表示星期天)

第6列要运行的命令

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”。

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”。

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

https://i-blog.csdnimg.cn/blog_migrate/22dbcdc5015620b4b5d8e175fde311fd.jpeg