2017-09-23 5 views
4

ホットスタンバイサーバーにプライマリを正常にバックアップしました。私たちは、ホットスタンバイへの照会しようとすると、しかし、我々は次のエラーを取得する:ホットスタンバイサーバーでの読み取り専用のクエリは、トランザクションIDの取得により失敗します

ERROR: cannot assign TransactionIds during recovery 

私は冗長モードを有効にし、エラーがvarsup.cで発生参照:72

/* safety check, we should never get this far in a HS standby */ 
if (RecoveryInProgress()) 
    elog(ERROR, "cannot assign TransactionIds during recovery"); 

奇妙なことがありますpsqlクライアントを使用して複数の読取り問合せを発行すると、最初の問合せは失敗しますが、後続の問合せはすべて成功します。

pipeline=# SELECT pg_is_in_recovery(); 
ERROR: cannot assign TransactionIds during recovery 
pipeline=# SELECT pg_is_in_recovery(); 
pg_is_in_recovery 
------------------- 
t 
(1 row) 

使ってpostgresの9.5.3

は、任意のアイデアは非常にそれをいただければ幸いです。ところで

: 我々が追加しました: pipelinedb.confへhot_standby = on(postgresql.confのに相当)

を、我々が追加しました:

primary_slot_name = 'replicator_slot' 
primary_conninfo = 'user=username host=ip_address port=5432' 
recovery_target_timeline = 'latest' 

答えて

1

我々は現在、あなたがそう思慮深く私たちのために書いたthe issueに探しています。私はここで更新を投稿しますが、それは長くなるべきではありません。

0

使用

をrecovery.confのために
pg_ctl promote 

終了するには通常モード(リード/ライト)を再開します。 postgresql documentationから

In promote mode, the standby server that is running in the specified 
data directory is commanded to exit recovery and begin read-write 
operations. 
+0

チップポールのおかげでありがたいですが、ホットスタンバイで復帰を終了したくありません。理想的には、それは常に回復にあり、プライマリ/マスターが読み取り専用クエリを実行するのを助けます。 –

関連する問題