经常备份数据库是一个好习惯,虽然数据库损坏或数据丢失的概率很低,但一旦发生这种事情,后悔是没用的。一般网站或应用的后台都有备份数据库的功能按钮,但需要去手工执行。我们需要一种安全的,每天自动备份的方法。
下面的这个shell脚本就是能让你通过设定crontab来每天备份MySQL数据库的方法。
#!/bin/bash #crontab -e : 0 5 * * * /bin/sh /home/databackup/script/mysqlbackup.sh > /tmp/somefile 2>&1 #database info user="root" #用有数据库备份权限的账户 password="passwd" #该账户的用户密码 host="localhost" #指定备份的主机地址 db_name="testdb" #指定要备份的库名 #file path backup_path="/databackup/mysql" #要备份的路径 date=$(date +"%Y%m%d") #创建备份文件时以当天日期命名文件 #TODO mysqldump --flush-logs --user=$user --password=$password --host=$host $db_name |gzip > $backup_path/$db_name-$date.sql.gz #用gzip压缩打包mysqldump导出的数据库备份文件,打包后缀为.sql.gz find $backup_path/* -mtime +30 -name "$db_name-*.sql.gz" -exec rm {} \; #找出并删除备份路径下的30天前的旧文件并将其删除在crontab定时任务中添加作业:
$ crontab -e
#每天5点执行数据库备份脚本 0 5 * * * /bin/sh /home/databackup/script/mysqlbackup.sh > /tmp/somefile 2>&1