MySQL自动备份和手工恢复(可实现定时备份、保留最近7天、异地备份)
来源:互联网 发布:h5支付域名 编辑:程序博客网 时间:2024/04/30 14:07
以下是windows下的批处理:
使用前,需要保证环境变量的path中加入jar和mysqldump等路径,批处理解释如下:
1、前三句只是为了生成文件名,这里第2行:if "%hour_str:~0,1%"==" " set "hour_str=0%hour_str:~1%"是为了解决上午时,小时变成一位,导致文件名中包含一个空格,从而创建文件失败的问题,即假设9点的时候,把“空格9”变成“09”。
2、第4、5行是为了切换到保存的目录,也可以在第6、7行写死,当然,如果想自动获取路径也可以,用:
3、第6行是导出数据库为sql脚本,但这里不见得全库导出,也可以只导某个表,具体命令就不说了。
4、第7行是用jar压缩一下,由于导出的是文本,压缩率是很高的,这样很节省空间。(当然也可以用zip、rar等,只是我搞java开发,用习惯了jar。)
5、第8行是删除未压缩的文件,只保留压缩后的zip包。
以上批处理创建后,在定时任务中添加一个任务,定时执行就可以了,我一般给一些小系统都设置从早上8点开始,每隔4个小时备份一次,然后执行到晚上8点。另外,由于文件名都是基于时间的,那么很容易就可以实现保留最近7天、以及同时上传到异地ftp服务器的功能,这些大家可以自由发挥。
linux、mac下应该也都类似,大家自己写个sh脚本就行了,至于mysql的恢复,更加简单,把sql解压出来后,执行:
mysql -u root -p密码 数据库名 <xxx.sql
这样就可以自动还原回来,如果数据库已经存在,会自动覆盖(也可能是增量,看导出的sql了)。
其实以上脚本其实也适合其它数据库,只是sqlserver、db2等都有自己的自动备份机制,倒不是必须用这个。
1set hour_str=%time:~0,2%
2if "%hour_str:~0,1%"==" " set "hour_str=0%hour_str:~1%"
3set fileName=%date:~0,4%-%date:~5,2%-%date:~8,2%_%hour_str%%time:~3,2%%time:~6,2%
4D:
5cd D:\autobak\
6mysqldump 数据库名(改我) -u root -p密码(改我) >%fileName%.sql
7jar cf %fileName%.zip %fileName%.sql
8del %fileName%.sql
2if "%hour_str:~0,1%"==" " set "hour_str=0%hour_str:~1%"
3set fileName=%date:~0,4%-%date:~5,2%-%date:~8,2%_%hour_str%%time:~3,2%%time:~6,2%
4D:
5cd D:\autobak\
6mysqldump 数据库名(改我) -u root -p密码(改我) >%fileName%.sql
7jar cf %fileName%.zip %fileName%.sql
8del %fileName%.sql
使用前,需要保证环境变量的path中加入jar和mysqldump等路径,批处理解释如下:
1、前三句只是为了生成文件名,这里第2行:if "%hour_str:~0,1%"==" " set "hour_str=0%hour_str:~1%"是为了解决上午时,小时变成一位,导致文件名中包含一个空格,从而创建文件失败的问题,即假设9点的时候,把“空格9”变成“09”。
2、第4、5行是为了切换到保存的目录,也可以在第6、7行写死,当然,如果想自动获取路径也可以,用:
%~d0
cd %~dp0
替换4、5行,可以自动放到当前bat批处理所在盘的根目录,适合懒人:)cd %~dp0
3、第6行是导出数据库为sql脚本,但这里不见得全库导出,也可以只导某个表,具体命令就不说了。
4、第7行是用jar压缩一下,由于导出的是文本,压缩率是很高的,这样很节省空间。(当然也可以用zip、rar等,只是我搞java开发,用习惯了jar。)
5、第8行是删除未压缩的文件,只保留压缩后的zip包。
以上批处理创建后,在定时任务中添加一个任务,定时执行就可以了,我一般给一些小系统都设置从早上8点开始,每隔4个小时备份一次,然后执行到晚上8点。另外,由于文件名都是基于时间的,那么很容易就可以实现保留最近7天、以及同时上传到异地ftp服务器的功能,这些大家可以自由发挥。
linux、mac下应该也都类似,大家自己写个sh脚本就行了,至于mysql的恢复,更加简单,把sql解压出来后,执行:
mysql -u root -p密码 数据库名 <xxx.sql
这样就可以自动还原回来,如果数据库已经存在,会自动覆盖(也可能是增量,看导出的sql了)。
其实以上脚本其实也适合其它数据库,只是sqlserver、db2等都有自己的自动备份机制,倒不是必须用这个。
- MySQL自动备份和手工恢复(可实现定时备份、保留最近7天、异地备份)
- mysql数据库自动备份 保留最近5天备份
- mysql定时自动备份
- mysql自动定时备份
- mysql自动定时备份
- MySQL 实现每日全量备份,定时增量备份,自动恢复脚本
- 异地备份和还原方案(备份)
- linux实现mysql数据库每天自动备份定时备份
- Navicat如何实现异地自动备份mysql数据库
- SQL自动异地备份
- MYSQL数据库自动本地/异地双备份/MYSQL增量备份
- MYSQL数据库自动本地/异地双备份/MYSQL增量备份
- 可保留最近5次备份的数据备份脚本
- 可保留最近5次备份的数据备份脚本
- mysql之通过日志定时备份和恢复(上)
- mysql之通过日志定时备份和恢复(下)
- shell脚本实现自动保留最近n次备份记录
- Mysql 备份恢复备份和恢复类型
- 利用shell按创建时间批量重命名照片
- 315,关于《C程序设计伴侣》一书致人民邮电出版社的公开信
- 管理小故事9
- RHEL5中配置NIS服务
- 软件人员推荐书目(都是国外经典书籍!!!)
- MySQL自动备份和手工恢复(可实现定时备份、保留最近7天、异地备份)
- 管理小故事10
- 工具记载
- Linux 下判断Server 内存是否不足
- 管理小故事11
- 【189 小兔的烦恼】
- VC 链接没有 lib 文件的 dll
- 配置SQL Server Session方法
- poj 1321 棋盘问题解题报告