首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >流复制失败,因为"WAL段已被移动“

流复制失败,因为"WAL段已被移动“
EN

Stack Overflow用户
提问于 2019-11-08 17:59:15
回答 1查看 4.3K关注 0票数 0

我试图在Postgres 11.5上实现主/从流复制。我跑了以下步骤-

论大师

代码语言:javascript
复制
select pg_start_backup('replication-setup',true);

奴隶停止postgres 11数据库并运行

代码语言:javascript
复制
rsync -aHAXxv --numeric-ids --progress -e "ssh -T -o Compression=no -x" --exclude pg_wal --exclude postgresql.pid --exclude pg_log MASTER:/var/lib/postgresql/11/main/* /var/lib/postgresql/11/main

论大师

代码语言:javascript
复制
select pg_stop_backup();

奴隶论

代码语言:javascript
复制
rsync -aHAXxv --numeric-ids --progress -e "ssh -T -o Compression=no -x"  MASTER:/var/lib/postgresql/11/main/pg_wal/* /var/lib/postgresql/11/main/pg_wal

我在从文件夹~/11/主文件夹上创建了recovery.conf文件

代码语言:javascript
复制
standby_mode = 'on'
primary_conninfo = 'user=postgres host=MASTER port=5432 sslmode=prefer sslcompression=1 krbsrvname=postgres'
primary_slot_name='my_repl_slot'

当我在奴隶上启动Postgres时,我会得到主程序和从日志上的错误-

代码语言:javascript
复制
019-11-08 09:03:51.205 CST [27633] LOG:  00000: database system was interrupted; last known up at 2019-11-08 02:53:04 CST
2019-11-08 09:03:51.205 CST [27633] LOCATION:  StartupXLOG, xlog.c:6388
2019-11-08 09:03:51.252 CST [27633] LOG:  00000: entering standby mode
2019-11-08 09:03:51.252 CST [27633] LOCATION:  StartupXLOG, xlog.c:6443
2019-11-08 09:03:51.384 CST [27634] LOG:  00000: started streaming WAL from primary at 12DB/C000000 on timeline 1
2019-11-08 09:03:51.384 CST [27634] LOCATION:  WalReceiverMain, walreceiver.c:383
2019-11-08 09:03:51.384 CST [27634] FATAL:  XX000: could not receive data from WAL stream: ERROR:  requested WAL segment 00000001000012DB0000000C has already been removed
2019-11-08 09:03:51.384 CST [27634] LOCATION:  libpqrcv_receive, libpqwalreceiver.c:772
2019-11-08 09:03:51.408 CST [27635] LOG:  00000: started streaming WAL from primary at 12DB/C000000 on timeline 1
2019-11-08 09:03:51.408 CST [27635] LOCATION:  WalReceiverMain, walreceiver.c:383

问题是,WAL - 00000001000012DB0000000C在运行pg_stop_backup()之前是可用的,并且一旦执行pg_stop_backup(),就会被归档,不再可用。因此,这并不是WAL由于WAL_KEEP_SEGMENTS低而被归档的问题。

代码语言:javascript
复制
postgres@SLAVE:~/11/main/pg_wal$ cat 00000001000012DB0000000C.00000718.backup
START WAL LOCATION: 12DB/C000718 (file 00000001000012DB0000000C)
STOP WAL LOCATION: 12DB/F4C30720 (file 00000001000012DB000000F4)
CHECKPOINT LOCATION: 12DB/C000750
BACKUP METHOD: pg_start_backup
BACKUP FROM: master
START TIME: 2019-11-07 15:47:26 CST
LABEL: replication-setup-mdurbha
START TIMELINE: 1
STOP TIME: 2019-11-08 08:48:35 CST
STOP TIMELINE: 1

我的主人有archive_command集,我有丢失的WALs可用。我将它们复制到从服务器上的还原目录中,并尝试了下面的recovery.conf,但是它仍然失败,因为主服务器报告了相同的WAL segment has already been moved错误。

知道我能怎么解决这个问题吗?过去,我在Postgres 9.6上使用rsync安装复制,没有任何问题,但是在Postgres 11上经历了这个问题。

代码语言:javascript
复制
standby_mode = 'on'
primary_conninfo = 'user=postgres host=MASTER port=5432 sslmode=prefer sslcompression=1 krbsrvname=postgres'
restore_command='cp /var/lib/postgresql/restore/%f %p'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-08 22:41:15

将一个restore_command放入recovery.conf中,可以恢复归档的WAL文件,您就没事了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58771648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档