每一天备份一次MySQL的数据文件,由于网上很多自动备份工具都是调用MySQL dump来进行逻辑备份,效率很低对于非常大的数据库
自己使用copy物理数据文件的方式更快,在本地备份,这里用到Windows的XCOPY命令来进行拷贝文件
XCOPY命令可以自动帮你创建文件夹当发现你复制文件的时候的所在路径不存在的时候
参数:
/S:复制目录和子目录,不包括空目录
/I:如果目标不存在,而且要复制多个文件,则假定目标必须是目录
xcopy_DBBackup_exclude.bat 文件的内容
-
XCOPY D:\DataBase\ibdata1 E:\DBBackup\%date:~0,10%\ /S /I
-
-
XCOPY D:\DataBase\data E:\DBBackup\%date:~0,10%\ /S /I /exclude:exclude.txt
exclude.txt文件里面的内容
-
D:\Database\data\ib_logfile0
-
D:\Database\data\ib_logfile1
-
D:\Database\data\shizuishan1.err
-
D:\Database\data\shizuishan1.pid
-
D:\Database\data\barfoo_opinion_log
-
D:\Database\data\log-bin\
-
D:\Database\data\mysql-bin\
%date:~0,10%格式 讲解
例子:
-
XCOPY D:\quickstart E:\mlsite\"%date:~0,4%"\%date:~5,10%\
E:\mlsite
按数据库来进行备份
xcopy_DBBackup_exclude.bat 文件的内容
-
XCOPY D:\Data\ibdata1 E:\DBBackup\%date:~0,10%\ /S /I
-
-
XCOPY D:\Database\data\A库 E:\DBBackup\%date:~0,10%\A库\ /S /I
-
XCOPY D:\Database\data\B库 E:\DBBackup\%date:~0,10%\B库\ /S /I
-
XCOPY D:\Database\data\C库 E:\DBBackup\%date:~0,10%\C库\ /S /I
任务计划设置
网上流行的一个bat脚本
文件名:dabak.bat
参数
/Y:取消提示以确认要覆盖现有目标文件
-
net stop mysql
-
mkdir E:\db_backup\mlsite\"%date:~4,10%"
-
xcopy D:\"Program Files"\MySQL\"MySQL Server 5.0"\data\ibdata1 E:\db_backup\mlsite\"%date:~4,10%"\ /Y
-
xcopy D:\"Program Files"\MySQL\"MySQL Server 5.0"\data\mlsite\*.* E:\db_backup\mlsite\"%date:~4,10%"\ /Y
-
net start mysql
解释:
1) 关闭Mysql服务
2) 创建备份目录
3) 拷贝ibadata1到备份目录下,注意Program Files上打了引号,是因为若不打引号会出现参数错误,
原因是因为xcopy的参数是前面是源地址+空格+目标地址,如果不打引号,Program Files上有空格,会对这个命令产生影响
4) 拷贝mlsite其它文件到备份目录下(
mlsite\*.*)
5) 开启mysql服务
相比起SQL Server,不方便的地方有:
1、自己按照时间日期格式来存放备份文件
2、不能自动删除备份文件,只能调用cmd命令
-
rem 保留30天的备份文件
-
forfiles /P F:\DBBackup_02 /S /D -30 /C "cmd /c del @file /q"
3、针对不同的库的备份没有通用方法,要改
xcopy_DBBackup_exclude.bat 文件内容来实现,不过SQLServer也一样,一个job还是多个job
4、很难监控备份是否成功
5、任务计划有可能挂掉
6、MyISAM引擎不需要停止MySQL服务,但是Innodb需要停止MySQL服务
阅读(1876) | 评论(0) | 转发(0) |