gpt4 book ai didi

linux - 备用 SQlite 备份解决方案

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:54:38 25 4
gpt4 key购买 nike

我正在寻找每日备份 sqlite 数据库的正确解决方案。数据库大约 5GB,有规律地增长,每秒接收新数据,并且处于 WAL 模式。该服务是 24/7 全天候服务,因此在备份期间无法停止任何操作。将数据库锁定几秒钟(几分钟)是可能的,尽管需要检查。目的不是备份最后的数据,而是避免在发生重大崩溃时丢失“太多”数据。备份至少会运行一天,如果时间不长的话可能会运行得更频繁。

  • 我尝试了 .backup 命令,但数据库的传输速度非常慢(10 分钟后只有几 MB,3 小时后仍远未完成)- 这可能是由于持续的写入事件.

  • 我尝试了 .dump 命令。这很好用,除非试图恢复数据(使用 .read)。如此大的查询(大约 10GB .sql 文件)会消耗系统上的所有 RAM 并被操作系统 (Linux) 终止。

  • 我了解了 LVM 和创建快照的功能 - 这可能是一个有趣的解决方案,但目前主机不支持 LVM。

  • 我也在考虑将备份过程集成到访问此数据库的代码中,但同样,我希望备份过程是独立的。我也不明白为什么这个解决方案会比“.backup”命令更快。

除了“添加一些 RAM”之外还有什么建议吗?

谢谢。

最佳答案

@CL:感谢您的回答。我完全跳过了备份 API 的重启。

如果它对其他人有好处:我尝试了 LVM 解决方案,它运行得非常好。简而言之:

  • 创建/装载托管数据库文件的逻辑卷的快照。
  • 使用 sqlite .backup 命令行 - 或者简单地从快照中复制文件。
  • 卸载/删除快照。
  • 对您的数据库副本/备份执行您必须执行的操作。

这里提供了一个精简的“如何使用 LVM”:http://www.howtogeek.com/howto/40702/how-to-manage-and-use-lvm-logical-volume-management-in-ubuntu/

关于linux - 备用 SQlite 备份解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27317628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com