PostrgreSQL DBLink

外部データベース連携を下記で以前テストしましたが、今回はDBLinkを試してみました。

Foreign Data Wrapper / PostgreSQL

参考)https://oha-yo.com/postgresql/dblink/

Oracleでは何度かつかったことがあったのですが、Postgresではありませんでした。最近必要に感じるケースに遭遇したため実際に動かすことにしました。

環境は2ノードともLinuxでパッケージマネージャでインストールしたPostgresを使います。
192.168.1.124(n0c):アクセス元
192.168.1.168(n0d)
特別なライブラリを外部からもってくるのではなく、postgresql-contribに含まれるため、これがインストールされていえば、下記コマンドで使用できるようになります。(アクセス元のみ)

postgres=# create extension dblink;
CREATE EXTENSION

アクセス元

アクセス先

/etc/postgresql/14/main/pg_hba.conf

host all all 192.168.1.124/32 scram-sha-256

/etc/postgresql/14/main/postgresql.conf

listen_addresses = ‘*’ # what IP address(es) to listen on;

3つの方法でテーブル内容を取得
1)select1文にアクセス情報を記述して取得
2)db_coneect()でセッションを確立して取得
3)Viewを利用した取得(セッション利用)

SQL

dblink_connectのセッションが確立されていないときにselectするとエラー。