Postgres 中的流复制解决方案
Streaming replication solution in Postgres
我正在阅读下面的文章如何在 Postgres DB 中实现流复制。
https://www.percona.com/blog/2018/09/07/setting-up-streaming-replication-postgresql
有些事情不是很清楚
1) 两个数据库实例是否都处于活动状态,或者从实例只是主实例的克隆(o 它与主实例通信,但不与后端通信?
2) 如果数据库主节点出现故障,在第二个节点恢复在线之前会发生什么情况?默认情况下,这是否仅通过 wal sender
和 wal receiver
进程或其他需要添加的东西来覆盖?
3) 如果我有两个后端节点(它们都处于活动状态),应该在后端应用程序中配置哪个 DB_HOST:PORT?
如果hot_standby = on
in postgresql.conf
,clients可以连接到standby,但是只能读取数据,不能修改。备用数据库是主数据库的完全相同的物理副本,就好像您是逐个文件复制它一样。
如果主数据库发生故障,备用数据库将保持运行状态 运行,但您仍然只能读取数据,直到有人 提升 备用数据库。您必须了解 PostgreSQL 不 附带允许自动发生这种情况的集群软件。为此,您必须使用其他一些软件,例如 Patroni。
这取决于您的软件使用的 API。使用 libpq(C API)或 JDBC,您可以拥有一个包含两个服务器的连接字符串,并将 select 自动作为主服务器,但对于其他客户端,您可能必须使用外部负载平衡软件。
我正在阅读下面的文章如何在 Postgres DB 中实现流复制。
https://www.percona.com/blog/2018/09/07/setting-up-streaming-replication-postgresql
有些事情不是很清楚
1) 两个数据库实例是否都处于活动状态,或者从实例只是主实例的克隆(o 它与主实例通信,但不与后端通信?
2) 如果数据库主节点出现故障,在第二个节点恢复在线之前会发生什么情况?默认情况下,这是否仅通过 wal sender
和 wal receiver
进程或其他需要添加的东西来覆盖?
3) 如果我有两个后端节点(它们都处于活动状态),应该在后端应用程序中配置哪个 DB_HOST:PORT?
如果
hot_standby = on
inpostgresql.conf
,clients可以连接到standby,但是只能读取数据,不能修改。备用数据库是主数据库的完全相同的物理副本,就好像您是逐个文件复制它一样。如果主数据库发生故障,备用数据库将保持运行状态 运行,但您仍然只能读取数据,直到有人 提升 备用数据库。您必须了解 PostgreSQL 不 附带允许自动发生这种情况的集群软件。为此,您必须使用其他一些软件,例如 Patroni。
这取决于您的软件使用的 API。使用 libpq(C API)或 JDBC,您可以拥有一个包含两个服务器的连接字符串,并将 select 自动作为主服务器,但对于其他客户端,您可能必须使用外部负载平衡软件。