我正在阅读下面的文章,了解如何在Postgres DB中实现流复制。
https://www.percona.com/blog/2018/09/07/setting-up-streaming-replication-postgresql
有些事情不太清楚
1)两个数据库实例都处于活动状态还是从属实例仅仅是主副本(它与主副本通信,而不与后端通信?
2)如果数据库主节点发生故障,会发生什么,直到第二个节点恢复联机?缺省情况下是否仅通过wal sender
和wal receiver
进程来覆盖?还是需要添加其他内容?
3)例如,如果我有两个后端节点(它们都处于活动状态),则应在后端应用程序中配置哪个DB_HOST:PORT?
答案 0 :(得分:1)
如果hot_standby = on
中的postgresql.conf
,则客户端可以连接到备用数据库,但只能读取数据而不能修改它们。备用数据库与主数据库完全相同,就像您逐个文件复制它一样。
如果主数据库发生故障,则备用数据库将保持运行状态,但是您仍然只能读取数据,直到有人提升备用数据库。您必须了解PostgreSQL不会不随群集软件一起提供,群集软件可以自动执行此操作。为此,您必须使用其他软件如Patroni。
这取决于您的软件使用的API。使用libpq(C API)或JDBC,您可以拥有一个包含两个服务器的连接字符串,并且将自动选择主要服务器,但是对于其他客户端,您可能必须使用外部负载平衡软件。