my opinion is my own

RDS(PostgreSQL)でpg_replication_origin_statusにアクセス出来ない(permission denied)

バージョン


rdbtest=> select version();
                                                 version                                    
---------------------------------------------------------------------------------------
 PostgreSQL 10.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5
-11), 64-bit

事象


pg_replication_origin_statusの情報をselectしようとするとpermission deniedでエラーが発生する。rds_superuserロールだとしても同様。この情報はsubscriber に反映されている変更のトランザクションログの位置(LSN)の位置とpublisher側のLSNの対応関係が記載されているので、この情報が見れないと論理レプリケーション時の運用時に困る。

rdbtest=> SELECT * FROM pg_replication_origin_status;
ERROR:  permission denied for relation pg_replication_origin_status

対応策


pg_show_replication_origin_status()にアクセスしてLSNを取得する。

rdbtest=> select * from pg_show_replication_origin_status();
 local_id | external_id | remote_lsn | local_lsn 
----------+-------------+------------+-----------
        1 | pg_43450    | 0/28D70910 | 0/0
(1 row)

参考


AWS Developer Forums: RDS Postgres Logical replication access … https://forums.aws.amazon.com/thread.jspa?threadID=301094

---

関連しているかもしれない記事


#AWS #RDS #PostgreSQL