1

作为这个问题的后续:sqlite-over-a-network-share

如果我将 SQlite DB 放在网络共享上,但不会从不同的机器同时访问它。我只将 SQLite 数据库存储在共享上,因此故障转移计算机集群可以接管一台机器停止的位置。

这种方法是否存在任何固有问题?

4

1 回答 1

2

有兴趣了解您的经历(5 年后)。根据 Eric Grange 的有用提示:

  • “SQLite 使用 POSIX 咨询锁在 Unix 上实现锁定”...“已知 POSIX 咨询锁定在许多 NFS 实现中存在错误甚至未实现”...“您最好的防御方法是不要将 SQLite 用于网络文件系统上的文件。”

  • 话虽如此,如果您的 NFS 服务器是坚如磐石的(即 NetApp),而您的客户端是坚如磐石的(即,可能不是 Linux;参见例如 http://nfsworld.blogspot.co.at/2006/10/审查-为什么-nfs-sucks-paper-from.html)。

  • NFS 上的 POSIX 建议锁定也依赖于执行:来自文件锁定 Wikipedia 文章:“在 2.6.12 之前的 Linux 上,NFS 文件上的flock 调用只能在本地执行。内核2.6.12 及更高版本使用NFS 文件实现flock 调用POSIX 字节范围锁。这些锁将对其他实现 fcntl 样式 POSIX 锁的 NFS 客户端可见,但对那些没有实现的 NFS 客户端不可见。如果有疑问,您可以使用nfstrace来确定您的操作系统正在尝试做什么。

  • 如果节点 A 开始事务,锁定表文件,然后崩溃,会发生什么?节点 B 会看到咨询锁并拒绝写入文件吗?

于 2017-03-02T11:21:14.150 回答