在PostgreSQL 9.4.1中切换和切回时是否为强制性参数restore_target_timeline ='latest'?

问题描述 投票:0回答:1

我已按照以下步骤进行了切换和切回。

步骤1:-断开与10.x.x.10的应用程序服务的连接,然后执行以下操作

@ Master(10.x.x.10)

pg_ctl -D /DATA_VEC/pgdata stop --mode=fast

@ DR(20.x.x.20)

将DR提升为读写模式

步骤2:-从新的主服务器启动主服务器作为灾难恢复

@ Master(10.x.x.10)创建recovery.conf

standby_mode = 'on'
primary_conninfo = 'user= password= host=20.x.x.20 port=9999
trigger_file = '/tmp/node1'
restore_command = 'cp /DATA_VEC/restore/%f "%p"'
pg_ctl -D /DATA_VEC/pgdata start

升级新的备用数据库后,旧的主数据库无法与新的主服务器同步(旧的备用数据库)来自主要DR服务器的日志。

2019-12-01 18:46:56 IST LOG:  database system was shut down in recovery at 2019-12-01 18:46:53 IST
2019-12-01 18:46:56 IST LOG:  entering standby mode
cp: cannot stat `/DATA_VEC/restore/00000002.history': No such file or directory
2019-12-01 18:46:56 IST LOG:
2019-12-01 18:46:56 IST LOG:  restored log file "00000002000000000000000C" from archive
2019-12-01 18:46:57 IST LOG:  consistent recovery state reached at 0/C000090
2019-12-01 18:46:57 IST LOG:  record with zero length at 0/C000090
2019-12-01 18:46:57 IST LOG:  database system is ready to accept read only connections
2019-12-01 18:46:57 IST LOG:  started streaming WAL from primary at 0/C000000 on timeline 2
2019-12-01 18:46:57 IST LOG:  replication terminated by primary server
2019-12-01 18:46:57 IST DETAIL:  End of WAL reached on timeline 2 at 0/C000090.
2019-12-01 18:46:57 IST LOG:  restored log file "00000002000000000000000C" from archive
2019-12-01 18:46:57 IST LOG:  record with zero length at 0/C000090
2019-12-01 18:46:57 IST LOG:  restarted WAL streaming at 0/C000000 on timeline 2
2019-12-01 18:46:57 IST LOG:  replication terminated by primary server
2019-12-01 18:46:57 IST DETAIL:  End of WAL reached on timeline 2 at 0/C000090.

@ Master(10.x.x.10)

Pg_xlog内容

-bash-4.1$ cd pg_xlog
-bash-4.1$ ll
total 65552
-rw------- 1 postgres postgres      302 Dec  1 12:52 00000002000000000000000A.00000028.backup
-rw------- 1 postgres postgres 16777216 Dec  1 13:52 00000002000000000000000B
-rw------- 1 postgres postgres 16777216 Dec  1 14:28 00000002000000000000000C
-rw------- 1 postgres postgres 16777216 Dec  1 12:52 00000002000000000000000D
-rw------- 1 postgres postgres 16777216 Dec  1 12:52 00000002000000000000000E
-rw------- 1 postgres postgres       41 Dec  1 13:57 00000002.history
-rw------- 1 postgres postgres       83 Dec  1 13:57 00000003.history
drwx------ 2 postgres postgres     4096 Dec  1 13:57 archive_status

@ in restore_command位置内容:-

-bash-4.1$ cd /DATA_VEC/restore/ -bash-4.1$ ll total 49156 -rw------- 1 postgres postgres 16777216 Dec 1 18:45 00000002000000000000000A -rw------- 1 postgres postgres 16777216 Nov 30 21:22 00000002000000000000000B -rw------- 1 postgres postgres 16777216 Dec 1 18:45 00000002000000000000000C -rw------- 1 postgres postgres 83 Dec 1 18:45 00000003.history -bash-4.1$

作为per_pg_xlog时间轴历史记录文件00000003.history到达备用数据库后仍未从新的主数据库开始流式传输。

问题:-1. recover_target_timeline='latest'文件中的强制参数recovery.conf是否是通过流从新的主数据库获取最新的时间轴ID来开始流复制的?

2。如果是,是否适用于所有PostgreSQL版本?例如从9.3到11.5

postgresql replication postgresql-9.4
1个回答
0
投票

如果要使用回切功能,则必须设置recovery_target_timeline='latest',因为任何促销都会增加时间轴。通常,针对特定情况使用固定的目标时间轴(即,您需要在脑裂,时间轴分散的场景之后恢复更改)。

要回答您的特定问题:

© www.soinside.com 2019 - 2024. All rights reserved.