关于简单的mysql备份
来源:互联网 发布:淘宝女款冬季休闲裤 编辑:程序博客网 时间:2024/06/01 07:35
最近几天在研究数据库备份的问题,刚开始直接用mysql视图工具Navicat for MySQL备份,发现很简单的点几下OK了。
但是想想不能随便给客户安装mysql视图工具,开始查找其它方法。
百度后发现很多是在使用批处理文件脚本,在计划任务里设定脚本执行时间,达到了对数据可的备份。
但是这些脚本执行的稳定性及数据是否会丢失,数据量大时是否影响执行效率这些问题没有深入研究。
当然本人菜鸟而已,基本没怎么接触脚本语言,甚至刚开始时如何创建mysql的脚本都不知从何下手。
最开始使用的方法:
1.关闭mysql服务
2.复制该数据库文件夹到以当日时间为名称的指定文件夹下
3.压缩该文件
4.删除压缩前文件
5.启动mysql服务
代码如下:
net stop mysqlxcopy "C:\Program Files\MySQL\MySQL Server 5.1\Data\msinvoicing" "D:\db_backup\%date:~0,10%\/msinvoicing\"c:\progra~1\winrar\winrar a -k -r -s D:\db_backup\%date:~0,10%\msinvoicing.rar D:\db_backup\%date:~0,10%\rd D:\db_backup\%date:~0,10%\msinvoicing /S /Q net start mysql
接下来我需要对7天前的备份进行删除,然后要取已得7天前日期命名的文件夹进行删除.
在网上查到了一个取N天前日期的一个脚本(牛人写的),同时又查到了mysql的mysqldump方法.
最后采用了我认为不是很好的办法,使用mysql的mysqldump的方法(不能关闭mysql服务,这样在备份时数据库数据有修改是否就备份不上了...计划时间弄到凌晨?但是人家凌晨修改呢...).
由于找到的删除脚本不能删除文件夹下的文件夹,最终决定直接将mysqldump备份出的.sql文件命名为当天日期,这样就能直接删除.
代码如下:
1.创建txt文件,直接将后缀名改为.bat文件保存。
2.右键编辑.bat文件,写入:
@echo offrem 计算指定天数之前的日期set DaysAgo=7rem 假设系统日期的格式为yyyy-mm-ddcall :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDaysset /a PassDays-=%DaysAgo%call :DaysToDate %PassDays% DstYear DstMonth DstDayset DstDate=%DstYear%-%DstMonth%-%DstDay%echo %DaysAgo%天的日期是%DstDate%rem 进入到mysql安装目录下得bin文件夹cd C:\Program Files\MySQL\MySQL Server 5.1\binrem 使用mysqldump 本机 账号 密码 数据库名 盘符:/备份到哪个文件夹/命名为mysqldump -h localhost -uroot -p123 -R msinvoicing >D:\db_backup\%date:~0,10%.sqlrem 压缩文件c:\progra~1\winrar\winrar a -k -r -s -ep1 D:\db_backup\%date:~0,10%.rar D:\db_backup\%date:~0,10%.sqlrem 生成压缩文件后删除源文件del D:\db_backup\%date:~0,10%.sql /S /Q rem 删除前一天的备份del D:\db_backup\%DstDate%.rar /S /Q rem 按任意键使用 pausegoto :eof:DateToDays %yy% %mm% %dd% dayssetlocal ENABLEEXTENSIONSset yy=%1&set mm=%2&set dd=%3if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)set /a dd=100%dd%%%100,mm=100%mm%%%100set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633endlocal&set %4=%j%&goto :EOF:DaysToDate %days% yy mm ddsetlocal ENABLEEXTENSIONSset /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=aset /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)endlocal&set %2=%yy%&set %3=%mm%&set %4=%dd%&goto :EOF
以上代码为我最终修改后的备份代码,后来发现删除前7天的备份还是会有问题,因为服务器如果停用一天或者计划任务某天因为种种原因没有执行,那么这一天的备份就无法删除.
后来又在网上查到了一个方法,主要是来删除修改日期为7天前的文件.
创建txt文件,修改后缀名为vbs.
代码如下:
set fso=CreateObject("Scripting.FileSystemObject")set ws=CreateObject("wscript.shell")set fd=fso.getfolder("D:\db_backup")for each f in fd.filesif datediff("d",f.Datecreated,date)>7 thenf.delete(true)end ifnext
总结:这是自己东拼西凑的备份方法,肯定还有更好的备份方式,但愿能让我见识下
- 关于简单的mysql备份
- 关于mysql的简单的备份跟恢复
- mysql数据库的简单备份
- MySQL简单的备份还原
- 一个简单MYSQL的数据备份类
- AutoMySQLBackup简单的MySQL备份方法
- 简单的mysql备份和还原
- mysql 最简单的备份与恢复
- mysql最简单的备份与还原
- MySQL简单的备份恢复(mysqldump)
- MySQL大表备份的简单方法
- 一个简单的mysql备份脚本用于线上备份
- 关于mysql数据库备份的心得
- 关于mysql数据库的备份和恢复
- mysql 简单备份
- 简单实用的两种MySQL数据库备份的方法
- 批处理 简单实现mysql 的 window的自动备份脚本
- 最简单的方法:mysql的备份与还原
- 在linux安装apche并添加h264模块
- 友好函数
- 服务器端信号编程
- 编译libgdx
- Android结合界面对Sqlite数据库做增,删,改,查.操作
- 关于简单的mysql备份
- Linux网卡驱动程序详解
- excel中的换行
- C++之创建对象时的new与不new
- spring security3的学习笔记
- 关注C++细节——标准IO库
- 稳扎稳打Silverlight(42) - 4.0控件之Viewbox, RichTextBox
- RHEL/CentOS/Ubuntu 进入单用户模式
- Jboss 安全和优化