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

2. 安装

yum -y install vixie-cron
yum -y install crontabs

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

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

3. 启动服务

service crond start     //启动服务
service crond stop      //关闭服务
service crond restart   //重启服务
service crond reload    //重新载入配置
service crond status    //查看crontab服务状态

4. 设置开机自动启动

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

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

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

vi编辑文件步骤一样

2. 定时任务格式如下:

* *  *  *  *  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字段,表示每十分钟执行一次。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值