代码之家  ›  专栏  ›  技术社区  ›  Toad

通过网络共享进行故障切换的sqlite

  •  1
  • Toad  · 技术社区  · 16 年前

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

    如果我将SQlite DB放在网络共享上,但不会从不同的机器同时访问它。我只将SQLite db存储在一个共享上,这样一个故障转移计算机集群就可以接管一台机器停止的地方。

    这种方法有什么固有的问题吗?

    1 回复  |  直到 9 年前
        1
  •  2
  •   Otheus    9 年前

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

    • “SQLite使用POSIX建议锁在Unix上实现锁定”。。。“众所周知,POSIX建议锁定存在缺陷,甚至在许多NFS实现中没有实现”。。。“最好的防御措施是不要对网络文件系统上的文件使用SQLite。”

    • 话虽如此,如果您的NFS服务器坚如磐石(即NetApp),而您的客户端坚如磐石(即,可能不是Linux;请参阅示例)http://nfsworld.blogspot.co.at/2006/10/review-of-why-nfs-sucks-paper-from.html).

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

    • 如果节点A启动了一个事务,锁定了表文件,然后崩溃了,会发生什么?节点B是否会看到通知锁并拒绝写入文件?

    推荐文章