linux下mysql定时备份

编辑于 2017-05-03

1.在/usr/sbin下创建备份执行文件backup

vim /usr/sbin/backup

2.在文件中添加如下脚本

#备份地址
backupdir=/usr/backup/mysql
#备份文件后缀时间
time=_` date +%Y_%m_%d_%H_%M_%S `
#需要备份的数据库名称
db_name=blog
#mysql 用户名
#db_user=
#mysql 密码
#db_pass=
#mysqldump命令使用绝对路径
/usr/local/mysql/bin/mysqldump $db_name > $backupdir/$db_name$time.sql
#删除7天之前的备份文件
find $backupdir -name $db_name"*.sql" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
  • 说明:
  • mysql5.6以上版本不需要在脚本中加入用户名和密码,因为mysql5.6开始,mysqldump如果在命令行直接显式加入密码会报不安全错误

3.如果是mysql5.6以上版本请在配置文件my.cnf加入下面语句。注意,加到末尾!

[mysqldump]
user=root
password=root
  • 重启mysql
service mysqld stop
service mysqld start

4.设置定时任务

crontab -e
  • 打开后在文件后面另起一行加入如下语句
00 03 * * 4 /usr/sbin/backupMysql &
  • 第一位00代表分
  • 第二位03代表时
  • 第三位*代表日
  • 第四位*代表月
  • 第五位4代表周几,这里就是周四
  • 后面的就是命令字符串了

5.设置好保存后就可以测试了

6.与定时有关的特殊字符

  • 表示代表取值范围内的任何数字
  • 代表”每”比如:*/5,在第一位表示每5分钟
  • 代表从某个数字到某个数字,5-9代表5到9
  • 分开几个离散的数字,比如5,7,10就包含这几个数值