可用的脚本(一直正在用的····) 写道
@echo 取日期、时间变量值
set yy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
if /i %time:~0,2% lss 10 set hh=0%time:~1,1%
if /i %time:~0,2% geq 10 set hh=%time:~0,2%
set mn=%time:~3,2%
set ss=%time:~6,2%
set date=%yy%%mm%%dd%
set time=%hh%%mn%%ss%
set filename=%date%_%time%
mysqldump -uroot -proot --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob -x baba>D:\baba%filename%.sql
@echo 导出已经完成
@pause
由于系统使用到了MySQL
数
据库,所以每天的工作,就设计到了MySQL数据库的备份问题.但如果每天手工来做MySQL数据库的定时备份,工作量不说,时间还不准确,有时候还会忘
记做备份,哪一天忙起来忘记了,数据库出了问题,就不好搞了.所以,将MySQL数据库的备份,做成系统定时执行的,就很有必要.
一般情况下,我们手工备份MySQL数据库,会使用下面的命令:
复制内容到剪贴板
代码:
mysqldump --opt --add-locks -u root --password=xxxx db_name> x:/db_backup/db_name.sql
这是我们在命令行模式下备份数据库的常用命令.但现在要让系统自动执行,就不能这样了.
1.在windows下定时备份MySQL数据库.
使用editplus建立 db_bak.bat文件,也就是windows下常用的批处理文件.
内容为:
复制内容到剪贴板
代码:
@echo
mysqldump --opt --add-locks -u root --password=xxxx db_name> x:/db_backup/db_name.sql
然后保存,接下来在window 的定时任务中,定义windows的定时任务,每天备份多少次都可以.
2.在linux下定时备份MySQL数据库.
命令跟上面的类似,不过这里要使用linux下的定时任务了.
说到这里,可能大伙都感觉数据库的备份工作已经完成了,其实不然,我们备份数据库,不单要应对数据库坏掉或被误删除的问题,同时,还需要应对服务器损坏,硬盘损坏或是服务器遭遇未可预知的灾难的问题.
所
以,我们就不能把数据库仅仅备份到本机,我们同时,需要将备份好的数据库,同步传输到其它至少一台服务器上,这样,才可以保证我们数据的绝对安全,在进行
数据传输之前,为了减少数据的传输量,提高传输速度,需要对数据库备份文件进行压缩.在linux下,可以使用系统自带的命令进行压缩,但在
windows下,我不太喜欢使用window自带的命令进行压缩.在这里,我借助ant对MySQL数据库备份文件进行压缩,ant的
build.xml 文件定义如下(文件命名为:db_target.xml)
复制内容到剪贴板
代码:
<?xml version="1.0" encoding="UTF-8"?>
<project name="xxxx" basedir=".">
<property name="db-bak-dir" value="x:/db_backup"/>
<target name="db-bak">
<exec dir="${basedir}" executable="cmd.exe">
<arg line="/c db-bak.bat" />
</exec>
</target>
<target name="bak" depends="db-bak">
<tstamp prefix="source.">
<format property="TimeSign" pattern="yyyy-MM-dd HH.mm.ss" />
</tstamp>
<mkdir dir="${db-bak-dir}/${source.TimeSign}"/>
<zip destfile="${db-bak-dir}/${source.TimeSign}/db-bak.zip">
<zipfileset dir="${db-bak-dir}" includes="*.sql"/>
</zip>
<antcall target="clean"/>
</target>
<target name="clean">
<delete file="${db-bak-dir}/db_name.sql"/>
</target>
</project>
上面的ant配置文件的意思,就是说,让ant调用windows的MySQL数据库备份.bat文件并执行.
对数据库进行备份,然后,以当前日期,作为压缩文件名,对MySQL数据库备份文件进行压缩.
那既然我们是让 ant来调用了MySQL
数据库备份命令文件,就没有理由再让windows 定时任务调用 MySQL数据库备份命令文件了,所以,我们对window的定时任务做一修改,让window定时执行ant脚本,再写一个.bat文件.
内容如下:
复制内容到剪贴板
代码:
@echo
ant -f x:/db-target.xml bak
文件命名为:db-target.bat.
以上三个文件在同一文件夹下.接下来就是将文件传输到其它服务器了,由于个人喜欢ant ,所以,在这里,还是使用ant 脚本来实现文件的远程传输,在这里,需要使用linux ssh命令,所以,需要一个额外的.jar包,传输不在本文讨论之列,下次再行讨论,
在linux
下的文件传输,会很方便,给出一个小的示例.
1.压缩备份文件:
复制内容到剪贴板
代码:
tar -zcvf /db_bak/db_name.tar.gz /db_bak/db_name.sql
2.文件传输:
复制内容到剪贴板
代码:
scp /db_bak/db_name.tar.gz ip:port /dir/xxx
-----------------------------------------------------
Java调用MySQL命令备份与恢复数据库
package util.dbak;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
public class DatabaseBackup {
/** MySQL安装目录的Bin目录的绝对路径 */
private String mysqlBinPath;
/** 访问MySQL数据库的用户名 */
private String username;
/** 访问MySQL数据库的密码 */
private String password;
public String getMysqlBinPath() {
return mysqlBinPath;
}
public void setMysqlBinPath(String mysqlBinPath) {
this.mysqlBinPath = mysqlBinPath;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public DatabaseBackup() {
super();
}
public DatabaseBackup(String mysqlBinPath, String username, String password) {
super();
if (!mysqlBinPath.endsWith(File.separator)) {
mysqlBinPath = mysqlBinPath + File.separator;
}
this.mysqlBinPath = mysqlBinPath;
this.username = username;
this.password = password;
}
/**
* 备份数据库
*
* @param output 输出流
* @param dbname 要备份的数据库名
*/
public void backup(OutputStream output, String dbname) {
String command = "cmd /c " + mysqlBinPath + "mysqldump -u" + username + " -p" + password + " --set-charset=utf8 "
+ dbname;
System.out.println(command);
PrintWriter p = null;
BufferedReader reader = null;
try {
p = new PrintWriter(new OutputStreamWriter(output, "utf8"));
Process process = Runtime.getRuntime().exec(command);
InputStreamReader inputStreamReader = new InputStreamReader(process.getInputStream(), "utf8");
reader = new BufferedReader(inputStreamReader);
String line = null;
while ((line = reader.readLine()) != null) {
p.println(line);
}
p.flush();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
if (p != null) {
p.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 备份数据库,如果指定路径的文件不存在会自动生成
*
* @param dest 备份文件的路径
* @param dbname 要备份的数据库
*/
public void backup(String dest, String dbname) {
try {
OutputStream out = new FileOutputStream(dest);
backup(out, dbname);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
/**
* 恢复数据库
*
* @param input 输入流
* @param dbname 数据库名
*/
public void restore(InputStream input, String dbname) {
String command = "cmd /c " + mysqlBinPath + "mysql -u" + username + " -p" + password + " " + dbname;
try {
Process process = Runtime.getRuntime().exec(command);
OutputStream out = process.getOutputStream();
String line = null;
String outStr = null;
StringBuffer sb = new StringBuffer("");
BufferedReader br = new BufferedReader(new InputStreamReader(input, "utf8"));
while ((line = br.readLine()) != null) {
sb.append(line + "\r\n");
}
outStr = sb.toString();
OutputStreamWriter writer = new OutputStreamWriter(out, "utf8");
writer.write(outStr);
writer.flush();
out.close();
br.close();
writer.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 恢复数据库
*
* @param dest 备份文件的路径
* @param dbname 数据库名
*/
public void restore(String dest, String dbname) {
try {
InputStream input = new FileInputStream(dest);
restore(input, dbname);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
DatabaseBackup bak = new DatabaseBackup("C:/MySQL/UTF8/bin", "root", "root");
bak.restore("c:/t.sql", "ttk");
}
}
分享到:
相关推荐
MySQL数据库的自动定时备份是数据库管理中的重要环节,它确保了数据的安全性和可恢复性,尤其是在发生意外情况如系统故障、硬件损坏或人为错误时。本教程将详细讲解如何设置MySQL数据库的自动定时备份,包括步骤、所...
Mysql数据库定时备份是数据库管理中非常重要的一步操作,目的是为了防止数据丢失和保护数据的安全。通过定时备份,可以在数据库发生故障或数据丢失时快速恢复数据,减少损失。 在本文中,我们将介绍三种不同的Mysql...
mysql数据库定时备份脚本+定时自动删除,默认为删除七天以前的备份,可自行修改(节省空间) 注意看脚本内的注释说明!!!!!!!!!!!!! 定时备份,需要写周期性计划任务: #周期性计划任务(每天完备一次...
### MySQL数据库定时备份知识点 #### 一、MySQL数据库备份的重要性 在现代企业的信息化管理中,数据的安全性至关重要。定期对MySQL数据库进行备份是一项基础而重要的维护工作,它可以帮助企业防止因硬件故障、软件...
在Windows环境下,为MySQL设置定时备份是一项必要任务,可以帮助防止意外数据丢失,并便于进行系统维护和更新。下面将详细介绍如何在Windows上使用工具进行MySQL定时备份。 首先,我们需要一个合适的工具来执行这个...
以上就是关于"mysql数据库定时备份,按时间存放sql文件"的详细说明,包括如何创建SQL备份文件,设置批处理脚本,以及使用Windows计划任务自动化备份过程,以及恢复数据的方法。这种备份策略能有效地保护数据安全,...
定时备份MySQL数据库是一项必不可少的任务,确保在出现意外情况如硬件故障、软件错误或人为操作失误时,能够快速恢复到正常状态。本篇文章将详细介绍如何配置定时备份MySQL数据库,包括每日、每周和每月的备份策略。...
windows server 2008 R2上定时备份mysql数据库bat脚本,可支持备份多个数据库
本文将详细介绍如何利用shell脚本来创建MySQL的定时备份,并结合提供的"mysqlbackup.sh"脚本和"添加定时任务.txt"文件,帮助你实现这一功能。 首先,我们来看"mysqlbackup.sh"这个shell脚本。这个脚本通常包含以下...
总的来说,"mysql数据库定时备份工具"为初学者提供了一个简单易用的数据库备份解决方案,通过学习和实践,不仅可以保护珍贵的数据,也能加深对数据库管理和Linux系统知识的理解。同时,随着技能的提升,还可以进一步...
这是用windows自带的定时任务执行的。Mysql bat脚本文件。下载下来即可用 。 具体配置 请访问 https://blog.csdn.net/Z__Sheng/article/details/85230383
本文将详细解析如何使用提供的“Windows server服务器下MySql自动定时备份脚本-可以删除历史备份.zip”来实现这一目标。 该压缩包包含两个文件:`MySqlAutoBackup-1.4.bat`和`说明.txt`。`MySqlAutoBackup-1.4.bat`...
本文将详细介绍如何使用Linux shell脚本来实现MySQL的定时备份。 首先,我们需要理解Linux shell脚本的基本结构和语法。shell脚本是一种文本文件,包含了执行命令的序列,可以用来自动化日常任务。在我们的场景中,...
MySQL数据库在Linux环境下的定时备份是确保数据安全和业务连续性的重要环节。下面将详细介绍如何通过自定义的Shell脚本和Linux的定时任务(Cron)来实现这一目标。 首先,确保你的Linux服务器上已经安装了MySQL服务...
MySQL 自动定时备份数据库的方法 MySQL 是一个流行的开源关系数据库管理系统,随着数据量的增加,数据库的备份变得越来越重要。备份数据库可以保护数据的安全和完整性,避免数据丢失或损坏。MySQL 自动定时备份...
本文将详细介绍如何使用Navicat for MySQL进行数据库的定时备份以及数据恢复,这对于保护数据库免受意外损坏或数据丢失至关重要。Navicat是一款强大的数据库管理工具,支持多种数据库系统,包括MySQL。 ### 一、...
### Linux下MySQL定时备份知识点详解 #### 一、概述 在Linux环境中,为了确保数据的安全性和可用性,定期对MySQL数据库进行备份是非常重要的。本文将详细介绍如何在Linux系统下设置MySQL数据库的定时备份,包括...
在Windows环境下,MySQL数据库的管理和维护是至关重要的工作,其中包括定期备份以防止数据丢失。"Windows下MySql自动备份脚本(有备份日志,且可以删除历史备份)"的资源提供了一个解决方案,它是一个批处理脚本...