【发布时间】:2015-03-04 23:40:08
【问题描述】:
firebirdSQL 是否可以运行 2 个服务器共享 1 个数据库文件 (FDB)/存储库?
【问题讨论】:
-
但是为什么呢?马贝还有其他解决方案吗?
标签: firebird firebird2.5
firebirdSQL 是否可以运行 2 个服务器共享 1 个数据库文件 (FDB)/存储库?
【问题讨论】:
标签: firebird firebird2.5
没有。服务器需要独占访问数据库文件。在 Classic 架构版本的情况下,多个 fb_inet_server 进程访问相同的文件,但通过 fb_lock_mgr 进程管理锁。
除非明确禁用此保护,否则不允许使用 NFS 或 SMB/CIFS 共享上的数据库。 firebird.conf 强烈警告不要这样做,除非你真的知道自己在做什么。
【讨论】:
如果你的意思是如果不同主机上的两台服务器可以共享同一个数据库,那么不是。
Firebird 要么需要对数据库的独占访问(SuperServer),要么通过锁定文件(SuperClassic 和 ClassicServer)协调同一主机上的不同进程对数据库的访问。
在这两种情况下,服务器都需要一定的锁定和写入可见性保证,而大多数网络文件系统不提供这些保证(或者不提供 Firebird 需要的锁定语义)。
如果您真的非常想这样做,您可以通过更改 firebird.conf 中的设置,但这会导致数据库损坏或其他一致性问题。因此,这不是您应该想做的事情。
【讨论】:
每个 SQL 服务器都不允许这样的配置。如果您想拆分负载,也许您需要查看多层架构。使用这种架构,您可以将 SQL 查询负载分摊到多台计算机上。
【讨论】: