Nous venons de sauvegarder un serveur primaire sur un serveur de secours avec succès. Cependant, quand nous essayons d'interroger en mode veille à chaud, nous obtenons l'erreur suivante:Les requêtes en lecture seule sur le serveur de secours automatique échouent en raison de l'acquisition de l'ID de transaction
ERROR: cannot assign TransactionIds during recovery
J'activé le mode bavard et voir l'erreur se produit à varsup.c: 72
/* safety check, we should never get this far in a HS standby */
if (RecoveryInProgress())
elog(ERROR, "cannot assign TransactionIds during recovery");
la chose étrange est , si nous utilisons le client psql et émettons plusieurs requêtes de lecture, la première échouera, mais toutes les suivantes réussiront.
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)
utilisant postgres 9.5.3
toutes les idées seraient grandement apprécié.
BTW: nous avons ajouté: hot_standby = on
à pipelinedb.conf (équivalent à postgresql.conf)
et nous avons ajouté:
primary_slot_name = 'replicator_slot'
primary_conninfo = 'user=username host=ip_address port=5432'
recovery_target_timeline = 'latest'
à recovery.conf
merci pour le conseil Paul, mais nous ne voulons pas la veille chaude pour quitter la récupération. Idéalement, il serait toujours en récupération et aider le primaire/maître à exécuter des requêtes en lecture seule. –