mysql 手工修复_MySQL自动备份和手工恢复

这篇博客分享了一段Windows批处理脚本,用于自动备份MySQL数据库。脚本首先生成基于时间的文件名,处理小时数可能为一位的情况,然后切换到指定目录,执行mysqldump导出数据库为SQL文件,接着使用jar压缩,最后删除未压缩的SQL文件。作者建议将其设置为定时任务,每天定时备份。此外,提到了该脚本可适应于不同的备份需求和数据库,并给出了恢复数据库的基本命令。
摘要由CSDN通过智能技术生成

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 以下是windows下的批处理: 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

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

以下是windows下的批处理:

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

使用前,需要保证环境变量的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批处理所在盘的根目录,适合懒人:)

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密码 数据库名 这样就可以自动还原回来,如果数据库已经存在,会自动覆盖(也可能是增量,看导出的sql了)。

其实以上脚本其实也适合其它数据库,只是sqlserver、db2等都有自己的自动备份机制,倒不是必须用这个。

test.jsp?url=http%3A%2F%2Fwww.chinaitlab.com%2Fcms%2Fimages%2Flogo14.gif&refer=http%3A%2F%2FLinux.chinaitlab.com%2FMYSQL%2F930833.html

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值