欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

使用mysqldump定时备份数据库的脚本_MySQL

程序员文章站 2023-12-30 20:06:04
...
mysqldump

  脚本描述

  每7天备份一次所有数据,每天备份binlog,也就是增量备份.

  (如果数据少,每天备份一次完整数据即可,可能没必要做增量备份)

  作者对shell脚本不太熟悉,所以很多地方写的很笨 :)

  开启 bin log

  在mysql 4.1版本中,默认只有错误日志,没有其他日志.可以通过修改配置打开bin log.方法很多,其中一个是在/etc/my.cnf中的mysqld部分加入:

  [mysqld]

  log-bin

  这个日志的主要作用是增量备份或者复制(可能还有其他用途).

  如果想增量备份,必须打开这个日志.

  对于数据库操作频繁的mysql,这个日志会变得很大,而且可能会有多个.

  在数据库中flush-logs,或者使用mysqladmin,mysqldump调用flush-logs后并且使用参数delete-master-logs,这些日志文件会消失,并产生新的日志文件(开始是空的).

  所以如果从来不备份,开启日志可能没有必要.

  完整备份的同时可以调用flush-logs,增量备份之前flush-logs,以便备份最新的数据.

  完整备份脚本

  如果数据库数据比较多,我们一般是几天或者一周备份一次数据,以免影响应用运行,如果数据量比较小,那么一天备份一次也无所谓了.

  下载假设我们的数据量比较大,备份脚本如下:(参考过网络上一个mysql备份脚本,致谢 :))

#!/bin/sh
# mysql data backup script
# by scud http://www.jscud.com
# 2005-10-30
#
# use mysqldump --help,get more detail.
#
BakDir=/backup/mysql
LogFile=/backup/mysql/mysqlbak.log
DATE=`date +%Y%m%d`
echo " " >> $LogFile
echo " " >> $LogFile
echo "-------------------------------------------" >> $LogFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile
echo "--------------------------" >> $LogFile
cd $BakDir
DumpFile=$DATE.sql
GZDumpFile=$DATE.sql.tgz
mysqldump --quick --all-databases --flush-logs
--delete-master-logs --lock-all-tables > $DumpFile
echo "Dump Done" >> $LogFile
tar czvf $GZDumpFile $DumpFile >> $LogFile 2>&1
echo "[$GZDumpFile]Backup Success!" >> $LogFile
rm -f $DumpFile
#delete previous daily backup files:采用增量备份的文件,如果完整备份后,则删除增量备份的文件.
cd $BakDir/daily
rm -f *
cd $BakDir
echo "Backup Done!"
echo "please Check $BakDir Directory!"
echo "copy it to your local disk or ftp to somewhere !!!"
ls -al $BakDir

相关标签: 数据库

上一篇:

下一篇: