如何让SQL Server自动定时备份数据库并按日期命名

如何让SQL Server自动定时备份数据库并按日期命名,第1张

使用SQL Server代理,新建一个作业,备份数据库的核心SQL语句如下:

--新建名为AutoBackUpDataBase作业,新建名为BackUp的步骤,定时每周六(可以自己设置定时备份周期)备份数据库Test,备份文件存储在位置F:\DB_Backup\

--备份文件的格式为: yyyy-MM-ddbak,如2017-01-10bak

DECLARE @str varchar(100)

SET @str='F:\DB_Backup\'+convert(varchar,getdate(),23)+'bak'

BACKUP DATABASE Test TO DISK=@str

将MySql中的数据库导出到文件中 备份

import javaio;

import javalang;

public class BeiFen {

public static void main(String[] args) {

// 数据库导出

String user = "root"; // 数据库帐号

String password = "root"; // 登陆密码

String database = "test"; // 需要备份的数据库名

String filepath = "e:\\testsql"; // 备份的路径地址

String stmt1 = "mysqldump " + database + " -u " + user + " -p"

+ password + " --result-file=" + filepath;

/

String mysql="mysqldump test -u root -proot

--result-file=d:\\testsql";

/

try {

RuntimegetRuntime()exec(stmt1);

Systemoutprintln("数据已导出到文件" + filepath + "中");

}

catch (IOException e) {

eprintStackTrace();

}

}

}

将数据从磁盘上的文本文件还原到MySql中的数据库

import javaio;

import javalang;

/

还原MySql数据库

/

public class Recover {

public static void main(String[] args) {

String filepath = "d:\\testsql"; // 备份的路径地址

//新建数据库test

String stmt1 = "mysqladmin -u root -proot create test";

String stmt2 = "mysql -u root -proot test < " + filepath;

String[] cmd = { "cmd", "/c", stmt2 };

try {

RuntimegetRuntime()exec(stmt1);

RuntimegetRuntime()exec(cmd);

Systemoutprintln("数据已从 " + filepath + " 导入到数据库中");

} catch (IOException e) {

eprintStackTrace();

}

}

}

两个思路:

1、在备份机共享一个目录出来,在生产机建立到备份机共享目录的网络映射驱动器,之后在生产机执行数据库备份时,直接将备份卷质指定为网络驱动器。

2、备份数据库到生产机的某个磁盘,然后用定时任务传送到备份机。备份机可以安装一个ftp server软件,直接用ftp的方式传送,这样也比较安全、可靠。

两个思路:

1、在备份机共享一个目录出来,在生产机建立到备份机共享目录的网络映射驱动器,之后在生产机执行数据库备份时,直接将备份卷质指定为网络驱动器。

2、备份数据库到生产机的某个磁盘,然后用定时任务传送到备份机。备份机可以安装一个ftp server软件,直接用ftp的方式传送,这样也比较安全、可靠。

下载navicat for mysql,然后按下列图文教程进行:

首先打开需要进行备份的数据库,使之被高亮选中。点击“Schedule”菜单,点击后将出现如下图所示的功能界面:

点击“New Batch Job”,点击后将出现如下图所示的功能界面:

“General”选项卡中显示了指定数据库连接下各个数据库实例中可供使用的JOB,鼠标左键双击可用的JOB,即可使之成为当前即将要创建的Schedule中的JOB,如下图所示:

点击“Save”,点击后会d出一个名为"Profile Name"的对话框,在此对话框中可以给Schedule一个自定义的名称,名称键入完毕后,点击“OK”。具体 *** 作如下图所示:

点击“Set Task Schedule”按钮,以对计划进行更详细地配置,相关 *** 作所下图所示;如果在点击“Set Task Schedule”按钮的时候提示没有打开Task Scheduler服务,请到 *** 作系统“服务”管理界面打开指定服务即可。

计划设置完毕后,可以点击“Start”按钮,以测试Schedule的运行结果是否正确。

也可以使用BAT批处理来进行自动备份,但是批处理的原理是首先停止MYSQL,然后进行数据库文件复制。但这违反了不停止MYSQL服务的前提。所以这里不细表。

企业管理器-》进入你使用的数据库界面-》管理-》数据库维护计划-》新建维护计划-》选中你的数据库-》下一步-》进行到指定数据库备份页面时,选择执行的时间-》下一步,选对保存的位置和方式。继续下一步直到完成。

注意

SQL

server

agent

服务必须运行,才会自动执行维护计划。你可以把

启动os时自动启动服务勾上。

首先利用数据库自带的命令行工具将数据库备份下来,例如对MySQL将databasename数据库备份到D:\datasql(具体查阅数据库说明书)

mysqldump databasename > "D:\datasql"

然后将该文件以日期参量重名名。如果指定保留N天的数据可能有一定困难,不过既然要求7天,不妨以星期作为区分。

假设文件名具有格式“data_日期sql”,则更名语句为(建议先创建后改名,对于很大的数据库可能要备份很长时间并超过0点)

ren "datasql" "data_%date%sql"

若系统时间格式为“2009-04-05 星期日”,则产生文件“data_2009-04-05 星期日txt”。

获取星期几的语句:%date:~11,3%

其中11表示从第11个字符开始(从0开始计算),总共截取3个字符。由此可获得字符串“星期日”。重名名前,删除以data_开头,包含“星期日”的文件

del "data_%date:~11,3%sql"

这样就把上星期的那个文件删除了。

注意:如果系统日期格式与上面的不一致,数字需重新计算,特别是若日期中含有“/”、“:”等字符会导致创建文件失败,此时年月日星期均需手动提取,例如对“04/05/2009 Sun”,应使用“%DATE:~6,4%%DATE:~0,2%%DATE:~3,2%%DATE:~11,3%”得到“20090405Sun”。查看日期格式可使用“echo %date%”。

另外,如果某项(时间格式、文件名、路径等)包含空格则必须使用引号。

脚本源代码

mysqldump databasename > "D:\datasql"

del "D:\data_%date:~11,3%sql"

ren "D:\datasql" "data_%date%sql"

编为一个bat文件,添加计划任务,每天定时执行即可。

以上就是关于如何让SQL Server自动定时备份数据库并按日期命名全部的内容,包括:如何让SQL Server自动定时备份数据库并按日期命名、如何用java代码实现定时备份数据库表记录到、一台电脑的数据库每天晚上自动备份到另一台电脑上,怎么做等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9453948.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存