Postgres中的流复制解决方案

时间:2019-02-02 23:46:02

标签: postgresql database-replication

我正在阅读下面的文章,了解如何在Postgres DB中实现流复制。

https://www.percona.com/blog/2018/09/07/setting-up-streaming-replication-postgresql

有些事情不太清楚

1)两个数据库实例都处于活动状态还是从属实例仅仅是主副本(它与主副本通信,而不与后端通信?

2)如果数据库主节点发生故障,会发生什么,直到第二个节点恢复联机?缺省情况下是否仅通过wal senderwal receiver进程来覆盖?还是需要添加其他内容?

3)例如,如果我有两个后端节点(它们都处于活动状态),则应在后端应用程序中配置哪个DB_HOST:PORT?

1 个答案:

答案 0 :(得分:1)

  1. 如果hot_standby = on中的postgresql.conf,则客户端可以连接到备用数据库,但只能读取数据而不能修改它们。备用数据库与主数据库完全相同,就像您逐个文件复制它一样。

  2. 如果主数据库发生故障,则备用数据库将保持运行状态,但是您仍然只能读取数据,直到有人提升备用数据库。您必须了解PostgreSQL不会随群集软件一起提供,群集软件可以自动执行此操作。为此,您必须使用其他软件如Patroni。

  3. 这取决于您的软件使用的API。使用libpq(C API)或JDBC,您可以拥有一个包含两个服务器的连接字符串,并且将自动选择主要服务器,但是对于其他客户端,您可能必须使用外部负载平衡软件。