[英]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.