【问题标题】:How to exit out of database recovery mode (currently locked in read-only mode)如何退出数据库恢复模式(目前锁定为只读模式)
【发布时间】:2019-09-24 16:51:42
【问题描述】:

为了备份或复制远程数据库,前段时间建立了一个从数据库。但是,我不能再使用基于 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();

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

我很想尝试修改 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: server closed the connection unexpectedly
        This probably means the server terminated abnormally before or while processing the request.

有几个选项对我有用:

  1. 将数据库从只读复制数据库转换为标准读/写数据库或
  2. 转储/删除整个数据库,以便我可以创建一个具有写入功能的新数据库。

【问题讨论】:

    标签: postgresql recovery


    【解决方案1】:

    看起来两个数据库集群已设置为进行复制,但其中一台机器上的配置更改破坏了复制(在主服务器上更改了pg_hba.conf,更改了 IP 地址……)。

    这是您想要的解决方案的方法:

    1. 使待机退出恢复模式:运行

      /path/to/pg_ctl promote -D /path/to/data/directory
      

      作为操作系统用户postgres处于待机状态。

    2. 删除备用数据库:使用rm -rf(或操作系统上的等效项)删除备用数据库上的数据目录。杀死所有 PostgreSQL 进程。

      然后使用initdb在同一位置创建一个新的数据库集群。

    【讨论】:

    • 选项 1 对我有用,非常感谢!我欠你一杯啤酒。顺便说一句,我使用查询“显示数据目录”来定位我的数据库的特定数据文件夹。一个方便的工具。
    猜你喜欢
    • 2020-08-24
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    相关资源
    最近更新 更多