如何将 Postgresql 数据库从只读更改为可写

如何将 Postgresql 数据库从只读更改为可写

我是服务器管理的新手,尤其是 Ubuntu Server 上的 postgresql,所以请耐心等待。

我正在尝试在两台不同的计算机上的两个数据库之间进行同步,但我不确定我做错了什么,因为无论我尝试做什么,它似乎都将服务器配置为只读模式。

例如,如果我想创建一个角色,我会得到:

ERROR: cannot execute CREATE ROLE in a read-only transaction

或者如果我想创建一个表,我会收到一条错误消息:

ERROR: cannot execute CREATE TABLE in a read-only transaction.

我不知道该怎么办,因此非常感谢有关如何解决此问题的建议。

顺便说一下,我在 Ubuntu Server 12.04 上运行 PostgreSQL 版本 9.1。

答案1

由于SELECT pg_is_in_recovery()true已连接到处于 模式的只读副本服务器hot_standby。副本配置位于 中recovery.conf

除非将其提升为主服务器,否则您无法将其设置为读/写,此时它将停止从旧主服务器获取新的更改。请参阅PostgreSQL 复制文档

第一步是检查数据目录中是否有“recovery.conf”文件。如果存在,如果您确定自己在主服务器(而非从属服务器)上,请将该文件重命名为“recover.conf.backup”。然后,重新启动 postgresql 服务器。它现在应该允许您写入新记录。

答案2

如果它是 RDS 实例集群,请检查您的端点并使用 Writer 实例端点。

相关内容