我是服务器管理的新手,尤其是 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 实例端点。