如果我有 3 个数据库
- Db1:仅用于写入、发布者
- Db2:仅用于读取,Db1 的订阅者
- Db3:仅用于读取,Db1 的订阅者
只是为了澄清“仅用于读取”意味着我的应用程序不会尝试修改该数据库。反过来适用于“仅用于写入”。我不是在谈论数据库本身的功能。也许我会使用权限来实现这一点,但无论如何。
通过浏览逻辑复制的官方文档,我无法找到一些问题的答案:
在对 Db1 进行新写入的情况下,Db2 和 Db3 会在同步更改时都锁定,还是允许在同步的同时进行读取?
如果订阅服务器在发布对 Db1 的新更改时正在执行读取,那么可用的更改是否会在它们到达订阅者后立即执行的下一个操作,无论有多少读取已经在等待执行(如果有的话)?
我担心的是负载平衡集群(仅用于读取)PostgreSQL 服务器的一致性,这些服务器是 Db1 的副本。它们都应该与 Db1 同步,在与 Db1 发布的新更改同步之前不允许对它们进行任何新的读取。如果我不能通过逻辑复制来做到这一点,那么有什么替代方案(如果有的话)?