簡體   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