如何退出数据库恢复模式(当前以仅阅读模式锁定)



一段时间以前设置了一个从数据库,目的是备份或复制远程数据库。但是,我再也无法使用基于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. 转储/丢弃整个数据库,以便我可以创建一个具有写入功能的新数据库。

看起来已经设置了两个数据库簇以进行复制,但是在其中一台机器上的配置更改破坏了复制(在主要的,更改的IP地址上更改了pg_hba.conf,&Hellip;(。

这是您所需解决方案的方式:

  1. 将备用备用带出恢复模式:运行

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

    作为操作系统用户postgres

  2. 在备用系统上
  3. nuking待机:使用rm -rf(或操作系统上的等效(删除备用数据目录。杀死所有PostgreSQL过程。

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

相关内容

  • 没有找到相关文章

最新更新