我已经在PostgreSQL 12.1上设置了流式复制
主站和从站配置如下,WAL文件在主站上累积。
但是,有些问题,因为我收到投诉说WAL文件在pg_restore
后丢失MASTER
主人
postgres@srvm:~$ 2019-12-20 16:35:07.910 CET [1334] replicator@[unknown] ERROR: requested WAL segment 000000010000000100000076 has already been removed
2019-12-20 16:35:12.920 CET [1338] replicator@[unknown] ERROR: requested WAL segment 000000010000000100000076 has already been removed
2019-12-20 16:35:17.925 CET [1340] replicator@[unknown] ERROR: requested WAL segment 000000010000000100000076 has already been removed
2019-12-20 16:35:22.932 CET [1362] replicator@[unknown] ERROR: requested WAL segment 000000010000000100000076 has already been removed
2019-12-20 16:35:27.935 CET [1364] replicator@[unknown] ERROR: requested WAL segment 000000010000000100000076 has already been removed
2019-12-20 16:35:32.942 CET [1365] replicator@[unknown] ERROR: requested WAL segment 000000010000000100000076 has already been removed
2019-12-20 16:35:37.948 CET [1366] replicator@[unknown] ERROR: requested WAL segment 000000010000000100000076 has already been removed
2019-12-20 16:35:42.954 CET [1367] replicator@[unknown] ERROR: requested WAL segment 000000010000000100000076 has already been removed
奴隶
postgres@srvs:~$ 2019-12-20 16:36:53.027 CET [21978] LOG: started streaming WAL from primary at 1/76000000 on timeline 1
2019-12-20 16:36:53.027 CET [21978] FATAL: could not receive data from WAL stream: ERROR: requested WAL segment 000000010000000100000076 has already been removed
2019-12-20 16:36:58.029 CET [21979] LOG: started streaming WAL from primary at 1/76000000 on timeline 1
2019-12-20 16:36:58.029 CET [21979] FATAL: could not receive data from WAL stream: ERROR: requested WAL segment 000000010000000100000076 has already been removed
2019-12-20 16:37:03.040 CET [21980] LOG: started streaming WAL from primary at 1/76000000 on timeline 1
2019-12-20 16:37:03.040 CET [21980] FATAL: could not receive data from WAL stream: ERROR: requested WAL segment 000000010000000100000076 has already been removed
2019-12-20 16:37:08.042 CET [21981] LOG: started streaming WAL from primary at 1/76000000 on timeline 1
2019-12-20 16:37:08.042 CET [21981] FATAL: could not receive data from WAL stream: ERROR: requested WAL segment 000000010000000100000076 has already been removed
然后运行pg_basebackup
并启动从站。
从站拥有备份时的所有数据,但没有来自WAL文件的新数据,以及上述错误。
max_wal_senders = 10
wal_keep_segments = 120
我配置错误了什么?是否需要为流式复制启用archive_mode = on
?
以下是我对流式复制的配置:
主配置
listen_addresses = 'localhost,[IP_ADDRESS_OF_PRIMARY_ON_LAN]' # what IP address(es) to listen on;
wal_level = 'replica'
archive_mode = on
archive_command = 'cd .'
max_wal_senders = 5
primary_conninfo = 'host=[REPLICA_IP] port=5432 user=replication password=[REPLICATION PASSWORD]'
hot_standby = on
max_wal_senders = 10
wal_keep_segments = 48
从站配置:
listen_addresses = 'localhost,[IP_ADDRESS_OF_REPLIACA_ON_LAN]' # what IP address(es) to listen on;
max_connections = 100 # Ensure that this value is the same as the primary's
wal_level = 'replica'
archive_mode = on
archive_command = 'cd .'
max_wal_senders = 5
primary_conninfo = 'host=[PRIMARY_IP] port=5432 user=replication password=[REPLICATION PASSWORD]'
hot_standby = on
max_wal_senders = 10
wal_keep_segments = 48
我使用以下资源设置服务器:https://www.gab.lc/articles/postgresql-12-replication/