产品上线,数据库备份就是不得不考虑的问题。下面说说我的数据库备份策略。
我的服务器为Win2003,项目的数据库引擎采用的是MyIsam,数量大并不大,运营到现在1个月,数据库大小6M。为了防止出现意外,数据库每天都需要备份,当然,如果每天手工备份,那就要把人烦死。所以我就写了下面的批处理文件,通过Win2003系统的计划任务,在凌晨2点开始执行批处理,备份数据库。批处理中我采用了两种方法,一种是通过mysqldump命令备份,并通过gzip压缩数据。另一种是备份物理文件,通过调用rar命令压缩数据。至今,这个数据库备份批处理文件运行近1个月,目前看来效果符合预期。下面先看一下备份mySQL数据库的批处理代码:
备份数据库
@ECHO OFF
set path=%SystemRoot%\system32;D:\PHP\MySql\MySQL Server 5.1\bin;C:\Program Files\WinRAR
set mktime=%date:~0,10%
::设置数据库名称(两个数据库,则下面的for中的tokens值为1,2。如果有三个数据库,则tokens值为:1,2,3。数据库依次为%%a,%%b,%%c....按英文字母顺序排列)
::这里备份三个数据库:DB_A、DB_B、DB_C,数据库间用半角逗号分隔
SET dbname=DB_A,DB_B,DB_C
::数据库管理员权限及密码
SET dbuser=root
SET dbpasswd=123456
::mySQL所在目录
SET mysqldir=D:\PHP\MySql\MySQL Server 5.1
::备份gz文件所在目录
SET gz_backupdir=D:\mySQL_data_bak\sql_gz_bak
if not exist %gz_backupdir% md %gz_backupdir%
::备份file文件所在目录
SET file_backupdir=D:\mySQL_data_bak\file_bak
if not exist %file_backupdir% md %file_backupdir%
::::停止WWW网页WEB服务::::或者停止Apache2 命令:net stop Apache2
net stop w3svc
::::延时15秒
ping -n 15 127.0.1>nul
::::开始备份mySQL数据库::::
@ECHO Beginning backup of %dbname%...
for /f "tokens=1,2,3 delims=,