簡體   English   中英

備份嵌入式SQLite3數據庫

[英]Backing up an SQLite3 database on embed

我目前正在一個C項目中,該項目包含啟用了WAL的SQLite3數據庫。 我們有一個HTTP Web界面,您可以通過該界面獲得數據庫的在線備份。 當前,數據庫文件可通過HTTP訪問,這在許多方面都是很糟糕的。 我現在的任務是實現新的備份算法。

有一個SQLite-Online-Backup API,看起來很不錯。 在那里,您打開兩個數據庫連接,然后一個數據庫復制到另一個數據庫。 無論如何,在我的設置中,我無法確定是否有足夠的空間來復制整個數據庫,因為其中可能有很多統計信息和多媒體文件。 對我來說,最好的解決方案是打開一個直接連接到stdout的SQLite連接,以便我可以通過CGI備份數據庫。

無論如何,我沒有在SQLite3 API中找到在特殊文件(例如stdout)上打開數據庫連接的方法。 備份數據庫的最佳實踐是什么? 您如何執行SQLite3數據庫的在線備份?

提前致謝!

如果需要用於備份的特殊目標接口,則可以實現滿足您需要的自定義VFS接口。 請參閱sqlite3_open_v2()的參數,您可以在其中傳遞VFS的名稱。 (有關VFS和SQLite使用的OS接口的詳細信息,請參閱https://www.sqlite.org/c3ref/vfs.html

基本上,每個sqlite3_backup_step()調用都會寫入一些數據塊,並且您需要以某種方式將其傳輸到目標數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM