用批处理自动备份MySQL数据库

使用批处理文件执行mysql备份,然后用windows自代的任务计划执行

1.使用批处理自动的XCOP命令

net stop mysql
xcopy D:\wwwroot\xuxu123\*.* D:\wwwroot\xuxu123\%date:~,10%\ /y
net start mysql

 

2.使用mysql的mysqldump指令生成sql脚本

@echo on

REM------------------------backup sq_xuxu123  which is InnoDB-----------------------------  
cd D:/Program Files/MySQL/MySQL Server 5.0/bin
set year=%date:~0,4% 
set month=%date:~5,2% 
set day=%date:~8,2% 
set filename=taoche_db_%date:~,10%
mysqldump.exe sq_xuxu123 -uroot -pxuxu_123 > D:/ssh/database_backup/%filename% 
 
@echo off

 

依次解释一下每句代码的意思:

  • 第四行:删除指定目录下的文件名包含有“bugdb_”字样的sql文件。因为这个代码是我先前写的,在公司的服务器上每天晚上跑一次。所以每次备份之前,先删除头天已备份成功的文件。
  • 第五行:进入MySQL的bin目录,因为在此目录下有个mysqldump.exe的文件,该文件时MySQL数据库自带的备份和恢复MySQL数据库的工具,这个脚本文件正是用到该工具。
  • 第六行:取当前系统日期的年份,以四位数字表示,如2010。
  • 第七行:取当前系统日期的月份,以两位数字表示,如03。
  • 第八行:取当前系统日期的日期,以两位数字表示,如12。
  • 第九行:定义备份文件名,最终的文件名以bugdb_20100312.sql形式存在,即文件名加日期的形式。
  • 第十行:执行备份。

再来解释一下mysqldump的语法格式。格式为:

  1. mysqldump.exe "要备份的数据库名" -u(接用户名) -p(接密码) > "备份文件存放的路径及文件名" 

其中“>”的作用是输出重定向,即把mysqldump.exe备份的数据输出到一个文件里并保存。

将以上脚本复制到一个文本文件里,并另存为*.bat,如backup.bat的批处理文件,接下来会要用到该文件,我把它存在D:/scripts/backup_bugdb.bat。

 

还原数据库的命令如下:

D:/html/wamp/mysql/bin/mysql.exe -uroot -p123456 --default-character-set=utf8 bugdb < F:/bugdb_20100312.sql 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章