近期看了些文章,也跟着做了些试验操作,有些心得和大家交流下
环境:服务器是windows server 2008r2 版本,装了mysql5.7,通过navicat连接本地数据库,待备份数据库名称设为 Sysabc
1、找到数据目录
2、数据库文件夹备份
3、数据库恢复
一、找到数据目录
mysql默认安装的话,一般数据库文件夹就保存在默认目录C:\ProgramData\MySQL\MySQL Server 5.7\Data\ ,ProgramData是隐藏目录,可以新建个名字比较独特的数据库,然后直接在电脑上搜索这个数据库名字来找到自己的数据库文件夹的目录。
二、数据库文件夹备份
1、备份内容
Data文件夹下 Sysabc文件夹 + 所有以ib开头的文件。 光光直接备份Sysabc是不够的,恢复后数据库识别不了,几个ib开头的文件估计就是目录或日志文件,识别配合。
2、备份方式
一开始是直接拷贝备份内容到设定的备份文件夹里,后来感觉太麻烦了,懒得每天远程服务器干这活,采用批处理+计划任务方式,让服务器定时自己执行去,这下轻松了。
下来讲讲方式
1)备份批处理
思路:把Data文件夹下 Sysabc文件夹 + 所有以ib开头的文件全部拷贝到指定的备份目录BB下,每次备份操作新建一个以日期时间为名称的文件夹,Sysabc和ib文件分开放置。
批处理文件:capa-sysabc.bat
set yymmddhhmm=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%%time:~0,2%%time:~3,2%
md c:\bb\%yymmddhhmm%
Xcopy "C:\ProgramData\MySQL\MySQL Server 5.7\Data\sysabc\*.*" c:\bb\%yymmddhhmm%\sysabc\ /s
Xcopy "C:\ProgramData\MySQL\MySQL Server 5.7\Data\ib*.*" c:\bb\%yymmddhhmm%\ib\ /s
exit
上述的批处理正常执行时间是到小时为2位数的时间,即10-24点,1-9点的得加点东西,大家可以查阅下相关的文章,如果有需求的可以另建个批处理文件 capaz-sysabc.bat
set yymmddhhmm=%date:~0,4%%date:~5,2%%date:~8,2%%time:~1,1%%time:~3,2%%time:~6,2%
md c:\bb\%yymmddhhmm%
Xcopy "C:\ProgramData\MySQL\MySQL Server 5.7\Data\sysabc\*.*" c:\bb\%yymmddhhmm%\sysabc\ /s
Xcopy "C:\ProgramData\MySQL\MySQL Server 5.7\Data\ib*.*" c:\bb\%yymmddhhmm%\ib\ /s
exit
注:exit一定要有
2)删除批处理
思路:删除5天前的所有备份文件
批处理文件:backdel.bat
@echo off
set DestFolder="c:\bb"
forfiles /p %DestFolder% /s /d -5 /c "cmd /c del/f/s/q @path"
for /f "delims=" %%a in ('dir /ad /b /s %DestFolder%^|sort /r') do (
rd "%%a">nul 2>nul &&echo 空目录"%%a"成功删除!
)
exit
3、计划任务执行批处理文件
我的windows server 200r2下 直接从“管理工具”下,打开“任务计划程序”,左侧计划任务库下找到点击mysql目录,点击右侧的“创建任务”,弹出界面,输入名称,比如我需要在早11点和晚23执行一次备份任务,名称就为sysabc-back11,sysabc-back23,一目了然。
a、常规设置
b、触发器
我设定是每周除了周日,每天上午11:55执行,晚上23:55也如此设定
C、操作 选择批处理文件
D、设置
说明下:
1、右边的历史记录是禁用的,建议最初的时候把它打开,可以看到问题点,我一开始设了2个计划任务,执行一次后停摆了,那时候禁用的历史任务,只能看到提示:运行结果(0x8004131f),后来打开历史记录后,发现启动失败,问题提到”因为相同任务的实例正在运行“,解决的方法就是上面的设置
2、删除也可以设置各计划任务来定时删除
三、数据库恢复
适用于本地或异地数据库的恢复,恢复成功。步骤很简单
1、停止mysql,可通过语句或”服务“进行停止 ,不多说
2、将备份的sysabc文件夹整个拷贝到待恢复的mysql数据库目录下,
将ib文件夹下的几个ib文件(非文件夹)拷贝替换待恢复目录下原来的ib文件
3、启动mysql
应该就能看到恢复的数据库了
说明:
有的文章说备份的时候要停了mysql再备份文件夹,我是没停mysql,直接实时拷贝文件夹做得备份,在恢复的时候没有出现问题,估计应该是和几个ib的内容有关,ib记录状态日志
一点心得,给还在摸索mysql备份的同学们提供一点思路