繁体   English   中英

Java derby数据库上的数据库备份

[英]Database backup on Java derby database

我正在使用java anad derby数据库编写客户跟踪程序。 我需要备份此数据库,并在必要时重新安装它。

如何才能做到这一点?

根据德比

离线备份

要执行数据库的脱机备份,请使用操作系统命令复制数据库目录。 必须先关闭数据库,然后才能执行脱机备份。

例如,在Windows系统上,以下操作系统命令通过将其复制到目录c:\\mybackups\\2005-06-01来备份名为sample且位于d:\\mydatabases的(封闭)数据库:

 xcopy d:\\mydatabases\\sample c:\\mybackups\\2005-06-01\\sample /s /i 

如果您没有使用Windows,请使用适当的操作系统命令替换目录和所有内容到新位置。

在线备份

在数据库运行时,使用联机备份来备份数据库。 您可以通过使用几种类型的备份过程或通过将操作系统命令与冻结和取消冻结系统过程一起使用来执行联机备份。 使用备份过程执行在线备份:

使用SYSCS_UTIL.SYSCS_BACKUP_DATABASE过程可以将数据库在线备份到指定位置。 SYSCS_UTIL.SYSCS_BACKUP_DATABASE过程采用一个字符串参数,该参数表示备份数据库的位置。 通常,您提供备份目录的完整路径。 (相对路径被解释为相对于当前目录,而不是相对于derby.system.home目录。)

例如,要为当前打开的数据库指定c:/mybackups/2005-06-01的备份位置,请使用以下语句(正斜杠在SQL命令中用作路径分隔符):

 CALL SYSCS_UTIL.SYSCS_BACKUP_DATABASE('c:/mybackups/2005-06-01') 

SYSCS_UTIL.SYSCS_BACKUP_DATABASE()过程将数据库置于可以安全复制的状态,然后将整个原始数据库目录(包括数据文件,联机事务日志文件和jar文件)复制到指定的备份目录。 不在原始数据库目录中的文件(例如derby.properties)不会被复制。

下面的示例显示如何将数据库备份到名称能够反映当前日期的目录:

 public static void backUpDatabase(Connection conn)throws SQLException { // Get today's date as a string: java.text.SimpleDateFormat todaysDate = new java.text.SimpleDateFormat("yyyy-MM-dd"); String backupdirectory = "c:/mybacksup/" + todaysDate.format((java.util.Calendar.getInstance()).getTime()); CallableStatement cs = conn.prepareCall("CALL SYSCS_UTIL.SYSCS_BACKUP_DATABASE(?)"); cs.setString(1, backupdirectory); cs.execute(); cs.close(); System.out.println("backed up database to "+backupdirectory); } 

对于在2005-06-01上备份的数据库,以前的命令将当前数据库复制到c:/mybackups/2005-06-01中具有相同名称的目录。 未提交的事务不会出现在备份的数据库中。

注意:不要将具有相同名称的不同数据库备份到同一备份目录。 如果备份目录中已经存在相同名称的数据库,则认为该数据库是较旧的版本并被覆盖。

如果在与备份过程相同的事务中有任何未记录的操作,则SYSCS_UTIL.SYSCS_BACKUP_DATABASE过程将发出错误。 如果开始备份时系统中其他事务中正在进行任何未记录的操作,则此过程将阻塞,直到这些事务完成后再执行备份。 如果未备份的操作在备份进行过程中启动,则Derby会自动将它们转换为已记录模式(在数据库中维护应用程序jar文件的操作除外)。 在备份过程中,将阻止安装,替换和删除数据库中的jar文件的过程。

如果您不希望备份在其他事务中未记录的操作完成之前阻塞,请使用SYSCS_UTIL.SYSCS_BACKUP_DATABASE_NOWAIT过程。 此过程立即在

这些链接已失效,您可以查看以下文档

在Apached中备份数据库

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM