小编wit*_*enz的帖子

如何退出数据库恢复模式(当前锁定为只读模式)

前一段时间建立了一个从数据库,用于备份或复制远程数据库。但是,我无法再使用基于 Delphi 的 ETL 写入数据库(该 ETL 适用于另一个数据库对,但迄今为止从未用于该特定数据库对)。复制数据库是由已离开公司的其他人设置的。我有理由确信这已被设置为复制数据库,但是后来离开的员工告诉我,由于不相关的原因,复制从未起作用。使用 ETL,我们可以(使用 SQL 查询)从一个数据库读取数据,然后写回到复制数据库,或者应该能够,因为它当前是只读的。

我努力了:

  1. 维护如VACUUM
  2. 尝试删除表和整个数据库
  3. 从主数据库恢复完整备份

这些都不起作用,而且我被告知数据库是只读的。

我已经查看postgresql.conf并看到它hot_standby被选中,所以我认为(但不是 100% 确定)数据库处于某种复制模式(我从未接触过 Postgres 支持的复制,所以我不知道) 。

我已检查权限pg_hba.conf并看到其中有一些用于复制的凭据。我不确定这是否会激活数据库的“复制模式”,或者只是意味着这些凭据仅用于复制。

我已经查看了数月的日志文件(自从我们的 IT 部门在大约 5 个月前升级了整个网络以来,这一直不起作用)。我看到下面的日志文件内容,几个月来一遍又一遍地重复,没有任何其他内容。请注意,文件中列出了下面显示的 IP 地址pg_hba.conf,因此凭据有效。

正如我通过使用发现的那样,数据库处于恢复模式:

select pg_is_in_recovery();
Run Code Online (Sandbox Code Playgroud)

这向我解释了为什么它是只读的,但为什么我不能恢复数据库,或者只是简单地转储整个数据库并重新开始(它是备份,因此丢失/恢复它不是问题)?

我很想尝试修改该recovery.conf文件(存在),但我读到/相信一旦启动恢复(在我的情况下已经启动),修改文件将不起作用。

我正在使用 Postgres 的旧版本:9.2.9

此处的任何帮助将不胜感激,因为我已经在这方面扎实工作了一天多了。

日志文件条目(示例):

FATAL:  could not connect to the primary server:
FATAL:  no pg_hba.conf entry for replication connection from host "192.168.20.2", user "postgres", SSL off

FATAL:  could not connect to the primary server: …
Run Code Online (Sandbox Code Playgroud)

postgresql recovery

1
推荐指数
1
解决办法
3万
查看次数

标签 统计

postgresql ×1

recovery ×1