【PostgreSQL】レプリケーションを確認する

PostgreSQLでレプリケーションであるかを確認する方法を紹介します。
レプリケーションについて
レプリケーションとは、あるDB(マスター/プライマリ)の内容を、他のサーバ(スタンバイ/セカンダリ)のDBに自動コピーして同期させる仕組みのことです。バックアップや負荷分散といった用途に用いられます。
プライマリ側のDBでINSERT・UPDATEなどのデータの更新が起こると、そのトランザクションログをスタンバイ側のDBに反映して、同じ状態を再現します。
レプリケーションの種類は、ストリーミングレプリケーションとロジカルレプリケーションの2種類があります。
ストリーミングレプリケーションはDBを完全に複製するのに対し、ロジカルレプリケーションは、テーブルだけを複製するといった複製が可能です。
レプリケーションかどうか確認する方法
PostgreSQLのサーバーが、プライマリかどうかは以下のSQLで確認することができます。
1SELECT pg_is_in_recovery();結果の真偽値でプライマリかどうか判断できます。
f(false):プライマリ(書き込みできる側)t(true):スタンバイ(読み取り専用側)
なお、スタンドアローンの場合もfalseとなります。
ストリーミングレプリケーションか確認する方法
プライマリ側で、ストリーミングレプリケーションを使っているかは以下のSQLで確認することができます。
1SELECT * FROM pg_stat_replication;ストリーミングレプリケーションが有効の場合、結果に行が出てきます。0行の場合はレプリケーション無しと判断できます。
ロジカルレプリケーションか確認する方法
プライマリ側で、ロジカルレプリケーションを使っているかは以下のSQLで確認することができます。
1SELECT * FROM pg_publication;ロジカルレプリケーションが有効の場合、結果に行が出てきます。0行の場合はレプリケーション無しと判断できます。
PostgreSQLのロジカルレプリケーションは送信側にpublicationを作り、受信側にsubscriptionを作る必要があるので、publicationの情報を確認しています。
今回はPostgreSQLでレプリケーションの確認方法を紹介しました。以上で記事を終わりにします。