同步和异步同时运行PostgreSQL流复制

nuypyhwy  于 2023-02-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(149)

我使用PostgreSQL 14和ubuntu作为我的操作系统。

  • 我已经在同步模式下完成了数据库复制
  • 现在我想添加另一个服务器,并且primary和new_standby节点之间的关系将是异步
  • 另一个问题是,如何为不同的节点设置application_name?我的两个备用服务器都有相同的application_name=14/main

有人能帮我解决这些问题吗?

zynd9foi

zynd9foi1#

是的,您可以同时运行它。
您的主节点中应具有以下配置:

listen_addresses = '*'
port = 5432
wal_level = hot_standby
max_wal_senders = 16
wal_keep_segments = 32
synchronous_commit = on
synchronous_standby_names = 'pgsql_0_node_0'

重新启动节点以接受更改:

$ systemctl restart postgresql-14

创建复制角色:

$ CREATE ROLE replication_user WITH LOGIN PASSWORD 'PASSWORD' REPLICATION;

并在备用节点中进行配置:
两者:

wal_level = hot_standby
hot_standby = on

同步:

standby_mode = 'on'
promote_trigger_file='/tmp/failover_5432.trigger'
recovery_target_timeline=latest
primary_conninfo='application_name=pgsql_0_node_0 host=PRIMARY_NODE port=5432 user=replication_user password=PASSWORD'

用正确的值替换PRIMARY_NODE、用户和口令。

异步:

promote_trigger_file='/tmp/failover_5432.trigger'
recovery_target_timeline=latest
primary_conninfo='application_name=pgsql_0_node_1 host=PRIMARY_NODE port=5432 user=replication_user password=PASSWORD'

用正确的值替换PRIMARY_NODE、用户和口令。

重新启动节点以接受更改:

$ systemctl restart postgresql-14

然后,您可以在主节点中运行此命令以查看复制节点:

$ SELECT pid,usename,application_name,state,sync_state FROM pg_stat_replication;

  pid  |     usename      | application_name |   state   | sync_state
-------+------------------+------------------+-----------+------------
 10951 | replication_user | pgsql_0_node_1   | streaming | async
 10952 | replication_user | pgsql_0_node_0   | streaming | sync
(2 rows)

相关问题